Skip to content

在 Mac 上加速 PyTorch 训练

随着 PyTorch v1.12 的发布,开发人员和研究人员可以利用 Apple 芯片的 GPU 进行显著更快的模型训练。 这使得在 Mac 上本地进行机器学习工作流程(如原型设计和微调)成为可能。 Apple 的 Metal Performance Shaders (MPS) 作为 PyTorch 的后端,使这一功能得以实现,并且可以通过新的 "mps" 设备使用。 这将把计算图和原语映射到 MPS Graph 框架和 MPS 提供的优化内核上。 更多详细信息请参阅官方文档 在 Mac 上介绍加速 PyTorch 训练MPS 后端

使用 Apple 芯片进行训练和推理的好处

  1. 使用户能够在本地训练更大的网络或更大的批量
  2. 由于统一内存架构,减少了数据检索延迟并为 GPU 提供对整个内存存储的直接访问,从而提高端到端性能
  3. 减少与基于云的开发或需要额外本地 GPU 相关的成本

先决条件:要安装支持 mps 的 torch, 请参考这篇优秀的 Medium 文章 M1 Macs 上的 PyTorch 支持 GPU 加速

如何开箱即用

在启用了 MPS 的 Apple 芯片 GPU 的 MacOs 机器上,默认启用此功能。 要禁用它,可以在 accelerate launch 命令中传递 --cpu 标志,或在回答 accelerate config 问卷时选择相应的选项。

你可以在启用了 MPS 的 Apple 芯片机器上直接运行以下脚本来测试:

bash
accelerate launch /examples/cv_example.py --data_dir images

需要注意的几个问题

  1. 我们强烈建议在你的 Mac OS 机器上安装 PyTorch >= 1.13(撰写本文时的夜间版本)。 它对基于 Transformer 的模型的正确性和性能进行了重大修复和改进。 请参阅 https://github.com/pytorch/pytorch/issues/82707 以获取更多详细信息。
  2. 分布式设置 glooncclmps 设备不兼容。 这意味着目前只能使用单个 mps 设备类型的 GPU。

最后,请记住,Accelerate 仅集成了 MPS 后端,因此如果你在使用 MPS 后端时遇到任何问题或有疑问,请在 PyTorch GitHub 上提交问题。