MACbook m1芯片怎么安装tensorflow和pytorch
秀一下最终结果
环境准备
-
从Python官网下载支持Apple Silicon的版本
https://www.python.org/downloads/mac-osx/
2,完成后按默认条件安装即可。在终端输入python3,可看到您下载的Python版本
安装conda
1,由于苹果提供的TensorFlow仅支持python3.8+,而python官网只有3.9以上版本支持ARM。此处选择通过ARM版conda创建python3.8虚拟环境,使用创建的ARM python3.8安装TensorFlow。(M1安装conda另有好处,目前仅conda能为M1安装Numpy、Pandas等科学计算环境)
在此处下载ARM版Miniforge3,如下图所示
添加链接描述
3. 完成后打开下载目录的终端,运行shell脚本来安装。输入如下命令
bash Miniforge3-MacOSX-arm64.sh
4,安装后按下述操作激活conda的环境变量。输入命令
vim ~/.bash_profile
<输入i进入编辑状态,输入如下信息后,按一下esc,:wq 保存并退出>
export PATH="/Users/jimmyzhang/miniforge3/bin:$PATH"
5,然后输入命令
source $HOME/.bash_profile
以上就完成了conda环境的安装
创建tensorflow虚拟环境
1,在虚拟环境安装ML Compute版TensorFlow
现在实现我们的最初目的,使用conda创建ARM版Python3.8的虚拟环境。确保conda的python环境已激活,输入如下命令创建虚拟环境
conda create -n py38 python=3.8
输入命令激活刚创建的python3.8解释器
conda activate py38
出现下图标识后,python3.8已激活成功
2,python -m venv venv
3,点击下载ML Compute版TensorFlow(已替换GitHub文件为国内镜像)
将下载文件和venv均放在项目根目录,如下图所示
回到终端,输入如下命令,安装TensorFlow到虚拟环境
bash download_and_install.sh
4,此处需要修改目标安装路径为venv路径
tensorflow测试代码
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)
完成tensorflow安装后再次搭建pytorch虚拟环境
新建文件夹test,在terminal下转到此文件夹:cd test
下载pytorch安装文件, torch-1.8.0a0-cp39-cp39-macosx_11_0_arm64.whl
python -m venv venv
conda create -n py39 python=3.9 ##此处环境创建比较慢
conda activate py39
pip install torch-1.8.0a0-cp39-cp39-macosx_11_0_arm64.whl ##中间如有失败请再次执行此命令
安装完成后执行:
import torch
torch.__version__
以上路径用到的文件请到百度网盘下载:
链接: https://pan.baidu.com/s/1j1cXPcWfaf23smczpqooGg 密码: vsjg