
一、背景最近开始尝试在 Apple M5 MacBook Pro 上进行 YOLO 模型训练。这台机器使用 Apple M5 芯片和统一内存架构不支持 NVIDIA CUDA但可以通过 PyTorch 的 MPS 后端调用 Apple GPU。因此这次环境搭建的核心目标是使用 Conda 创建独立的 Python 环境安装支持 Apple Silicon 的 PyTorch验证 MPS 是否能够调用 M5 GPU安装 Ultralytics使用官方示例数据集完成一次 YOLO 冒烟训练安装 JupyterLab方便后续编写训练代码。本文完整记录实际执行过程方便以后回查和重新搭建环境。二、本次环境信息本次实际安装完成后的主要环境如下项目版本或配置操作系统macOS 26.5 arm64芯片Apple M5统一内存24GBConda26.3.2Python3.11.15PyTorch2.13.0torchvision0.28.0Ultralytics8.4.91JupyterLab4.6.1ipykernel7.3.0GPU 加速后端MPSConda 创建环境时已经正确识别为osx-arm64Python 环境最终安装在 Miniforge 的独立环境目录中。三、创建独立的 YOLO 环境首先检查 Conda 是否已经安装conda--version本机输出conda 26.3.2创建名为yolo的 Python 3.11 环境conda create-nyolopython3.11-y激活环境conda activate yolo激活成功后终端前面会出现(yolo)检查当前 Python 是否为 Apple Silicon 原生架构python-cimport platform; print(platform.machine())输出arm64继续检查 Python 的实际路径whichpython本机输出/opt/homebrew/Caskroom/miniforge/base/envs/yolo/bin/python这说明当前使用的是yolo环境中的 Python而不是 macOS 系统自带的 Python。四、安装 PyTorch先更新 Python 包管理工具python-mpipinstall--upgradepip setuptools wheel然后安装 PyTorch 和 torchvisionpython-mpipinstalltorch torchvision本次实际安装的版本为torch 2.13.0 torchvision 0.28.0安装的 wheel 文件明确带有macosx和arm64标识说明安装的是 Apple Silicon 原生版本而不是通过 Rosetta 运行的 Intel 版本。为了以后能够完全复现本次环境也可以直接指定版本python-mpipinstalltorch2.13.0torchvision0.28.0五、验证 Apple M5 GPU 和 MPS安装 PyTorch 后最关键的一步是确认 MPS 是否可用。执行python -PY import platform import torch print(计算机架构, platform.machine()) print(PyTorch版本, torch.__version__) print(MPS已构建, torch.backends.mps.is_built()) print(MPS可用, torch.backends.mps.is_available()) if torch.backends.mps.is_available(): x torch.rand(3, 3, devicemps) print(GPU张量设备, x.device) print(x) else: print(当前未检测到可用的MPS设备) PY本机输出的关键信息为计算机架构 arm64 PyTorch版本 2.13.0 MPS已构建 True MPS可用 True GPU张量设备 mps:0同时成功在mps:0设备上创建了一个随机张量。这一步说明当前 Python 是 ARM64 原生环境PyTorch 已经编译了 MPS 支持Apple M5 GPU 可以被 PyTorch 调用后续 YOLO 训练可以使用devicemps。六、安装 Ultralytics在安装之前可以查看 PyPI 上可用的 Ultralytics 版本python-mpip index versions ultralytics当时查询到的最新版本为8.4.91本次实际使用以下命令安装python-mpipinstall-Uultralytics为了避免以后重新安装时版本发生变化更推荐明确指定版本python-mpipinstallultralytics8.4.91安装完成后执行环境检查yolo checks检查结果显示Ultralytics 8.4.91 Python 3.11.15 torch 2.13.0 Apple M5 24GB RAM Setup completeUltralytics 及其依赖均安装成功。为什么yolo checks显示 GPU 为 None检查结果中还出现了GPU None CUDA None这并不代表 Apple GPU 无法使用。这里的 GPU 信息主要面向 CUDA 设备。Apple Silicon 不使用 CUDA而是通过 MPS 调用 GPU。判断 Apple GPU 是否可用应当看torch.backends.mps.is_available()以及训练开始时是否显示MPS (Apple M5)本次后续训练已经明确使用 MPS 成功运行因此GPU None不影响实际训练。七、Ultralytics 版本和 YOLO 模型版本不是一回事这里很容易产生一个误解。本次安装的是ultralytics 8.4.91这表示 Python 软件包的版本。而下面这些yolov8n.pt yolo11n.pt yolo26n.pt表示不同的 YOLO 模型及模型权重。因此安装ultralytics8.4.91并不意味着只能使用 YOLOv8。只要当前 Ultralytics 版本支持就可以在同一个 Python 环境中保存并调用多个模型权重。例如使用 YOLO11yolo detect train\modelyolo11n.pt\datacoco8.yaml\epochs1\imgsz640\batch2\devicemps本次实际冒烟测试使用的是yolo26n.pt但环境搭建方式与使用 YOLO11 完全一致。八、执行第一次 YOLO 冒烟训练为了验证整套环境是否真正可用使用 Ultralytics 官方提供的coco8小型数据集进行一次训练。实际执行命令如下yolo detect train\modelyolo26n.pt\datacoco8.yaml\epochs1\imgsz640\batch2\devicemps\workers2几个主要参数的含义modelyolo26n.pt 使用 Nano 轻量模型 datacoco8.yaml 使用官方小型测试数据集 epochs1 只训练一轮用于环境验证 imgsz640 输入图片尺寸为 640×640 batch2 每批处理两张图片 devicemps 使用 Apple GPU workers2 设置数据加载进程数第一次运行时系统自动下载了yolo26n.pt coco8.zip训练启动信息中明确显示Ultralytics 8.4.91 Python 3.11.15 torch 2.13.0 MPS (Apple M5)这说明 YOLO 已经成功调用 Apple M5 GPU而不是退回 CPU。九、第一次训练结果模型结构统计如下YOLO26n 260 layers 2,572,280 parameters 6.1 GFLOPs训练数据集包含训练图片4张 验证图片4张 验证目标17个一轮训练正常完成训练阶段大约耗时8秒。验证结果为Precision0.889 Recall0.661 mAP500.902 mAP50-950.668这里的数据量非常小指标没有实际项目价值。本次训练的目的只是验证模型能够加载数据集能够下载和解析前向传播正常反向传播正常MPS 可以参与训练权重可以正常保存验证流程可以完整执行。最终结果保存在/opt/homebrew/runs/detect/train主要文件包括/opt/homebrew/runs/detect/train/weights/best.pt /opt/homebrew/runs/detect/train/weights/last.pt /opt/homebrew/runs/detect/train/results.png /opt/homebrew/runs/detect/train/labels.jpg日志显示best.pt和last.pt均已成功生成说明完整训练链路已经跑通。十、关于 MPS 的确定性警告训练过程中出现了以下警告index_put_with_accumulate_mps does not have a deterministic implementation这条信息的意思是当前训练开启了确定性算法但 PyTorch 中某个 MPS 算子还没有完全确定性的实现。这是一条警告不是错误。本次训练在警告出现后仍然完成了反向传播、模型验证和权重保存因此不会影响环境是否搭建成功。若后续不要求每次训练结果严格复现可以尝试yolo detect train\modelyolo11n.pt\datadata.yaml\devicemps\deterministicFalse对于正式实验如果需要对比不同模型或超参数仍建议固定随机种子并记录完整训练配置。十一、安装 JupyterLab为了方便后续通过 Notebook 编写代码继续安装 JupyterLab 和 ipykernelpython-mpipinstalljupyterlab ipykernel本次安装的主要版本为jupyterlab 4.6.1 ipykernel 7.3.0把当前 Conda 环境注册为 Jupyter 内核python-mipykernelinstall\--user\--nameyolo\--display-namePython 3.11 - YOLO MPS安装成功后输出Installed kernelspec yolo in /Users/jefferliu/Library/Jupyter/kernels/yolo启动 JupyterLabjupyter lab服务成功运行在http://localhost:8888/lab进入 JupyterLab 后应选择以下内核Python 3.11 - YOLO MPSJupyterLab、内核注册和本地服务均已正常启动。需要注意Jupyter 启动地址中通常包含访问 Token。Token 相当于临时访问凭证不应复制到公开博客、聊天群或代码仓库中。十二、安装过程中遇到的一个小问题停止 JupyterLab 时终端出现Shut down this Jupyter server (y/[n])?此时在同一个终端直接输入了brewinstall--caskvisual-studio-code但这条命令并没有被 Shell 执行而是被 Jupyter 当成了关机确认问题的回答因此 Jupyter 又恢复了运行。日志最后显示的是resuming operation而不是 VS Code 安装成功。正确处理方法有两种。第一种先关闭 JupyterControl C y关闭后再执行brewinstall--caskvisual-studio-code第二种保持 Jupyter 运行另外打开一个新的终端窗口再安装 VS Code。十三、在 JupyterLab 中验证 MPS创建 Notebook 后可以运行下面的代码importplatformimporttorchimportultralyticsprint(架构,platform.machine())print(PyTorch,torch.__version__)print(Ultralytics,ultralytics.__version__)print(MPS可用,torch.backends.mps.is_available())devicempsiftorch.backends.mps.is_available()elsecpuprint(当前设备,device)预期输出架构 arm64 PyTorch 2.13.0 Ultralytics 8.4.91 MPS可用 True 当前设备 mps也可以直接在 Notebook 中训练 YOLO11fromultralyticsimportYOLO modelYOLO(yolo11n.pt)resultsmodel.train(datacoco8.yaml,epochs1,imgsz640,batch2,devicemps,workers2)十四、保存当前环境仅仅把安装命令记录在文章中还不够。为了准确复现建议在环境稳定后导出依赖。导出 pip 依赖python-mpip freezerequirements-yolo-m5.txt导出完整 Conda 环境condaenvexport--no-buildsyolo-m5-environment.yml以后可以通过以下命令重建环境condaenvcreate-fyolo-m5-environment.yml查看环境condaenvlist激活环境conda activate yolo退出环境conda deactivate彻底删除环境conda remove-nyolo--all十五、完整复现命令下面是根据本次实际版本整理的精简复现流程# 1. 创建环境conda create-nyolopython3.11-y# 2. 激活环境conda activate yolo# 3. 验证架构python-cimport platform; print(platform.machine())# 4. 更新基础工具python-mpipinstall--upgradepip setuptools wheel# 5. 安装指定版本的PyTorchpython-mpipinstalltorch2.13.0torchvision0.28.0# 6. 安装指定版本的Ultralyticspython-mpipinstallultralytics8.4.91# 7. 检查环境yolo checks# 8. 使用YOLO11进行冒烟训练yolo detect train\modelyolo11n.pt\datacoco8.yaml\epochs1\imgsz640\batch2\devicemps\workers2# 9. 安装JupyterLabpython-mpipinstalljupyterlab4.6.1ipykernel7.3.0# 10. 注册Jupyter内核python-mipykernelinstall\--user\--nameyolo\--display-namePython 3.11 - YOLO MPS# 11. 启动JupyterLabjupyter lab十六、总结本次在 Apple M5 MacBook Pro 上完成了 YOLO 基础训练环境搭建并验证了以下内容Miniforge 和 Conda 环境正常Python 运行在原生 ARM64 架构PyTorch 正确支持 MPSApple M5 GPU 可以执行张量计算Ultralytics 安装成功YOLO 模型能够通过 MPS 完成训练和验证best.pt与last.pt权重正常生成JupyterLab 和独立 YOLO 内核正常运行。Apple M5 虽然不能使用 CUDA但对于 YOLO Nano、Small 等轻量模型的学习、小型数据集训练、模型微调和功能验证已经足够。接下来就可以进入真正的项目阶段准备自己的图片、完成目标标注、编写data.yaml然后使用yolo11n.pt开始第一个自定义目标检测模型训练。