当前位置: 首页 > news >正文

【译】在 Mac 上加速 PyTorch 训练

写在前面

  1. 为什么突然深度介入大模型领域了

因为最近在评估大模型用于行业应用,通过 OpenCompass 排行榜了解到了很多大模型,像文心一言是自己深度试用过的,趁着这次评估,也体验或者通过其他团队的介绍了解了通义千问、清华智谱、书生·浦语。

  1. 为什么翻译这篇文章

从清华智普开源的 ChatGLM3-6B 模型看到说苹果电脑本地(苹果芯片或者带了 AMD 独立显卡的)运行大模型有 MPS 在后面,不用关心显存,所以准备安装了环境,自己来深度体验一下ChatGLM3-6B的微调,这里要感谢 ChatGLM3-6B 的官方文档,写的很详细。

Mac开发者无需关注GPU的限制。对于搭载了 Apple Silicon 或者 AMD GPU 的 Mac,可以使用 MPS 后端来在 GPU 上运行 ChatGLM3-6B。需要参考 Apple 的 官方说明 安装 PyTorch-Nightly(正确的版本号应该是2.x.x.dev2023xxxx,而不是 2.x.x)。

原文地址:Accelerated PyTorch training on Mac

以下是译文

一、Metal 加速

PyTorch 使用新的 Metal Performance Shaders (MPS) 后端为 GPU 训练加速。MPS 后端扩展了 PyTorch 框架,提供了在 Mac 上设置和运行操作的脚本和功能。MPS 框架通过针对每个 Metal GPU 系列的独特特性进行微调的内核来优化计算性能。新的 MPS 设备将机器学习计算图形和基元映射到 MPS Graph 框架和 MPS 提供的调整内核上。

二、要求

  • 配备 Apple silicon 或 AMD GPU 的 Mac 电脑
  • macOS 12.3 或更高版本
  • Python 3.7 或更高版本
  • Xcode 命令行工具:xcode-select --install

三、开始

您可以使用 Anaconda 或 pip。请注意,使用 Apple 芯片的 Mac 和使用 Intel x86 的 Mac 的环境设置会有所不同。
使用安装页面上的 PyTorch 安装选择器,为 MPS 设备加速选择 Preview (Nightly)。MPS 后端支持是 PyTorch 1.12 正式版的一部分。PyTorch 的预览版(夜间版)将为您的设备提供最新的 MPS 支持。

  1. 设置

Anaconda

Apple silicon

curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
sh Miniconda3-latest-MacOSX-arm64.sh

x86

curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
sh Miniconda3-latest-MacOSX-x86_64.sh

pip
你可以使用 macOS 预装的 pip3。或者,你也可以从 Python 网站或 Homebrew 软件包管理器中安装。

  1. 安装

Anaconda

conda install pytorch torchvision torchaudio -c pytorch-nightly

pip

pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu

从源代码构建
构建支持 MPS 的 PyTorch 需要 Xcode 13.3.1 或更高版本。您可以从 Mac App Store 下载最新的公开 Xcode 版本,或从 Mac App Store 下载最新的测试版,或从 Apple Developer 网站下载最新的测试版。USE_MPS 环境变量控制 PyTorch 的构建,并包含 MPS 支持。
要构建 PyTorch,请遵循 PyTorch 网站上提供的说明。

  1. 验证

您可以使用简单的 Python 脚本验证 MPS 支持:

import torch
if torch.backends.mps.is_available():mps_device = torch.device("mps")x = torch.ones(1, device=mps_device)print (x)
else:print ("MPS device not found.")

输出结果应显示

tensor([1.], device='mps:0')

四、反馈意见

MPS 后端处于测试阶段,我们正在积极解决问题和修复错误。要报告问题,请使用 GitHub 问题跟踪器,标签为 “module: mps”。

五、Resources

  • PyTorch installation page
  • PyTorch documentation on MPS backend
  • Add a new PyTorch operation to MPS backend
  • PyTorch performance profiling using MPS profiler
http://www.lryc.cn/news/293319.html

相关文章:

  • 如何在Windows部署GoLand并通过SSH远程连接Linux服务器
  • Netty源码三:NioEventLoop创建与run方法
  • 【讲座分享】| 复旦大学张奇教授——《自然语言发表论文如何打怪升级?NLP顶会论文发表》
  • 面试八股文(3)
  • Kubernetes WebHook 入门 -- 入门案例: apiserver 接入 github
  • 办公软件巨头CCED、WPS面临新考验,新款办公软件异军突起
  • unity角色触摸转向
  • 世界顶级汽车品牌源代码遭泄露 详解源代码凭据安全解决方案
  • Mysql-备份与恢复
  • 基于STM32的UART/USART数据传输的错误检测和纠错机制研究
  • 「优选算法刷题」:计算布尔二叉树的值
  • A系统数据表同步到B系统数据表
  • Qt实现类似ToDesk顶层窗口 不规则按钮
  • 发布4-运行JRT程序
  • 利用VPN设备漏洞入侵!新型勒索软件CACTUS攻击手法分析
  • 第7章 SpringBoot安全管理
  • 【QT+QGIS跨平台编译】之二十二:【FontConfig+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • echarts中绘制3D三维地球
  • go grpc高级用法
  • Redis实现登录的优化
  • ROS方向第二次汇报(5)
  • C# 浅克隆与深克隆
  • Shell 正则表达式及综合案例及文本处理工具
  • React | Center 组件
  • 头歌C++之函数强化练习题
  • 淘宝扭蛋机小程序:开启你的惊喜之旅
  • Jmeter 基于Docker 实现分布式测试
  • Vite与Webpack打包内存溢出问题优雅处理方式
  • sqlalchemy——@listens_for
  • MySQL进阶之锁(全局锁以及备份报错解决)