Macbook M1避坑指南:安装Apple-TensorFlow(arm64)

文章目录

    • 1. 你可能遇到的问题:
    • 2. 解决方案:支持M1的Python3.8+TensorFlow2.4
      • Step 1:安装Xcode Command Line Tools,Apple Developer下载安装即可。
      • Step 2:安装arm版本miniforge。
      • Step 3: 从[Mac-optimized TensorFlow2.4 and TensorFlow Addons](https://github.com/apple/tensorflow_macos)下载ARM64版本的TensorFlow2.4,具体的安装要求是macOS 11.0+, Python3.8.
      • Step 4:路径到.\arm64,创建conda虚拟环境。
      • Step 5:开始安装Apple-TensorFlow2.4
        • Step 5.1查看arm64文件夹,强制安装这些whl文件(注意:这里不安装Tensorflow的包)
        • Step 5.2 安装完成后,再安装一些依赖库:
        • Step 5.3 终于可以安装TensorFlow
        • Step 5.4 进入Python检查TensorFlow版本
        • Step 5.5 测试代码
    • (最新推荐):支持M1的3.9+TensorFlow2.5/2.6
      • Step 1. 把你的macOS升级到最新版本12.0+
      • Step 2. arm64 : Apple Silicon环境安装,即miniforge3安装(具体安装可以参考前面的方法介绍)
      • Step 3. 安装TensorFlow依赖:
        • 第一种情况:已经安装过2.4的依赖,现在想要升级到2.5或2.6版本的:
        • 第二种情况:第一次安装,可选TensorFlow版本2.5或2.6
      • Step 4. 安装TensorFlow base:
      • Step 5. 安装TensorFlow插件:

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

1. 你可能遇到的问题:

  • Anaconda下安装tensorflow出现zsh: illegal hardware instruction;
  • conda install 过程中各种依赖库缺少的错误提示,如from absl import logging ModuleNotFoundError: No module named ‘absl’;
  • 使用miniforge创建虚拟环境下能正常import tensorflow,但是模型无法编译。 例如使用keras,一个简单的Sequential模型,到model.compile()就报错了。具体如下:I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:116] None of the MLIR optimization passes are enabled (registered 2); W tensorflow/core/platform/profile_utils/cpu_utils.cc:126] Failed to get CPU frequency: 0 Hz; F tensorflow/core/grappler/costs/op_level_cost_estimator.cc:710] Check failed: 0 < gflops (0 vs. 0)type: "CPU"
  • 。。。

具体的建议就是:重新安装TensorFlow,按照官方提供的流程一步步走。既然是arm64架构,那就用支持arm64架构的TensorFlow,避免再生问题。

对于很多朋友提出,能import tensorflow,但是模型无法编译:一到model.fit就出错。

问题描述:无法在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。具体的操作可以参考官方。

2. 解决方案:支持M1的Python3.8+TensorFlow2.4

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

Step 2:安装arm版本miniforge。

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

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

Step 3: 从Mac-optimized TensorFlow2.4 and TensorFlow Addons下载ARM64版本的TensorFlow2.4,具体的安装要求是macOS 11.0+, Python3.8.

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

在这里插入图片描述

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文件:

在这里插入图片描述

先强制安装除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

在这里插入图片描述

Step 5.2 安装完成后,再安装一些依赖库:

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

在这里插入图片描述

pip install absl-py astunparse flatbuffers gast google_pasta keras_preprocessing opt_einsum protobuf tensorflow_estimator termcolor typing_extensions wrapt wheel tensorboard typeguard

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

在这里插入图片描述

至此tensorflow安装完成。

Step 5.4 进入Python检查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)


可以正常编译:

(最新推荐):支持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版本的:

# uninstall existing tensorflow-macos and tensorflow-metal
python -m pip uninstall tensorflow-macos
python -m pip uninstall tensorflow-metal
# Upgrade tensorflow-deps
conda install -c apple tensorflow-deps --force-reinstall
# or point to specific conda environment
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

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

你可能感兴趣的:(深度学习,软件工具,Python,tensorflow,深度学习,pytorch)