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
内容中包含的图片若涉及版权问题,请及时与我们联系删除
评论
沙发等你来抢