Apple MacBook M1 Anaconda安装 Tensorflow

文章目录

MacBook M1芯片安装Tensorflow踩坑(建议用推荐)

首先看下TensorFlow版本和Python的适配:

参考:https://tensorflow.google.cn/install/source#macos

Apple MacBook M1 Anaconda安装 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 的时候会报如上错误.

在这方面,我在网上找到了很多信息:

[En]

In this regard, I have found a lot of information on the Internet:

这个过程可能是一个架构问题,但问题博客基本上是2020-12-2021-3月的解决方案,这应该不是最优的。

[En]

Probably the process is an architectural problem, but the problem blog is basically the solution of 2020-12-2021-March, which should not be optimal.

同病相怜:“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号苹果树交给苹果公司种植,然后就可以得到最好的苹果。

[En]

Ignore the nonsense: generally speaking, you want the best apple of Apple, but Apple provides that 38 apple trees can only produce ordinary apples, but there are 39 apple trees in the apple market that can produce the best apples and support the apple trees grafted to Apple. What we do is to choose the No. 39 apple tree in the market to cultivate a No. 38 apple tree that bears the best apples, and then give this No. 38 apple tree to the Apple Company to grow, and then you can get the best apples.

废话不多说,开干吧!

总结:国内技术贴上的各个教程都不尽相同,而且看的比较烦躁了,花了我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

Apple MacBook M1 Anaconda安装 Tensorflow
终端 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了。

Apple MacBook M1 Anaconda安装 Tensorflow

2.创建虚拟环境

创建Python3.8虚拟环境并安装TensorFlow:

conda create -n py38 python=3.8
conda activate py38

进入虚拟环境后,直接conda install 就能安装TensorFlow库了。
安装每个库都需要很长时间。

[En]

It takes a long time for each library to be installed.

Apple MacBook M1 Anaconda安装 Tensorflow
Apple MacBook M1 Anaconda安装 Tensorflow

第二种方法:安装了Anaconda的,目前可行的最简单的conda install 方法: 低版本适配Python3.7+tensorflow2.0.0

小心坑:直接上会出错哦

首先,官网下了Anaconda的MacOS版本:
这是python3.8版本

Apple MacBook M1 Anaconda安装 Tensorflow

根据提示安装后,开始进入终端安装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的环境好了。

Apple MacBook M1 Anaconda安装 Tensorflow

低配成功了

第二种尝试成功:安装低版本的tensorflow 2.0.0, python = 3.7,创建新的环境:

conda create -n tensorflow_env_py37 python=3.7
conda activate tensorflow_env_py37

python --version

conda install tensorflow

python

import tensorflow as tf

需要等待一会,加载tensorflow,之后没有报错。

以下是该官网的一个例子,经过测试,可以正常运行。

[En]

The following is an example of the official website, after testing, it can run normally.

import tensorflow as tf

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)

可以正常输出结果。

Apple MacBook M1 Anaconda安装 Tensorflow

Apple MacBook M1 Anaconda安装 Tensorflow

Apple MacBook M1 Anaconda安装 Tensorflow

Apple MacBook M1 Anaconda安装 Tensorflow
这样两个各个版本的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

在这里下载已经很长时间了。

[En]

It’s been a long time to download here.

Apple MacBook M1 Anaconda安装 Tensorflow

step 3. Install tensorflow-metal plugin

python -m pip install tensorflow-metal

如果安装pycharm,使用TensorFlow

pycharm是支持M1 芯片的,放心使用,就是选择Python解释器时,选择你前面创建的虚拟环境即可。

Apple MacBook M1 Anaconda安装 Tensorflow

; Anaconda上安装pytorch

如果安装Pytorch,进入官网https://pytorch.org/get-started/locally/选择版本:官网给出了各种安装方法。

Apple MacBook M1 Anaconda安装 Tensorflow

在前面安装好miniforge3的基础上,在Anaconda上的可以安装Pytorch1.8.0版本。

conda install pytorch torchvision -c pytorch

Apple MacBook M1 Anaconda安装 Tensorflow

可以正常安装。

Apple MacBook M1 Anaconda安装 Tensorflow

第四种方法(推荐):TensorFlow2.4(ARM64)

踩坑3(9月更新:避坑推荐):Mac-optimized TensorFlow and TensorFlow Addon

具体看我的另一篇博文:Macbook M1避坑指南:安装Apple-TensorFlow(arm64)

因为anaconda现在还没完美支持M1,因此通用的步骤还是Xcode、miniforge、ATF2.4等。
TensorFlow 2.4 on Apple Silicon M1: installation under Conda environment

3.1 针对能import tensorflow,但是模型无法编译

如果在虚拟环境下能正常import tensorflow,但是模型无法编译。 例如使用keras,一个简单的Sequential模型,到model.compile()就报错了。错误如下:

问题描述:无法在M1上使用keras进行模型编译

报错信息:

2021-09-29 12:04:50.205695: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:116] None of the MLIR optimization passes are enabled (registered 2)
2021-09-29 12:04:50.205850: W tensorflow/core/platform/profile_utils/cpu_utils.cc:126] Failed to get CPU frequency: 0 Hz
2021-09-29 12:04:50.206537: F tensorflow/core/grappler/costs/op_level_cost_estimator.cc:710] Check failed: 0 < gflops (0 vs. 0)type: "CPU"
model: "0"
num_cores: 8
environment {
  key: "cpu_instruction_set"
  value: "ARM NEON"
}
environment {
  key: "eigen"
  value: "3.3.90"
}
l1_cache_size: 16384
l2_cache_size: 524288
l3_cache_size: 524288
memory_size: 268435456

