1. 程式人生 > 其它 >Apple MacBook M1 晶片 Anaconda安裝 Tensorflow Pytorch

Apple MacBook M1 晶片 Anaconda安裝 Tensorflow Pytorch

@

目錄

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

可以正常安裝。