PyGraph: Robust Compiler Support for CUDA Graphs in PyTorch

2025年03月25日
  • 简介
    CUDA Graphs 是 NVIDIA GPU 最近引入的一项硬件功能,旨在通过将一系列 GPU 任务(内核)捕获并作为有向无环图(DAG)启动来减少 CPU 的启动开销。然而,由于图形的静态结构,目前部署 CUDA Graphs 面临多个挑战。此外,它还会因数据拷贝而产生性能开销。实际上,我们展示了一个反直觉的结果——在许多情况下,部署 CUDA Graphs 会损害性能。 我们提出了 PyGraph,这是一种全新的方法,可以自动在 PyTorch2 中充分利用 CUDA Graphs 的能力。基于三个关键观察结果,PyGraph 实现了三项创新优化:它扩展了 CUDA Graphs 的适用范围,减少了 GPU 内核参数拷贝的开销,并根据成本效益分析选择性地部署 CUDA Graphs。PyGraph 与 PyTorch2 的编译工具链无缝集成,无需手动修改代码即可高效使用 CUDA Graphs。我们在各种机器学习基准测试中评估了 PyGraph,结果表明其性能相比 PyTorch2 有显著提升。
  • 图表
  • 解决问题
    论文试图解决CUDA Graphs在实际部署中面临的问题,例如静态结构限制和数据复制开销导致的性能下降。这并非全新问题,但论文关注的是如何在深度学习框架(如PyTorch)中更高效地利用CUDA Graphs以提升性能。
  • 关键思路
    论文提出PyGraph,通过三个关键优化自动利用CUDA Graphs:1)扩展CUDA Graphs的应用范围;2)减少GPU内核参数复制开销;3)基于成本-收益分析选择性部署CUDA Graphs。这种方法与当前手动调整或受限使用的策略相比,显著降低了开发者的复杂度,并提升了性能。
  • 其它亮点
    实验设计涵盖了多种机器学习基准测试,展示了PyGraph相较于PyTorch2的显著性能改进。此外,PyGraph无缝集成到PyTorch2的编译工具链中,无需用户修改代码。目前尚不清楚是否开源,但其设计理念为未来研究提供了方向,例如动态图优化和跨框架适配。值得深入研究的方向包括进一步降低运行时开销以及探索异构计算环境下的应用。
  • 相关研究
    近期相关研究包括:1)NVIDIA官方对CUDA Graphs的性能优化尝试;2)其他深度学习框架(如TensorFlow/XLA)对类似技术的支持;3)关于静态与动态图执行模式的权衡分析。一些相关论文标题可能为《Optimizing CUDA Graphs for Deep Learning Workloads》、《Dynamic vs Static Execution in Modern DL Frameworks》等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论