最近,PyTorch 基金会发布了PyTorch 2.5版本,其中包含对英特尔 GPU 的支持。该版本还包含多项性能增强,如FlexAttentionAPI、TorchInductor CPU 后端优化,以及可缩短编译时间的区域编译功能。总体而言,该版本包含了自 PyTorch 2.4 以来的 4095 次提交。
最近举行的PyTorch大会演示了 PyTorch 对英特尔 GPU 的支持。英特尔工程师 Eikan Wang 和 Min Jean Cho 介绍了 PyTorch 为支持该硬件而做出的改变,包括泛化 PyTorch 运行时和设备层,使其更容易与新的硬件后端集成。此外,对于 torch.compile 和 torch.distributed,该版本实现了特定于英特尔 GPU 的后端。英特尔人工智能框架工程副总裁Kismat Singh表示:
我们在 PyTorch 2.5 中添加了对英特尔客户端 GPU 的支持。基本上,这意味着你可以在使用最新英特尔处理器的英特尔笔记本电脑和台式机上运行 PyTorch。我们认为,这将在今年为 PyTorch 用户解锁 4000 万台笔记本电脑和台式机,预计到明年年底这一数值将达到 1 亿左右。
该版本新增了 FlexAttention API,它使 PyTorch 用户更容易在其模型中尝试不同的注意力机制。通常情况下,想要尝试新的注意力机制变体,研究人员需要直接在 PyTorch 算子中手动编码。然而,这可能会导致 “运行时缓慢和 CUDA OOM”。有了该 API,用户只需要编写 “几行惯用的 PyTorch 代码”就可以完成这项工作。然后,编译器会将这些代码转换为最优内核,“不会产生任何额外的内存开销,而性能可与手写内核相媲美”。
有多项性能改进尚处于 Beta 测试阶段。新增的后端 Fused Flash Attention 在英伟达 H100 GPU 上 “比 FlashAttentionV2 快 75%”。torch.compile 的区域编译功能不再需要编译完整的模型;取而代之的是编译重复模块 nn.Modules,如 Transformer 层。这可以减少编译延迟,同时只会造成百分之个位数的性能损失。TorchInductor CPU 后端也进行了多项优化。
Flight Recorder是一个新的调试工具,用于解决作业卡住的问题。分布式训练过程中可能会出现作业卡住的情况,其根本原因可能有很多,包括数据饥饿、网络问题或软件 Bug。Flight Recorder 使用内存循环缓冲区来捕获诊断信息。当检测到作业卡住时,它会将诊断信息转储到文件中;然后,可以使用启发式脚本对数据进行分析,找出根本原因。
在 Reddit 上关于该版本的讨论中,许多用户很高兴看到PyTorch对英特尔GPU的支持,称其为 “游戏规则的改变者”。另一位用户写道:
很高兴看到 torch.compile 有了改进,尤其是重用重复模块以加快编译速度的功能。对于拥有大量类似组件的大型模型来说,这可能会改变游戏的规则。FlexAttention API 看起来也很有前景——只需几行代码就能实现各种注意力机制,并获得几乎可以媲美手写代码的性能,这实在是太棒了。感谢 PyTorch 团队和贡献者们又发布了一个出色的版本!
感兴趣的读者可以从 GitHub 上获取 PyTorch 2.5 的代码和发布说明。
原文链接:
评论