目录
背景
最近学习AI大模型,由于电脑是MAC M1的环境,在学习过程中Pytorch环境必不可少,特此在此环境中整理下安装Pytorch过程。
注意:
Mac M1芯片为了追求高性能和节能,在底层设计上使用的是一种叫做arm架构的精简指令集,不同于Intel等常用CPU芯片采用的x86架构完整指令集。PyTorch的GPU训练加速适配Mac M1时使用苹果Metal Performance Shaders(MPS)作为后端来实现的。
环境
官方要求说明:
环境 | 版本 | 说明 |
macOS Version | macOS 10.15 (Catalina) or above. | 注意:如果要使用GPU,则系统需要升级到macOS13.0以上 |
Python | Python 3.9 - 3.12 | 通过Anaconda、Homebrew进行包管理 |
package 管理 | PyTorch | 安装PyTorch包,可以通过 pip 和Anaconda进行管理; 注意:如果要用GPU建议Python环境通过Anaconda进行管理,方便版本适配。 |
系统:MAC M1 版本:mosOS Monterey 12.7.6
软件:Python3.11.11、Pytorch2.3.1(探索出来可适配GPU使用)
安装Pytorch
前置条件
成功在MAC 中已经安装了Python,具体安装和使用方法参考如下文档,此处不再累赘说明了
通过pip进行安装
在官网页面选择环境
根据官网生成的命令执行如下:
pip3 install torch torchvision torchaudio
执行结果如下:
验证是否安装成功
执行如下代码:
import torch
from torch import nn
# 打印PyTorch版本
# 检查PyTorch版本
print(torch.__version__)
# 创建一个随机张量
x = torch.rand(5, 3)
print(x)
执行结果表示成功:
上图说明安装的Pytorch版本为2.5.1。
GPU加速环境
要在 Mac M1的GPU 上运行 PyTorch 代码,使用命令 torch.device("mps")
来指定。这类似于 Nvidia GPU 上的torch.device("cuda")
命令。
测试代码如下:
import torch
from torch import nn
# 打印PyTorch版本
# 检查PyTorch版本
print(torch.__version__)
print(torch.backends.mps.is_available())
print(torch.backends.mps.is_built())
# 创建一个随机张量
device = torch.device('mps')# 指定使用MPS设备
#num_devices = torch.mps.device_count()
#print("Number of MPS devices:",num_devices)
N = 100000000
cpu_a = torch.rand([1, N])
cpu_b = torch.rand([N, 1])
print(N,cpu_a.device,cpu_b.device)
gpu_a = torch.rand([1, N],device=device)
gpu_b = torch.rand([N, 1],device='mps')
print(N,gpu_a.device,gpu_b.device)
def cpu_run():
c = torch.mm(cpu_a, cpu_b)
return c
def gpu_run():
c = torch.mm(gpu_a, gpu_b)
return c
import timeit
cpu_time = timeit.timeit(cpu_run, number=2)# 计时CPU版本
gpu_time = timeit.timeit(gpu_run, number=2)# 计时GPU版本
print("run time1:", cpu_time,gpu_time)
cpu_time = timeit.timeit(cpu_run, number=2)
gpu_time = timeit.timeit(gpu_run, number=2)
print("run time2:", cpu_time,gpu_time)
执行结果:
问题录
问题:GPU没法使用
执行上述测试代码
此时发现安装的Pytorch 2.5.1+Python3.11.11 没法使用MAC M1d的GPU,找了很多资料没法确定兼容性最终选择用Anaconda进行Python环境安装,通过Anaconda安装Python3.11.11后,然后选择安装Pytorch后,发现安装的是Pytorch2.3.1版本,即Pytorch 2.3.1+Python3.11.11,调整后执行结果如下:
上图提示需要macOS 13.0以上才能使用MPS,所以系统还得需要升级到macOS13.0以上。
macOS 升级到13.7.2 后,执行代码如下:
由于升级系统耗费时间,后续有时间升级后再更新补充完整 ,大家如果有跟新了的也可以尝试后在评论区留言问题情况,谢谢!