深度学习函数库PyTorch 2.0正式发布,带来高性能Transformer API与模型编译器

PyTorch基金会如去年底所公开的资讯,现在正式发布PyTorch 2.0,增加了一个主要版本号,代表着功能有着巨大变化,这个版本的重要更新包括加入稳定版Accelerated Transformers,以及新的编译器torch.compile Beta测试版,并且改进PyTorch在GPU和CPU上的推理和训练性能。

开发团队在PyTorch 2.0增加新的PyTorch Transformer API,这个全新的Accelerated Transformers高性能实例版本,让开发者能够以更低的成本训练和部署先进Transformer模型。Accelerated Transformers的前身称作Better Transformer,借由使用自定义的核心架构,在训练和推理中使用SPDA(Scaled Dot Product Attention)自注意力方法,以获得更好的性能。

过去Better Transformer应用Fastpath方法,Fastpath是深度神经网络的剪裁策略,通过剪去不必要的连接和神经元,减少模型复杂度,以达到压缩神经网络大小与提高推理速度的目的,而SPDA则是自注意力机制的注意力计算方法,SPDA会计算串行中每个元素和其他元素之间的注意力分配权重,减少权重低的运算来降少整体运算量,而且因为计算方法的优势,SPDA不只高效计算精度也更高。

这项改进让PyTorch 2.0开发者可以明显看到运算性能提升,也能够支持诸如使用Cross-Attention的模型、Transformer Decoders等更多种用例。针对不同的模型和Transformer使用案例,PyTorch 2.0支持不同的SDPA自定义核心,使得不同模型和硬件都能应用高性能核心。

PyTorch 2.0的另一个更新重头戏便是torch.compile,这是PyTorch 2.0的主要API,能够打包用户的模型并且回传经过编译的模型。torch.compile完全向后兼容,底层采用TorchDynamo、AOTAutograd、PrimTorch和TorchInductor四大重要技术,在163个开源模型中,torch.compile能够成功执行其中93%,在float32资料类型下,torch.compile可使模型执行速度提升20%,而且在自动混合精度技术(AMP),这种组合不同精度的资料类型提高运算效率的方法,torch.compile还可让模型速度提高36%。

整体来说,torch.compile是一种高性能编译器,不只可正常执行大多数的开源模型,还可以明显提升模型在不同精度下的执行速度。

另外,Apple高性能图形运算函数库Metal Performance Shaders(MPS)后端也增加PyTorch在Mac平台的支持,新加入60个常用操作,总支持操作数增加至300个。AWS搭载自家芯片Graviton3的C7g执行实例,也优化了PyTorch的CPU推理,与之前的版本相比,PyTorch 2.0在Graviton的推理性能更好,包括Resnet50和Bert模型都受益。