Mac M1芯片上安装tensorflow
背景
环境:Mac OS M1芯片,anaconda
按照常规经验,在我的电脑上用用pip install TensorFlow之后,安装过程很正常没有报错,后来import tensorflow后出现了一个错误:zsh: illegal hardware instruction python 这个错误,后来搜索后,在 stack overflow网站上搜到了一个帖子,发现是一样的错误,顺藤摸瓜后发现了tensorflow的macOS github 上的说明。写出来供大家参考。
说明一下,如果anaconda环境是在官网上下载的,目前anaconda还没有支持arm芯片架构的,所以如果参考apple github 上的内容依然会报错,错误是:Failed to load the native TensorFlow runtime. 这是由于苹果芯片采用arm架构,但是anaconda目前官网上的安装包依然是inter架构的,所以会有问题,最后兜兜转转参考了https://github.com/apple/tensorflow_macos/issues/3。要先安装arm架构的anaconda(裂开表情包)。
参考网站:
stackoverflow :
“zsh: illegal hardware instruction python” when installing Tensorflow on MacBook pro M1 - Stack Overflow
苹果tensorflow github:
Releases · apple/tensorflow_macos · GitHub
anaconda 环境下安装tensorflow
https://github.com/apple/tensorflow_macos/issues/3
Anaconda arm 架构安装包:
https://conda-forge.org/blog/posts/2020-10-29-macos-arm64/
安装过程
环境说明
环境要求:
anaconda arm架构的安装包
python 3.8+
tensorflow 安装包
安装过程
下载tensorflow 文件和anaconda arm架构安装包
打开上述的tensorflow github 网站) 和Anaconda arm 架构安装包链接,下载文件到本地并解压文件。
下载文件:
1.下载tensorflow
https://github.com/apple/tensorflow_macos/releases
进入这个网站,有Assets,点击你需要下载的文件就可以了,我下载的是我圈出来的
2.下载anaconda arm
打开anaconda arm 链接https://conda-forge.org/blog/posts/2020-10-29-macos-arm64/,点开here就可以下载了。
ps: 如果有下载不下来的同学,我把我自己下载好的放在网盘上了,也可从网盘上下载。
链接: https://pan.baidu.com/s/1O5K6b_SLIyw8dOrs7xz2Ig 密码: rn5h
3.下载文件后解压
解压命令:
tar -xvf tensorflow_macos-0.1alpha1.tar
解压后我的文件长这样:
安装anaconda,在当前目录下:
/bin/bash ./Miniforge3-MacOSX-arm64.sh
创建虚拟环境
为了tensorflow的包管理,单独创建一个虚拟环境。
- 创建虚拟环境
conda create -n tensorflow_env python=3.8
- 激活虚拟环境
conda activate tensorflow_env
激活后的环境状态:
- 查看当前python路径
which python
会出现当前python的虚拟环境,可以看到我的在anaconda3下的envs下的tensorflow_env;
- 安装tensorflow
在终端命令下运行以下代码
# If you have Tensorflow in your env, you must install it first -- uncomment this line if you're in this boat
# pip uninstall tensorflow tensorboard
# 这里记得更改为tensorflow下载解压后的文件夹...
libs="/Users/xx/xx/source/tensorflow_macos/arm64/"
# 替换成tensorflow的虚拟环境路径
env="/Users/xx/miniforge3/envs/tensorflow_env"
# The rest should work
pip install --upgrade pip wheel 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/numpy-1.18.5-cp38-cp38-macosx_11_0_arm64.whl"
pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/tensorflow_addons-0.11.2+mlcompute-cp38-cp38-macosx_11_0_arm64.whl"
pip install absl-py astunparse flatbuffers gast google_pasta keras_preprocessing opt_einsum protobuf tensorflow_estimator termcolor typing_extensions wrapt wheel tensorboard typeguard
pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/tensorflow_macos-0.1a1-cp38-cp38-macosx_11_0_arm64.whl”
这里运行如果出现无法找到文件错误,则需要根据tensorflow_macos/arm64/文件夹的文件名修改,因为下载的版本一直在更新,所以可能会有不一样。
5. 最后验证下,导入tensorflow终于不报错了。