@
- 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
可以正常安裝。