2023-07更新:
从tensorflow 2.13开始,Apple Silicon安装已经非常简单,官方推荐的方法如下:
python3 -m venv ~/Developer/venv-metal
source ~/Developer/venv-metal/bin/activate
python -m pip install -U pip
pip3 install tensorflow
pip3 install tensorflow-macos
pip3 install tensorflow-metal
这就完成了,目前对于Python 3.8+、macOS 12+都OK。如果你不需要虚拟环境的方式管理,上述代码的前两行也可以不执行。
至于pyTorch,已经完美支持:pip3 install torch torchvision torchaudio
—-以下内容已过时—-
Apple Silicon已经发展到M2芯片了,软件支持越来越丰富,现在除了个别老牌且和设备驱动有关的软件还得转译,我电脑上的应用基本都是原生支持M1。Homebrew上不少开发工具也专门有ARM64版。2022年内,tensorflow和pyTorch也分别支持了Apple Silicon,其中pyTorch是开发方直接支持,可以说从安装到使用都比较完善,但tensorflow是Apple参与做适配,其实还有点坑,这几天折腾了一下,记录点心得。
一、安装miniconda
从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
需要安装的三个包是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
四、安装pyTorch等
最后,如果运行中遇到一些类型错误,可能是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论坛的一个出错提问