MacBook Pro M1 搭建 TensorFlow 2.5 深度学习环境(支持 Mac GPU 加速)

2021-06-30 17:40:48   Cyberbolt

注意:本方法可能安装失败,建议使用 Apple Silicon 安装 TensorFlow 的最新方法

 

本文根据苹果官网提供的最新方法记录,用于 Apple Silicon 安装 TensorFlow 2.5,支持在 Mac GPU 上使用 Metal 加速训练。大致思路为,通过 Miniforge3 创建 Python 3.9 的 Conda 虚拟环境,在 Conda 虚拟环境中安装支持 Apple Silicon 的 TensorFlow。

您也可以按原方法安装 TensorFlow 2.4。

此处附上苹果提供的GitHub链接

 

一、安装 Miniforge3

此处下载 ARM 版 Miniforge3,如下图所示

完成后打开下载目录的终端,运行shell脚本来安装。输入如下命令

bash Miniforge3-MacOSX-arm64.sh

如下图所示

安装后按下述操作激活 Conda 的环境变量。输入命令

vim ~/.bash_profile

按 i键 进入编辑模式,输入自己的 Conda 环境路径

export PATH="/Users/Cyberbolt/miniforge3/bin:$PATH"

上面的路径是我本机的 Conda 环境路径,您的路径可能在别处,通常路径格式为 export PATH="/Users/<你的Mac用户名>/miniforge3/bin:$PATH"。

输入完成后,按一下esc键,之后输入 :wq 回车 保存,保存的内容示例图如下

然后输入命令

source $HOME/.bash_profile

此时在终端输入 python3,即为 Conda 中的 python。如下图

 

二、在虚拟环境安装 TensorFlow

使用 Conda 创建 ARM 版 Python3.9 的虚拟环境。确保 Conda 的 Python 环境已激活,输入如下命令创建虚拟环境

conda create -n py39 python=3.9

输入命令激活刚创建的 python3.9 解释器

conda activate py39

出现下图标识后,python3.9 已激活成功

依次输入以下命令安装 TensorFlow 及其依赖项

conda install -c apple tensorflow-deps
python -m pip install tensorflow-macos
python -m pip install tensorflow-metal

 

三、测试运行TensorFlow代码

这里用VS Code测试,使用VS Code打开项目目录,编辑如下代码

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.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)

然后选择刚安装的虚拟环境

开始运行

可以看到 Mac GPU 的高占用率。

此时已配置完成,尽情体验 ML 带来的乐趣!

 

但是经个人测试,本文配置的 TensorFlow 的运行速度并不如原方法速度快,暂时未知原因,欢迎各位留言!

 

tntkhukvxu
2023-11-26 22:11:22

Muchas gracias. ?Como puedo iniciar sesion?