前言
最近用mac学习深度学习时越来越感觉硬件的重要…随便跑个小demo都温度90+,听闻最近Pytorch适配了M1芯片,正好试试能否有所提升!
准备
miniforge是要安的,bash Miniforge3-MacOSX-arm64.sh
。
然后我们上pytorch官网看一下pytorch的情况,可以看到有稳定版和预览版两种,其中预览版是支持GPU加速的。
稳定版:
预览版:
这里提到的MPS加速是指用苹果的Metal Performance Shaders (MPS)作为Pytorch后端启用GPU加速训练。
安装
我的conda环境之前安装过稳定版:conda install pytorch torchvision -c pytorch
这里的 -c 参数是指定channel,即软件下载的渠道。所以conda本身是没有这个包的,要从pytorch的channel下载。
这时在终端中进入安装稳定版的环境,启用python,输入torch.__version__
可以查看到当前的版本是1.8.0(这里挺奇怪的,官网说MacOS不支持1.8的…):
下面我们安装预览版试一下:conda install pytorch torchvision -c pytorch-nightly
可以看到下载的已经是1.13版本了:
安完之后有个无语的问题,conda help
不能用了,可能是安装了4.13版本的问题..用-h就好了。
测试
有一个现成的测试
但是发现mps和cpu没有区别呀,如图:
倒是发现了一个BUG,标准化地方要改成如下,否则报错:transforms.Normalize((0.5,),(0.5,)),
然后又用我自己的代码小测一下,发现好像…还是没区别:
结论:Mac目前的GPU加速就是个笑话😅。
22.09.08更新
不知为何之前的测试代码中mps和cpu表现相似,但确实有一些训练使用mps是更加迅速的,如下图:
明显可以看到速度是快很多的,详细信息在链接文章的末尾。
但使用gpu(mps)训练有些时候也很麻烦,可能是因为显存不足的原因,有些时候会训练不出结果,收敛性很差。