目录
配景
环境
安装Pytorch
前置条件
通过pip进行安装
验证是否安装乐成
GPU加速环境
问题录
问题:GPU没法利用
配景
近来学习AI大模子,由于电脑是MAC M1的环境,在学习过程中Pytorch环境必不可少,特此在此环境中整理下安装Pytorch过程。
注意:
Mac M1芯片为了追求高性能和节能,在底层设计上利用的是一种叫做arm架构的精简指令集,不同于Intel等常用CPU芯片采用的x86架构完整指令集。PyTorch的GPU训练加速适配Mac M1时利用苹果Metal Performance Shaders(MPS)作为后端来实现的。
环境
官方要求说明:
Start Locally | PyTorch
环境 | 版本 | 说明 | 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,详细安装和利用方法参考如下文档,此处不再累赘说明了
Mac M1 安装 Pytorch
通过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 后,实行代码如下:
由于升级体系耗费时间,后续偶然间升级后再更新补充完整 ,大家如果有跟新了的也可以实验后在评论区留言问题情况,谢谢!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |