1. 为什么要在Mac M1上折腾深度学习环境?
如果你和我一样,是个喜欢用MacBook Pro写代码、搞点机器学习小项目的开发者,那么从Intel芯片换到M1/M2系列芯片后,最大的感受可能就是“快”和“凉快”。但随之而来的,就是在配置深度学习环境时,会遇到一些“甜蜜的烦恼”。传统的、为x86架构设计的Anaconda、TensorFlow和PyTorch,在Apple Silicon这片新大陆上,直接安装往往会水土不服,报出各种奇怪的错误,比如经典的“zsh: illegal hardware instruction”。
所以,这篇文章就是为你准备的实战手册。我会手把手带你,在搭载M1芯片的Mac上,从零开始,搭建一个能真正调用GPU(Apple Metal)进行加速的深度学习环境。我们不走弯路,直接采用目前(2024年)最稳定、最主流的方案:Miniconda + TensorFlow-macos + tensorflow-metal 以及 PyTorch with MPS(Metal Performance Shaders)支持。整个过程,我会把我自己踩过的坑、验证过的有效命令都分享出来,目标是让你一次成功,把宝贵的M1芯片性能彻底释放出来,去跑模型、做实验,而不是折腾环境。
简单来说,这个环境能让你在本地用Mac训练神经网络时,速度相比纯CPU有数倍甚至十数倍的提升。对于学习、原型开发、中小规模模型训练来说,完全足够了,而且还能享受Mac优秀的续航和静音体验。接下来,我们就从最基础的包管理工具开始。
2. 基石:安装与配置Miniconda
在Mac M1上,我们首选的Python环境管理工具是Miniconda,更准确地说,是它的社区变体 Miniforge。为什么不直接用官方的Anaconda呢?因为截至我写这篇文章时,Anaconda官方还没有提供原生的、针对Apple Silicon(arm64架构)的安装包。如果你强行安装x86版本,后续会通过Rosetta 2转译运行,不仅效率有损失,在安装某些原生arm64的包(比如我们后面要用的tensorflow-macos)时,很容易出现兼容性问题。
Miniforge则是由conda-forge社区维护的,它原生支持arm64架构,并且默认使用conda-forge这个包更丰富、更新更快的频道。这相当于为我们铺平了第一条路。
2.1 下载与安装Miniforge3
首先,我们需要下载Miniforge3的安装脚本。打开你的浏览器,访问Miniforge在GitHub的发布页面。你可以直接搜索“Miniforge GitHub releases”,或者记住这个地址(请注意,版本号可能会更新,下载最新的即可)。
找到名为 Miniforge3-MacOSX-arm64.sh 的文件,这就是我们需要的安装脚本。下载它,通常它会保存在你的“下载”文件夹里。
接下来,打开Mac自带的“终端”应用。我们将通过命令行来完成安装。
# 首先,进入下载目录
cd ~/Downloads
# 查看一下文件是否存在
ls -la Miniforge3*.sh
# 执行安装脚本
bash Miniforge3-MacOSX-arm64.sh
执行安装命令后,终端会显示软件许可协议。一路按回车键往下翻,直到最后它会问你是否接受许可,输入 yes 并回车。接着,它会提示你安装路径,通常直接按回车使用默认路径(/Users/你的用户名/miniforge3)就好。安装过程很快,完成后,它会问你是否要运行 conda init 来初始化,这里也输入 yes。
这个操作会把Miniforge3的启动命令添加到你的shell配置文件(比如 .zshrc)中。完成后,关闭当前终端窗口,再重新打开一个新的。你应该能看到命令行提示符的最前面出现了 (base) 字样,这表示你已经自动进入了Miniforge的base基础环境。
我们可以验证一下安装是否成功:
conda --version
如果正确显示了conda的版本号(比如 conda 24.x.x),那么恭喜你,第一步已经稳稳地完成了。这里有个小贴士,如果你不希望每次打开终端都自动激活base环境(为了更干净),可以运行 conda config --set auto_activate_base false 来关闭它。需要用时再手动 conda activate base 即可。
2.2 配置国内镜像源(加速下载)
默认的conda和pip源服务器在国外,下载Python包的速度可能会非常慢,甚至经常超

1706

被折叠的 条评论
为什么被折叠?



