PyTorch 1.0 中文文档:torch.utils.bottleneck

本文详细介绍了torch.utils.bottleneck工具的使用方法,该工具用于调试PyTorch脚本中的性能瓶颈,通过分析Python和PyTorch自动梯度在脚本运行中的表现,帮助开发者优化代码效率。文章还提供了运行命令示例,并提醒了在分析CUDA代码时可能遇到的计时问题。
部署运行你感兴趣的模型镜像

译者: belonHan

torch.utils.bottleneck是 调试瓶颈bottleneck时首先用到的工具.它总结了python分析工具与PyTorch自动梯度分析工具在脚本运行中情况.

在命令行运行如下命令

python -m torch.utils.bottleneck /path/to/source/script.py [args]

其中 [args]script.py脚本的参数(任意个数).运行python -m torch.utils.bottleneck -h命令获取更多帮助说明.

警告

请确保脚本在分析时能够在有限时间内退出.

警告

当运行CUDA代码时,由于CUDA内核的异步特性, cProfile的输出 和cpu模式的autograd分析工具可能无法显示正确的计时: 报告的CPU时间 是用于启动内核的时间,不包括在GPU上执行的时间。 在常规cpu模式分析器下,同步操作是非常昂贵的。在这种无法准确计时的情况下,可以使用cuda模式的autograd分析工具。

注意

选择查看哪个分析工具的输出结果(CPU模式还是CUDA模式) ,首先应确定脚本是不是CPU密集型CPU-bound(“CPU总时间远大于CUDA总时间”)。如果是cpu密集型,选择查看cpu模式的结果。相反,如果大部分时间都运行在GPU上,再查看CUDA分析结果中相应的CUDA操作。

当然,实际情况取决于您的模型,可能会更复杂,不属于上面两种极端情况。除了分析结果之外,可以尝试使用nvprof命令查看torch.autograd.profiler.emit_nvtx()的结果.然而需要注意NVTX的开销是非常高的,时间线经常会有严重的偏差。

警告

如果您在分析CUDA代码, bottleneck运行的第一个分析工具 (cProfile),它的时间中会包含CUDA的启动(CUDA缓存分配)时间。当然,如果CUDA启动时间远小于代码的中瓶颈,这就被可以忽略。

更多更复杂关于分析工具的使用方法(比如多GPU),请点击https://docs.python.org/3/library/profile.html 或者 torch.autograd.profiler.profile().

阅读全文/改进本文

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值