@
- MacBook Air M1芯片安装Tensorflow踩坑
MacBook Air M1芯片安装Tensorflow踩坑
踩坑1:在mac m1上安装tensorflow报错“zsh: illegal hardware instruction”
环境: macOS Big Sur 11.5.1 + anaconda + python3.8
直接用 pip install tensorflow 安装,能够顺利安装tensorflow2.5.0,但是import tensorflow 的时候会报如上错误.
对此,查找了网上许多资料:
大概流程就是架构问题,但是问题博客基本是2020-12~2021-3月的解决方法了,应该不是最优的。
同病相怜:“zsh: illegal hardware instruction python” when installing Tensorflow on macbook pro M1
“zsh: illegal hardware instruction python” when Tensorflow on macbook pro M1
GitHub上的回音:Apple M1 chip - illegal hardware instruction #46178
截止2021-3月左右,网上时兴的解决方法都是如此:
下载 安装miniforge3然后修改配置文件。
MacBook m1芯片采用miniforge安装python3.9
macOS M1(Apple Silicon) 安装配置 Conda 环境
这应该得益于官方:
目前apple developer出了3行代码的安装教程:
https://developer.apple.com/metal/tensorflow-plugin/
踩坑2:ARM版本conda
苹果提供的tensorflow仅支持python 3.8+,而python官网只有3.9+版本支持ARM。
我们的做法是:选择通过ARM版conda创建python3.8虚拟环境,再使用创建的ARM python3.8安装tensorflow.
废话忽略:通俗的说就是,你想要一个苹果公司的最好吃的苹果,但是苹果公司提供38号苹果树只能结普通苹果,但是苹果市场有39号的苹果树能结最好吃苹果,而且支持嫁接给苹果公司的苹果树。那我们的做法是,选市场里的39号苹果树培养一个结最好吃苹果的38号苹果树,再把这个38号苹果树给苹果公司种植,然后你就能得到最好吃的苹果了。
废话不多说,开干吧!
总结:国内技术贴上的各个教程都不尽相同,而且看的比较烦躁了,花了我5-6小时,搞得我都疑惑 :Anaconda目前为止还不支持M1芯片吗?还是自己摸索下吧。本人也最烦配置参数和修改系统文件了。如下简单粗暴的安装大家可以参照,如有更优选择,烦请告知。
第一种成功:下载miniforge3适配Python3.8+TensorFlow2.4.0
1. 下载ARM版Miniforge3
下载ARM版Miniforge3:选择最新的arm64版本;
https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
具体可以去GitHub看:
https://github.com/conda-forge/miniforge/#download
下载Miniforge3-MacOSX-arm64.sh到自己的Download目录里:
终端cd Downlaod/
后,开始运行脚本:
bash Miniforge3-MacOSX-arm64.sh
这里安装开始,一定要慢慢回车,问题全部选择yes.
因为这里我就踩坑了,选了个No,但是没关系,可以重装Miniforge3:具体终端里删除相关文件就好了。具体操作如下:
rm -rf ~/miniforge3
rm -rf .conda
rm -rf .condarc
然后重新执行安装命令:
bash Miniforge3-MacOSX-arm64.sh
安装完成后重启终端,然后输入Python就可以看到Python 3.9了。
这样miniforge就安装好了。
2.创建虚拟环境
创建Python3.8虚拟环境并安装TensorFlow:
conda create -n py38 python=3.8
conda activate py38
进入虚拟环境后,直接conda install 就能安装TensorFlow库了。
漫长的等待各个库安装完毕即可。
最后来验证下吧!
第二种成功:安装了Anaconda的,目前可行的最简单的conda install 方法: 低版本适配Python3.7+tensorflow2.0.0
小心坑:直接上会出错哦
首先,官网下了Anaconda的MacOS版本:
这是python3.8版本
目前最新的版本是tensorflow2.5.0 ,下载:https://pypi.org/project/tensorflow/,支持3.6-3.8版本python.
根据提示安装后,开始进入终端安装tensorflow:
创建新的环境tensorflow:
conda create -n tensorflow_env python=3.8
激活环境:
conda activate tensorflow_env
然后直接安装:
conda install tensorflow
后面报错,就是当前是python3.8版本,conda下安装只能支持3.5-3.7的,然后就重新装了一个python3.7的环境好了。
低配成功了
第二种尝试成功:安装低版本的tensorflow 2.0.0, python = 3.7,创建新的环境:
conda create -n tensorflow_env_py37 python=3.7
conda activate tensorflow_env_py37
# check your python version
python --version
# install
conda install tensorflow
# enter your python
python
# check tensorflow
import tensorflow as tf
需要等待一会,加载tensorflow,之后没有报错。
下面用官网的一个例子,测试下,可以正常运行。
import tensorflow as tf
# 载入MNIST数据集
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# 搭建模型
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 训练并验证模型
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
可以正常输出结果。
这样两个各个版本的TensorFlow都可以拥有了。目前没啥问题。
(最新)第三种成功:Python3.9 +TensorFlow2.5
Python2.4版本的bug有点多,还是直接上2.5.
前面已经安装好了miniforge3,就好办了。按照官方的三行代码:https://developer.apple.com/metal/tensorflow-plugin/
step 1. 安装miniforge3,创建conda环境。
安装Tensorflow dependencies:
conda install -c apple tensorflow-deps
step 2. Install base TensorFlow
python -m pip install tensorflow-macos
这里下载的时间比较久了。
step 3. Install tensorflow-metal plugin
python -m pip install tensorflow-metal
如果安装pycharm,使用TensorFlow
pycharm是支持M1 芯片的,放心使用,就是选择Python解释器时,选择你前面创建的虚拟环境即可。
Anaconda上安装pytorch
如果安装Pytorch,进入官网https://pytorch.org/get-started/locally/选择版本:官网给出了各种安装方法。
在前面安装好miniforge3的基础上,在Anaconda上的可以安装Pytorch1.8.0版本。
conda install pytorch torchvision -c pytorch
可以正常安装。