PyTorch2.0现已发布:编译器性能大幅提升,100%向后兼容
感谢IT之家网友 降魔杵、Broadwell 的线索投递!
除了 PyTorch2.0,研发团队还发布了 PyTorch 域库的一系列 Beta 更新,包括 in-tree 的库和 TorchAudio、TorchVision、TorchText 等独立库。此外,TorchX 转向社区支持模式。
概括:
-
Metal Performance Shaders 后端能在 Mac 平台上提供 GPU 加速的 PyTorch 训练,并增加了对前 60 个最常用运算符的支持,覆盖 300 多个运算符。
-
AmazonAWS 优化了 AWS Graviton3 上的 PyTorch CPU 推理。与之前的版本相比,PyTorch 2.0 提高了 Graviton 的推理性能,包括针对 ResNet-50 和 BERT 的改进。
-
其他一些跨 TensorParallel、DTensor、2D parallel、TorchDynamo、AOTAutograd、PrimTorch 和 TorchInductor 的新 prototype 功能和方法。
要查看公开的 2.0、1.13 和 1.12 功能完整列表,请点击此处。
稳定功能
PyTorch 2.0 版本包括 PyTorch Transformer API 新的高性能实现,以前称为「Better Transformer API」,现在更名为 「Accelerated PyTorch 2 Transformers」。
研发团队表示他们希望整个行业都能负担得起训练和部署 SOTA Transformer 模型的成本。新版本引入了对训练和推理的高性能支持,使用自定义内核架构实现缩放点积注意力 。
与「快速路径」架构类似,自定义内核完全集成到 PyTorch Transformer API 中 —— 因此,使用 Transformer 和 MultiHeadAttention API 将使用户能够:
-
明显地看到显著的速度提升;
-
支持更多用例,包括使用交叉注意力模型、Transformer 解码器,并且可以用于训练模型;
-
继续对固定和可变的序列长度 Transformer 编码器和自注意力用例使用 fastpath 推理。
为了充分利用不同的硬件模型和 Transformer 用例,PyTorch 2.0 支持多个 SDPA 自定义内核,自定义内核选择逻辑是为给定模型和硬件类型选择最高性能的内核。除了现有的 Transformer API 之外,模型开发人员还可以通过调用新的 scaled_dot_product_attention 运算来直接使用缩放点积注意力内核。
从官方数据可以看到,PyTorch2.0 的编译效率比 1.0 实现了大幅提高。
这个数据来自 PyTorch 基金会在 Nvidia A100 GPU 上使用 PyTorch 2.0 对 163 个开源模型进行的基准测试,其中包括图像分类、目标检测、图像生成等任务,以及各种 NLP 任务。
这些 Benchmark 分为三类:TIMM、TorchBench、HuggingFace Tranformers。
值得一提的是,官方在桌面级 GPU上测量到的加速能力低于服务器级 GPU(如 A100)。到目前为止,PyTorch 2.0 默认后端 TorchInductor 已经支持 CPU 和 NVIDIA Volta 和 Ampere GP,暂不支持其他 GPU、XPU 或旧的 NVIDIA GPU。
声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多企业信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。投资有风险,需谨慎。
猜你喜欢