SuperAPI AI 工具集

perf-torch-cuda-graphs

编程与开发

查看项目

更新于 10-16 09:47

技能介绍

用途:该技能面向 PyTorch 训练与推理场景,用 CUDA Graphs 先捕获一次 GPU 操作序列,再以极低 CPU 开销重放,从而降低内核启动开销、提升 GPU 利用率。适用于内核启动延迟高、小内核多、CPU 受限的训练/推理循环。

主要能力:提供 API 选择指南——快速试验用 torch.compile(mode="reduce-overhead");需 autograd 的训练用 torch.cuda.make_graphed_callables();需 FP8 或流水线并行用 Transformer Engine 的 make_graphed_callables;Megatron-LM 可按层自动使用 MCore CudaGraphManager,或做全迭代捕获的 FullCudaGraphWrapper;需要完全手动控制则用 torch.cuda.graph()。另含用 Nsight Systems 判断收益、以及图兼容性原则:捕获区内仅 GPU 操作、无 CPU-GPU 同步(如 .item())、操作与形状必须静态。

使用方式:文档给出各工作流步骤,例如用 nsys profile --cuda-graph-trace=graph python train.py 做 profiling;Megatron 通过 --enable-cuda-graph 等 CLI 参数启用;手动模式需预分配静态输入、在侧流预热后在 torch.cuda.graph(g) 上下文中捕获并用 g.replay() 重放。

适用场景与限制:要求 PyTorch >= 1.10、CUDA >= 11.0、NVIDIA GPU;FP8/PP 需 Transformer Engine >= 2.2,Megatron-LM core >= 0.14.0。make_graphed_callables 不支持高阶梯度、捕获期模块钩子,且捕获后模块结构冻结;全迭代捕获需 --te-rng-tracker 并关闭 NaN 检查。若 GPU 利用率已超 95%,收益有限。该资料未提供收费与价格信息。