ML Compute可直接在Mac上为TensorFlow模型提供训练,可以利用CPU和GPU加速M1和Intel驱动的Mac。苹果M1加速后的性能大致与GTX 1080或1080 Ti相当

折腾一天后,终于成功在苹果M1中搭建ML Compute加速的TensorFlow 2.4,文章记录我搭建的全过程。

此处附上苹果提供的GitHub链接(由于国内访问GitHub太慢,下文我将安装脚本上传至自己的服务器,并将下载源替换为国内镜像)

 

一、从Python官网下载支持Apple Silicon的版本

点击此处下载Python,一定要下载带universal2 installer的版本,否则无法运行TensorFlow(例下图)

完成后按默认条件安装即可。在终端输入python3,可看到您下载的Python版本。(图中已安装conda,下文将阐述M1安装conda的方法)

 

二、安装conda

由于苹果提供的TensorFlow仅支持python3.8+,而python官网只有3.9以上版本支持ARM。此处选择通过ARM版conda创建python3.8虚拟环境,使用创建的ARM python3.8安装TensorFlow。(M1安装conda另有好处,目前仅conda能为M1安装Numpy、Pandas等科学计算环境)

此处下载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。如下图

 

三、在虚拟环境安装ML Compute版TensorFlow

现在实现我们的最初目的,使用conda创建ARM版Python3.8的虚拟环境。确保conda的python环境已激活,输入如下命令创建虚拟环境

conda create -n py38 python=3.8

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

conda activate py38

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

使用python3.8来创建Virtualenv虚拟环境(目前苹果提供的TensorFlow仅支持Virtualenv)

打开您准备的项目目录,在终端输入

python -m venv venv

此时您的项目目录会生成一个venv目录,如图

点击下载ML Compute版TensorFlow(已替换GitHub文件为国内镜像)

将下载文件和venv均放在项目根目录,如下图所示

回到终端,输入如下命令,安装TensorFlow到虚拟环境

bash download_and_install.sh

 

根据下面的图片确认安装

 

 

 

 

注,此处需输入安装虚拟环境的路径(路径以venv结尾)!

下图是我的路径

输入后按回车,之后按y确认,即可安装成功!

 

四、测试运行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)

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

开始运行

出现所示输出,说明运行成功!成功使用ML Compute加速M1~

 

 

 

附加:

由于部分需求,不方便使用Virtualenv,这里引入两种将TensorFlow部署到conda虚拟环境的方法。

 

方法一

下载苹果提供的TensorFlow源码(已通过国内镜像加速)

下载后解压,进入tensorflow_macos/arm64目录的终端(示例命令如下)

cd tensorflow_macos/arm64

激活上文创建的ARM Python3.8环境

conda activate py38

依次输入以下命令安装

pip install --force pip==20.2.4 wheel setuptools cached-property six

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 tensorflow_addons-0.11.2+mlcompute-cp38-cp38-macosx_11_0_arm64.whl

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

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

安装完成,便可以在conda虚拟环境py38中使用TensorFlow!

 

方法二

下载我部署好的conda环境,直接复制到您的环境中【若链接失效,请联系我重发,谢谢】

链接: https://pan.baidu.com/s/1UF9c-2zJEc-uEjeEAjHFHw  密码: csh1

下载后解压,将解压后的文件夹粘贴至您的conda虚拟环境路径(通常,路径格式为/Users/<您的Mac用户名>/miniforge3/envs,如我的路径为/Users/Cyberbolt/miniforge3/envs)

之后使用命令即可激活部署好的虚拟环境

conda activate py38

 

内容中包含的图片若涉及版权问题,请及时与我们联系删除