机器之心报道 PyTorch1。12正式发布,还没有更新的小伙伴可以更新了。 距离PyTorch1。11推出没几个月,PyTorch1。12就来了!此版本由1。11版本以来的3124多次commits组成,由433位贡献者完成。1。12版本进行了重大改进,并修复了很多Bug。 随着新版本的发布,大家讨论最多的可能就是PyTorch1。12支持苹果M1芯片。 其实早在今年5月,PyTorch官方就已经宣布正式支持在M1版本的Mac上进行GPU加速的PyTorch机器学习模型训练。此前,Mac上的PyTorch训练仅能利用CPU,但随着PyTorch1。12版本的发布,开发和研究人员可以利用苹果GPU大幅度加快模型训练。 在Mac上引入加速PyTorch训练 PyTorchGPU训练加速是使用苹果MetalPerformanceShaders(MPS)作为后端来实现的。MPS后端扩展了PyTorch框架,提供了在Mac上设置和运行操作的脚本和功能。MPS使用针对每个MetalGPU系列的独特特性进行微调的内核能力来优化计算性能。新设备将机器学习计算图和原语映射到MPSGraph框架和MPS提供的调整内核上。 每台搭载苹果自研芯片的Mac都有着统一的内存架构,让GPU可以直接访问完整的内存存储。PyTorch官方表示,这使得Mac成为机器学习的绝佳平台,让用户能够在本地训练更大的网络或批大小。这降低了与基于云算力的开发相关的成本或对额外的本地GPU算力需求。统一内存架构还减少了数据检索延迟,提高了端到端性能。 可以看到,与CPU基线相比,GPU加速实现了成倍的训练性能提升: 有了GPU的加持,训练和评估速度超过CPU 上图是苹果于2022年4月使用配备AppleM1Ultra(20核CPU、64核GPU)128GB内存,2TBSSD的MacStudio系统进行测试的结果。测试模型为ResNet50(batchsize128)、HuggingFaceBERT(batchsize64)和VGG16(batchsize64)。性能测试是使用特定的计算机系统进行的,反映了MacStudio的大致性能。 PyTorch1。12其他新特性 前端API:TorchArrow PyTorch官方已经发布了一个新的Beta版本供用户试用:TorchArrow。这是一个机器学习预处理库,可进行批量数据处理。它具有高性能,兼具Pandas风格,还具有易于使用的API,以加快用户预处理工作流程和开发。 (Beta)PyTorch中的Complex32和ComplexConvolutions 目前,PyTorch原生支持复数、复数autograd、复数模块和大量的复数运算(线性代数和快速傅里叶变换)。在包括torchaudio和ESPNet在内的许多库中,都已经使用了复数,并且PyTorch1。12通过复数卷积和实验性complex32数据类型进一步扩展了复数功能,该数据类型支持半精度FFT操作。由于CUDA11。3包中存在bug,如果用户想要使用复数,官方建议使用CUDA11。6包。 (Beta)Forwardmode自动微分 ForwardmodeAD允许在前向传递中计算方向导数(或等效地雅可比向量积)。PyTorch1。12显着提高了forwardmodeAD的覆盖范围。 BetterTransformer PyTorch现在支持多个CPU和GPUfastpath实现(BetterTransformer),也就是Transformer编码器模块,包括TransformerEncoder、TransformerEncoderLayer和MultiHeadAttention(MHA)的实现。在新的版本中,BetterTransformer在许多常见场景中速度快2倍,这还要取决于模型和输入特征。新版本API支持与先前的PyTorchTransformerAPI兼容,如果现有模型满足fastpath执行要求,它们将加速现有模型,以及读取使用先前版本PyTorch训练的模型。 此外,新版本还有一些更新: 模块:模块计算的一个新beta特性是功能性API。这个新的functionalcallAPI让用户可以完全控制模块计算中使用的参数; TorchData:DataPipe改进了与DataLoader的兼容性。PyTorch现在支持基于AWSSDK的DataPipes。DataLoader2已被引入作为管理DataPipes与其他API和后端之间交互的一种方式; nvFuser:nvFuser是新的、更快的默认fuser,用于编译到CUDA设备; 矩阵乘法精度:默认情况下,float32数据类型上的矩阵乘法现在将在全精度模式下工作,这种模式速度较慢,但会产生更一致的结果; Bfloat16:为不太精确的数据类型提供了更快的计算时间,因此在1。12中对Bfloat16数据类型进行了新的改进; FSDPAPI:作为原型在1。11版中发布,FSDPAPI在1。12版的发布中达到了测试版,并添加了一些改进。 https:pytorch。orgblogpytorch1。12released