Hugging Face · Aritra Roy Gosthipaty · Sayak Paul · Sergio Paniego · Rémi Ouazan Reboul · Pedro Cuenca
Profiling in PyTorch (Part 1): A Beginner's Guide to torch.profiler
学会用 torch.profiler 采集并解读 PyTorch 程序的性能剖析结果,能读 profiler 表格区分 CPU 与 GPU 耗时,判断优化方向。
Face
- 难度
- 入门
- 形式
- 实践教程
- 语言
- en
- 规模
- 1 个课节
- 内容费用
- 免费
- 动手
- 需要动手环境
使用限制
阅读文章本身无需账号,也不需要 GPU;运行示例脚本需自备 PyTorch 环境,原文建议在带 GPU 的机器上运行,或通过需要 Hugging Face 账号的 Spaces Dev Mode / Jobs 获取 GPU,均属可选实践。
- 练习与作业
- GPU:原文建议在带 GPU 的机器上运行示例脚本,仅用于复现 trace 与 GPU 车道分析
- 补充内容
- Hugging Face 账号:仅在用 Spaces Dev Mode 或 Jobs 获取 GPU 时需要如需在 Hugging Face 上使用付费算力运行脚本
- 内容提示
- 付费内容:全文免费阅读,但运行文中示例脚本需自备 PyTorch 环境;原文建议在带 GPU 的机器上运行,或通过 Hugging Face Spaces Dev Mode / Jobs 获取 GPU,可能产生算力费用。内容时效:原文注明文中的 trace 由 PyTorch 2.13 生成,使用其他版本时部分 trace 细节(如 CompiledFxGraph)可能不同或缺失。
学完你能
- 用 torch.profiler.profile 上下文管理器采集 CPU 与 CUDA 活动
- 用 record_function 给自定义函数打标签,便于在 trace 中定位
- 导出并阅读 profiler 表格,区分 Self 与 total 时间、看懂 # of Calls 列
- 读懂 profiler trace 中 CPU 车道、GPU 车道及两者之间的空隙
- 解释一次 Python 调用到 CUDA kernel 的完整事件链
- 识别 overhead-bound 这类典型瓶颈,并说明加大矩阵规模对耗时构成的影响
适合你吗
适合
适合有基础 PyTorch 使用经验、想弄清训练或推理为什么慢、希望学会读 profiler 表格与 trace 的开发者。原文说明除基础 PyTorch 外没有前置要求,并以“打开 trace、追问为什么”的问题驱动方式讲解。
暂不适合
不适合完全没有 PyTorch 使用经验的读者;只想学模型算法本身、不关心性能分析的人收获有限。
需要先会
原文写明“No prerequisites apart from basic PyTorch”,即除基础 PyTorch 外没有前置要求;原文把这个系列定位为轻松读物。
课程特点
- 内容侧重
- 按内容目录判断
- 练习与项目
- 用文章提供的 01_matmul_add.py 脚本,先在 64 尺寸下采集结果并读表格最后两行的 Self CPU/CUDA 总时间,再按原文换成 4096 尺寸对比。节选中 torch.compile 与 Trace reading cheatsheet 等内容只出现标题,未提供正文,需以原文后续内容为准。
- 学习时长
- 1 个课节原站未给出统一学习时长;实际用时取决于已有基础。
- 内容费用
- 免费节选可直接读到正文、示例代码与图表,未出现付费墙或登录拦截;站点会员与定价入口属于平台导航,不影响本资源。
内容覆盖
- The matrix multiplication and addition operation
- 64x64 traces:Why does the ProfilerStep#2 take so long? / Why is there an offset of ~2.5 ms between the CPU and GPU lanes?
- The chain of events
- Why does matmul have an extra CUDA runtime call?
- Why is cudaDeviceSynchronize so big (~1.78 ms)?
- 4096x4096 traces:Why does the same kernel take more time compared to others?(节选仅列标题)
- Let's see some torch.compile at work(节选仅列标题)
- Did we fuse the matmul and add kernels into one?(节选仅列标题)
- torch.compile's runtime architecture(节选仅列标题)
- Do the CUDA launches go down by half?(节选仅列标题)
- CPU overhead went up, not down(节选仅列标题)
- Trace reading cheatsheet:Profiler table / CPU lane / GPU lane / Dispatch chain / torch.compile(节选仅列标题)
- Conclusion(节选仅列标题)
来源与使用须知
- 原始资源
- Hugging Face
- 收录时间
- 本站首次收录 2026-10-20
- 指南参考
- 课程主页
版权与转载
- 课程材料未标明许可:仅供个人学习,转载、修改或商用前请先联系原作者。
- 本站只提供原始链接和学习指南,不转载、不镜像课程材料;引用时请注明原作者与出处。