PyTorch 2.0 编译器提升模型训练速度

PyTorch 2.0 发布总结

主要观点

PyTorch 基金会最近发布了 PyTorch 2.0 版本,这是一个 100% 向后兼容的更新。该版本的主要贡献是引入了一个用于深度学习模型的编译函数,显著加速了训练过程。PyTorch 2.0 还包括了对 Transformer 模型(如大语言模型和扩散模型)的性能改进,以及针对 Apple silicon 的加速支持。此外,PyTorch 的领域库(如 TorchAudio、TorchVision 和 TorchText)也更新了新的测试版功能。

关键信息

  1. 编译功能:PyTorch 2.0 引入了一个编译函数,能够将深度学习模型的 Python 代码转换为计算图块,从而加速训练过程。在 163 个开源 AI 项目上的内部基准测试显示,训练速度平均提高了 43%。
  2. Transformer 模型性能优化:通过新的“缩放点积注意力”(SDPA)实现,PyTorch 2.0 优化了基于 Transformer 的模型(如大语言模型和扩散模型)的性能。
  3. Apple silicon 加速:通过改进的 Metal Performance Shaders (MPS),PyTorch 2.0 在 Apple silicon 上的训练速度得到提升,目前 MPS 支持 300 种操作。
  4. 领域库更新:TorchAudio、TorchVision 和 TorchText 等 PyTorch 领域库也进行了更新,引入了新的测试版功能。
  5. 开发贡献:PyTorch 2.0 包含了超过 4,500 次提交,来自 428 位开发者。

重要细节

  1. 编译功能的底层组件

    • TorchDynamo:将深度学习模型的 Python 代码重写为计算图块。
    • AOTAutograd:在反向传播步骤中执行“提前”自动微分。
    • PrimTorch:将超过 2,000 个 PyTorch 操作符规范化为约 250 个基本操作符。
    • TorchInductor:为加速器生成快速的硬件特定后端代码。
  2. 性能测试:PyTorch 团队在 163 个开源深度学习项目上进行了基准测试,这些项目涵盖了计算机视觉、自然语言处理和强化学习等多种任务。在不修改代码的情况下,仅通过一行编译函数调用,93% 的项目成功运行,并且在 NVIDIA A100 GPU 上训练速度提高了 43%。
  3. 社区反馈:在 Hacker News 的讨论中,有用户指出,PyTorch 的成功在于其生产力,而非增量性能提升。用户认为,一旦系统变得流行,社区会迅速缩小性能差距,并且对开源项目的投资和专业打磨至关重要。
  4. 资源获取:PyTorch 2.0 的代码和发布说明可以在 GitHub 上获取。

总结

PyTorch 2.0 通过引入编译功能和多项性能优化,显著提升了深度学习模型的训练速度和效率。该版本不仅保持了与之前版本的兼容性,还在多个领域库中引入了新功能,进一步增强了其适用性和灵活性。社区对此次更新反应积极,认为 PyTorch 的成功在于其高效的生产力和社区的持续贡献。

阅读 38
0 条评论