2022-03/19-14:30
0x00:引子
最近云哥 @吃货本货 问问小宋(作者)怎么样Apple的M1芯片进行深度学习开发,恰逢最近M1.开发生态趋于稳定,所以分享安装步骤。

0x01:分析
正式安装开始前,先梳理步骤,方便后续安装。
简单分析:
目的是在M平台开发深度学习需要以下必要因素:
-
编辑器:VSCode,最好的跨平台编程工具,不接受反驳。即使你是对的,你也应该反对。(再透露一个小秘密:其实很多大厂也用。VSCode开发哦:)
-
语言开发:最佳选择-Python,本版采用Python3.8.依赖最新的深度学习框架。
-
深度学习框架:TensorFlow与PyTorch,在这里安装两个最流行的框架,读者可以根据自己的需要安装。
其实配置环境有点像玩游戏,需要不断升级。
下面就需要针对这几个因素逐个击破:
-
VSCode:支持官方版本M1.网站在这里:Visual Studio Code February 2022
-
Python3.8:作者习惯用conda安装和管理Python,尤其爱用Miniconda(精简版Anaconda),自己安装需要的包。Miniconda也支持M1芯片,可在此下载:Miniconda — Conda documentation
-
TensorFlow与PyTorch:不幸的是,这两个框架的官方版本也得到了支持M1芯片。TensorFlow步骤:Tensorflow Plugin - Metal - Apple Developer,PyTorch步骤:Previous PyTorch Versions | PyTorch
0x02:实操
如果你是一个有丰富开发经验的人,你可以在这里看到它。根据以上分析开始安装(如果你犯了错误,看下面还不算晚)。以下教程写给小白用户,手拉手教学。
1、VSCode安装
首先打开网站:Visual Studio Code February 2022年,如果打不开,可能需要科学上网。如果没有,那就放弃吧。真正的发展需要一点天赋和努力。顺便说一句,还有一点英语阅读技巧。
打开后,单击红色框(Mac,救命是指苹果MacOS,不是口红,手动狗头:)绿色链接网站下载(表示Arm版MacOS的软件)。
解压双击打开后,如果遇到需要确认的信息,请单击确认。
此时VSCode完成了,不是很简单,下面开始一些困难。或者同样的建议,真的不能放弃,不要卷入这个领域,如果没有选择努力工作。
2、Python安装
这里采用的Miniconda(精简版Anaconda)下载地址:Miniconda — Conda documentation
打开后找到绿色位置,点击链接下载。
注意这次下载。.sh文件,不是安装包,不能直接点击傻瓜安装。
需要使用工具执行终端
点击打开启动台搜索终端:
下面开始执行Miniconda安装脚本,首先要搞清楚刚下载的。.sh文件保存在那里,一般默认放在那里Downloads文件夹下(如果没有,需要找到实际位置),执行以下脚本即可开始安装:
bash Downloads/Miniconda3-latest-MacOSX-arm64.sh
然后执行需要确认的返回和输入。yes确认后,安装即可完成Miniconda。
完成,打开新的终端,输入其中
conda -V
若输出正常,则Miniconda就安装成功了,如果显示”command not found所以你可能需要配置路径。
Python环境安装不如VSCode这么简单,但恭喜你走到这一步。
行百里,半九十也是。我们也迎来了安装的最后一步TensorFlow与PyTorch,打完这两个boss,今天的游戏关。
3、TensorFlow与PyTorch安装
参考TensorFlow步骤:Tensorflow Plugin - Metal - Apple Developer,PyTorch步骤:Previous PyTorch Versions | PyTorch
首先,我们先用新的来建造一个Python3.终端输入8环境:
conda create -n py38 python=3.8
这句话翻译成文字,使用conda新建(conda create)名为(-n)py38(py38)环境,指定python版本为3.8(python=3.8)。执行时保持网络连接,因为需要将东西下载到本地。
新建完成后,即可进入此环境:
conda activate py38
以下是深度学习环境的正式安装。
先安装TensorFlow,参考TensorFlow步骤:Tensorflow Plugin - Metal - Apple Developer:
依次执行:
conda install -c apple tensorflow-deps # Step 1: Environment setup Install the TensorFlow dependencies: pip install tensorflow-macos # Step 2: Install base TensorFlow pip install tensorflow-metal # Step 3: Install tensorflow-metal plugin
运行完,TensorFlow安装完成后,以下测试TensorFlow:
song@192 ~ % conda activate py38 (py38) song@192 ~ % python Python 3.8.11 (default, Aug 16 2021, 12:04:33) [Clang 12.0.0 ] :: Anaconda, Inc. on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf >>> print("tf version",tf.__version__) tf version 2.8.0 >>> print("tf gpu",tf.test.is_gpu_available()) WARNING:tensorflow:From <stdin>:1: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version. Instructions for updating: Use `tf.config.list_physical_devices('GPU')` instead. Metal device set to: Apple M1 systemMemory: 8.00 GB maxCacheSize: 2.67 GB 2022-03-19 17:03:20.293520: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support. 2022-03-19 17:03:20.294430: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/device:GPU:0 with 0 MB memory) -> physical PluggableDevie (device: 0, name: METAL, pci bus id: <undefined>)
tf gpu True
>>>
然后安装PyTorch,参照:Previous PyTorch Versions | PyTorch ,在”终端“执行
pip install torch==1.9.0 torchvision==0.10.0 torchaudio==0.9.0
安装完成后,同样做下测试:
(py38) song@192 ~ % python
Python 3.8.11 (default, Aug 16 2021, 12:04:33)
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print("torch version",torch.__version__)
torch version 1.9.0
>>> torch.ones(1)+torch.ones(1)
tensor([2.])
>>>
最后安装一些DL常用的库:
pip install pandas matplotlib glob2 tqdm opencv-python scipy scikit-learn
完成上述步骤,我们就完成了使用M1芯片的MacOS电脑环境的配置,本次游戏通关欢迎下次再见,拜拜。
如果有帮到你,请不要吝啬你的点赞鼓励,我也会越来越努力哟~
0x03:参考
-
Mac安装M1芯片版本miniconda流程 - Ravenna - 博客园
-
Good guy:在M1上安装ARM版本的pytorch 1.80 和 M1 的tensorflow