zsh: abort      /Users/dan/miniforge3/envs/pytorch_env/bin/python

原因分析:
还是TensorFlow版本的问题, 使用一个支持Mac M1芯片的arm64版本的TensorFlow。具体的操作可以参考官方

3.2解决方案

Step 1:安装Xcode Command Line Tools,Apple Developer下载安装即可。

Step 2:安装arm版本miniforge。

miniforge github选择最新的ARM64版本,一路yes就行。

之后终端 conda --versionconda info -e检查是否成功。

Apple MacBook M1 Anaconda安装 Tensorflow

进入releases选择最新的版本 tensorflow_macos-0.1alpha3.tar.gz

Apple MacBook M1 Anaconda安装 Tensorflow

tensorflow_macos-0.1alpha3.tar.gz下载后,先解压会出现2个文件夹arm64和x86_64,需要cd进入arm64文件夹。

; Step 4:路径到.\arm64,创建conda虚拟环境。

创建一个新环境tf24:

conda create --name tf24

创建后利用 conda info -e 查看。

激活环境tf24,安装Python3.8.6和pandas等。

conda activate tf24
conda install -y python==3.8.6
conda install -y pandas matplotlib scikit-learn jupyterlab

Step 5:开始安装Apple-TensorFlow2.4

Step 5.1查看arm64文件夹,强制安装这些whl文件(注意:这里不安装Tensorflow的包)

如下所示arm64文件夹内的whl文件:

Apple MacBook M1 Anaconda安装 Tensorflow

先强制安装除Tensorflow包以外的whl:

pip install --upgrade --no-dependencies --force numpy-1.18.5-cp38-cp38-macosx_11_0_arm64.whl grpcio-1.33.2-cp38-cp38-macosx_11_0_arm64.whl h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl

Apple MacBook M1 Anaconda安装 Tensorflow
Step 5.2 安装完成后,再安装一些依赖库:

因为安装TensorFlow有很多依赖的其他包,先安装这些依赖包。具体如下所示:

Apple MacBook M1 Anaconda安装 Tensorflow
pip install absl-py astunparse flatbuffers gast google_pasta keras_preprocessing opt_einsum protobuf tensorflow_estimator termcolor typing_extensions wrapt wheel tensorboard typeguard

Apple MacBook M1 Anaconda安装 Tensorflow
Step 5.3 终于可以安装TensorFlow

继续安装来自arm64文件夹的whl文件:

pip install --upgrade --force --no-dependencies tensorflow_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl
pip install --upgrade --force --no-dependencies tensorflow_addons_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl

Apple MacBook M1 Anaconda安装 Tensorflow

至此tensorflow安装完成。

Step 5.4 进入Python检查TensorFlow版本

Apple MacBook M1 Anaconda安装 Tensorflow
; Step 5.5 测试代码
import tensorflow as tf
import time

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.summary()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

start = time.time()

model.fit(x_train, y_train, epochs=5)

end = time.time()

model.evaluate(x_test, y_test)
print(end - start)

可以正常编译:

Apple MacBook M1 Anaconda安装 Tensorflow

第五种方法(最新推荐):支持M1的3.9+TensorFlow2.5/2.6

Python3.8 + TensorFlow2.4正常使用中,如今可在macOS12.0+上安装TensorFlow2.5或者2.6且支持3.9。2.4还是会有点小问题,建议还是上2.5。
具体参考苹果官方的方法:https://developer.apple.com/metal/tensorflow-plugin/

Step 1. 把你的macOS升级到最新版本12.0+

Step 2. arm64 : Apple Silicon环境安装,即miniforge3安装(具体安装可以参考第一种方法介绍)

下载并安装Conda env:

chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh
sh ~/Downloads/Miniforge3-MacOSX-arm64.sh
source ~/miniforge3/bin/activate

Step 3. 安装TensorFlow依赖:

有以下2种情况:

第一种情况:已经安装过2.4的依赖,现在想要升级到2.5或2.6版本的:


python -m pip uninstall tensorflow-macos
python -m pip uninstall tensorflow-metal

conda install -c apple tensorflow-deps --force-reinstall

conda install -c apple tensorflow-deps --force-reinstall -n my_env

第二种情况:第一次安装,可选TensorFlow版本2.5或2.6

如果是TensorFlow 2.5:

conda install -c apple tensorflow-deps==2.5.0

如果是TensorFlow 2.6:

conda install -c apple tensorflow-deps==2.6.0

Step 4. 安装TensorFlow base:

python -m pip install tensorflow-macos

Step 5. 安装TensorFlow插件:

python -m pip install tensorflow-metal

Anaconda安装package出问题

可以看另二篇博文:

  1. Macbook m1 with conda-forge安装package报错和解决
  2. 异常处理:macOS M1下Anaconda安装package
    包括安装gensim,keras等常用库时遇到的报错。

欢迎各位关注我的个人公众号: HsuDan,我将分享更多自己的学习心得、避坑总结、面试经验、AI最新技术资讯。

Original: https://blog.csdn.net/u012744245/article/details/119573335
Author: 快乐小码农
Title: Apple MacBook M1 Anaconda安装 Tensorflow

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/496292/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球