Apple Silicon已经发展到M2芯片了,软件支持越来越丰富,现在除了个别老牌且和设备驱动有关的软件还得转译,我电脑上的应用基本都是原生支持M1。Homebrew上不少开发工具也专门有ARM64版。2022年内,tensorflow和pyTorch也分别支持了Apple Silicon,其中pyTorch是开发方直接支持,可以说从安装到使用都比较完善,但tensorflow是Apple参与做适配,其实还有点坑,这几天折腾了一下,记录点心得。
从tensorflow 2.5开始,Apple官方已经从miniforge转移到miniconda。下载安装脚本,然后在命令行运行,过程中会提示你设置miniconda的路径,其他都是默认的。
chmod +x ~/Downloads/Miniconda3-latest-MacOSX-arm64.sh
sh ~/Downloads/Miniconda3-latest-MacOSX-arm64.sh
source ~/miniconda/bin/activate
激活的默认环境是base,如果你想新建一套其他环境,而不是直接放conda的base下,那就按正常conda使用方式设置就行了,不再赘述。
比如jupyterlab、matplotlib、scikit-learn等
conda install pandas
conda install notebook
conda install matplotlib
conda install scikit-learn
需要安装的三个包是tensorflow-deps、tensorflow-macos、tensorflow-metal。其中前两个是必须的,tensorflow-metal是让tensorflow能用上Apple Silicon芯片的GPU。
一个官网都没告诉你的关键来了,这三个包必须严格安装对应的版本!具体的版本要关注官方安装文档最后的Releases表格。比如说,目前正式发布的tensorflow-macos是v2.9,那么同步安装的tensorflow-deps必须是v2.9、tensorflow-metal必须是v0.5.0,否则后面运行过程会报错失败。
但是如果你直接按官方安装文档的指令跑,会发现当前tensorflow-macos已经有v2.11,tensorflow-metal有v0.7.0,安装后无法运行,因为tensorflow-deps拖后腿,并没有v2.11版。这是网上大量提问出错的问题所在,也是官方安装文档最不应该疏漏的地方。
实际上,到2023年1月1日,可以顺利运行的最新搭配是:tensorflow-macos v2.10、tensorflow-metal v0.6.0、tensorflow-deps v2.10.0,需要macOS 13.0+版本。并且,tensorflow-deps必须手工本地安装。
下载tensorflow-deps v2.10.0,放到miniconda/pkgs
路径下(下面第一行指令注意替换实际路径)
conda install --use-local ~/miniconda/pkgs/tensorflow-deps-2.10.0-0.tar.bz2
pip install tensorflow-macos==2.10.0
pip install tensorflow-metal==0.6.0
最后,如果运行中遇到一些类型错误,可能是numpy也需要更新,我是直接pip装了最新版,没有兼容问题。还可以安装一下pytorch等
pip3 install --upgrade numpy
conda install pytorch torchvision torchaudio -c pytorch
其实,最重要的就是tensorflow-deps这个基础包,由于它版本往往不是很高,所以上面要先装jupyterlab、matplotlib、scikit-learn等,否则等你要回过头来安装的话,conda会提示冲突。经我实践,其实调整一下安装顺序,几个包是能正常使用的。
Error in Tensorflow on M1 Apple Developer论坛的一个出错提问