近期用了两天时间在m1芯片上安装tensorflow,记录下一些过程和参考文章
1. https://www.jianshu.com/p/7d27a53e3a5e——takumiiii
2. https://blog.csdn.net/qq_41437512/article/details/114753937——__help__
以前在ubuntu上觉得anaconda这个包管理特别好用,而且还可以轻松应用tensorflow的包,于是这次就贪图方便直接下了anaconda,但是没有想到,anaconda以及它下载下来的一些包(特别是直接在CPU和GPU上操作的tensor flow keras等等)对arm架构的芯片不支持,导致即使成功安装了tensorflow也无法打开
在搜集资料后发现tensorflow对m1有一个预开发版本(release),但是这个版本必须建立在miniforge(anaconda的arm64版本),于是又要翻到重来(鬼知道我用homebrew装了多少次miniconda)。这里就重点参考了上面两位博主的教程
01安装miniforge
https://conda-forge.org/blog/posts/2020-10-29-macos-arm64/
将下载下来的.sh文件拖拽到终端里
这里会遇到两个问题:
- permission denied
解决方案:切换到该.sh文件的目录下
- 切换到目录下大概率还是修改不了(因为大部分人可能还没开放权限)
解决方案: chmod 755 xxx.sh
02下载为m1优化的tensorflow及其插件
https://github.com/apple/tensorflow_macos
(尽量下载第一个版本的asserts下的.tar.gz文件)
03创建conda虚拟环境
conda create --name envname python=3.8
PS:这一步过后尽量回去miniforge里面看一下是否产生了一个你命名的虚拟环境文件夹(envname是你自己起的名字)
路径类似
/Users/xxx/miniforge3/envs/tf
这一步创建好后就可以快乐的开启虚拟环境
source activate envname
其实这里还可能会遇到问题,就是你的conda可能压根启动不了会在终端出现
commas not found:conda
这个时候就是你的conda环境配置没到位,需要到
user/xxx/
目录下同时按commad+shift+.
看到隐藏文件中的.bash_profile
,并修改环境变量,详情请参考https://blog.csdn.net/Xurui_Luo/article/details/88702036
这里小提一句,如果实在不喜欢base或者其他的例如tf环境,可以激活环境后退出环境conda deactivate
04在虚拟环境中安装tensorflow
这里援引上述两位博主的代码供大家参考
libs="/Users/xxx/tensorflow_macos/arm64/"
env="/Users/xxx/miniforge/base/envs/tf24/"
# 前面两个libs和env是为了方便后续的代码
conda install -c conda-forge pip setuptools cached-property six
conda upgrade -c conda-forge pip setuptools cached-property six
pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/grpcio-1.33.2-cp38-cp38-macosx_11_0_arm64.whl"
pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl"
pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/tensorflow_addons_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl"
#以上的文件都是依照 __02步骤__命名的,需要根据实际情况修改
conda install -c conda-forge -y absl-py
conda install -c conda-forge -y astunparse
conda install -c conda-forge -y gast
conda install -c conda-forge -y opt_einsum
conda install -c conda-forge -y termcolor
conda install -c conda-forge -y typing_extensions
conda install -c conda-forge -y wheel
conda install -c conda-forge -y typeguard
pip install tensorboard
pip install wrapt flatbuffers tensorflow_estimator google_pasta keras_preprocessing protobuf
pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/tensorflow_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl"
然后是sklearn
conda install -c conda-forge scikit-learn
以及keras
conda install -c conda-forge keras
其他的例如
pandas&pytables
matplotlib
ipython
就不细讲了,基本就是直接conda install
就可以了
最后尝试在虚拟环境下打开python 然后import TensorFlow as tf
如果没有报错就基本成功了
后续我还需要探索如何在和miniforge没有软连接的anaconda上引用虚拟环境下的tensoflow,不然我的jupyter就用不了了…
这次的开局就是暴击,让我体会到arm64和x86之间的迁移还是需要很长时间才可以完成。