2024年11月PyTorch 2.0稳定版发布:性能进一步提升

发布时间:

  ⑴PyTorch .稳定版已经正式发布了,和第一代的版本相比有了非常大的改进,对API的torch.pile进行了更好的优化,而且在进行代码编辑的时候,PyTorch .稳定版也拥有更加快速的生成速度,让你体验到即时生成的快感。程序整体的性能也有非常大的提升。一起来看看关于PyTorch .稳定版的详细介绍吧。

  ⑵新版本更新之处包括稳定版的 Aelerated Transformers(以前称为 Better Transformers;Beta 版包括作为 PyTorch . 主要 API 的 torch.pile、作为 torch.nn.functional 一部分的 scaled_dot_product_attention 函数、MPS 后端、torch.func 模块中的 functorch API;以及其他跨越各种推理、性能和训练优化功能的 GPU 和 CPU 的 Beta / Prototype 改进。

  ⑶关于 torch.pile 的全面介绍和技术概况请见 . 入门页面。

  ⑷除了 PyTorch .,研发团队还发布了 PyTorch 域库的一系列 Beta 更新,包括 in-tree 的库和 TorchAudio、TorchVision、TorchText 等独立库。此外,TorchX 转向社区支持模式。

  ⑸torch.pile 是 PyTorch . 的主要 API,它能包装并返回编译后的模型。这个是一个完全附加(和可选的功能,因此 PyTorch . 根据定义是 % 向后兼容的。

  ⑹作为 torch.pile 的基础技术,TorchInductor 与 Nvidia / AMD GPU 将依赖于 OpenAI Triton 深度学习编译器来生成性能代码并隐藏低级硬件细节。OpenAI triton 生成的内核则实现了与手写内核和专用 cuda 库 (如 cublas 相当的性能。

  ⑺Aelerated Transformers 引入了对训练和推理的高性能支持,使用自定义内核架构实现缩放点积注意力 (SPDA。API 与 torch.pile 集成,模型开发人员也可以通过调用新的 scaled_dot_product_attention 运算符直接使用缩放点积注意力内核。

  ⑻Metal Performance Shaders (MPS 后端能在 Mac 平台上提供 GPU 加速的 PyTorch 训练,并增加了对前 个最常用运算符的支持,覆盖 多个运算符。

  ⑼Amazon AWS 优化了 AWS Graviton 上的 PyTorch CPU 推理。与之前的版本相比,PyTorch . 提高了 Graviton 的推理性能,包括针对 Res- 和 BERT 的改进。

  ⑽其他一些跨 TensorParallel、DTensor、D parallel、TorchDynamo、AOTAutograd、PrimTorch 和 TorchInductor 的新 prototype 功能和方法。

  ⑾要查看公开的 .、. 和 . 功能完整列表,请点击此处。

  ⑿PyTorch . 版本包括 PyTorch Transformer API 新的高性能实现,以前称为「Better Transformer API」,现在更名为 「Aelerated PyTorch Transformers」。

  ⒀研发团队表示他们希望整个行业都能负担得起训练和部署 SOTA Transformer 模型的成本。新版本引入了对训练和推理的高性能支持,使用自定义内核架构实现缩放点积注意力 (SPDA。

  ⒁与「快速路径(fastpath」架构类似,自定义内核完全集成到 PyTorch Transformer API 中 —— 因此,使用 Transformer 和 MultiHeadAttention API 将使用户能够:

  ⒂明显地看到显著的速度提升;

  ⒃支持更多用例,包括使用交叉注意力模型、Transformer 解码器,并且可以用于训练模型;

  ⒄继续对固定和可变的序列长度 Transformer 编码器和自注意力用例使用 fastpath 推理。

  ⒅为了充分利用不同的硬件模型和 Transformer 用例,PyTorch . 支持多个 SDPA 自定义内核,自定义内核选择逻辑是为给定模型和硬件类型选择最高性能的内核。除了现有的 Transformer API 之外,模型开发人员还可以通过调用新的 scaled_dot_product_attention 运算来直接使用缩放点积注意力内核。

  ⒆要使用您的模型,同时受益于 pt 编译的额外加速 (用于推断或训练,请使用 model = torch.pile (model 对模型进行预处理。

  ⒇我们通过使用自定义内核和 torch.pile 的组合,使用 Aelerated PyTorch transformer 实现了训练 transformer 模型的大幅加速,特别是大语言模型。

  ⒈将缩放点积注意力与自定义内核和 torch.pile 结合使用可为训练大型语言模型(上图以 nanoGPT 为例提供显著加速。

  ⒉从官方数据可以看到,PyTorch . 的编译效率比 . 实现了大幅提高。

  ⒊这个数据来自 PyTorch 基金会在 Nvidia A GPU 上使用 PyTorch . 对 个开源模型进行的基准测试,其中包括图像分类、目标检测、图像生成等任务,以及各种 NLP 任务。

  ⒋这些 Benchmark 分为三类:TIMM、TorchBench、HuggingFace Tranformers。

  ⒌据 PyTorch 基金会称,新编译器在使用 Float 精度模式时运行速度提高了 %,在使用自动混合精度(AMP模式时运行速度提高了 %。在这 个模型中,torch.pile 可以在 % 模型上正常运行。

  ⒍值得一提的是,官方在桌面级 GPU(如 NVIDIA 上测量到的加速能力低于服务器级 GPU(如 A。到目前为止,PyTorch . 默认后端 TorchInductor 已经支持 CPU 和 NVIDIA Volta 和 Ampere GP,暂不支持其他 GPU、XPU 或旧的 NVIDIA GPU。