You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yolo v8训练无法调用Apple M1 Pro芯片,GPU显存显示异常求助

YOLOv8 MPS训练显存显示异常与GPU加速问题解决

关于GPU_mem显示0G的说明

这是Ultralytics YOLOv8的统计逻辑bug:YOLOv8的GPU_mem指标仅针对CUDA设备做了适配,对Apple MPS设备的显存使用情况无法正确统计,所以会显示0G,但不影响实际GPU的使用。你看到Mac活动监视器GPU占用率达80%,说明训练已经在利用GPU加速了。

确保GPU加速生效的正确操作

1. 验证MPS环境有效性

先确认你的环境满足MPS运行要求:

  • macOS版本≥12.3
  • PyTorch版本≥2.0.0(需编译有MPS支持)
  • 设备为M1/M2/M3系列芯片

执行以下命令验证MPS是否可用:

python -c "import torch; print(torch.backends.mps.is_available())"

输出True则说明MPS环境正常。

2. 修正训练代码/命令

命令行方式

直接使用官方文档的命令即可,无需额外调整,显存显示0G属于统计bug,忽略即可:

yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640 device=mps

Python代码方式

不要手动调用model.to(mps_device),YOLOv8的train()方法会自动处理设备迁移,手动提前迁移可能导致内部逻辑冲突。修正后的代码:

import torch
from ultralytics import YOLO

if not torch.backends.mps.is_available():
    if not torch.backends.mps.is_built():
        print("PyTorch未编译MPS支持,无法使用MPS加速")
    else:
        print("当前MacOS版本低于12.3或设备不支持MPS")
else:
    model = YOLO('/Users/runs/detect/train3/weights/best.pt')
    # 直接在train参数中指定device为"mps",无需手动迁移模型
    results = model.train(data='/Users/Table.v3i.yolov8/data.yaml', epochs=100, device="mps")

3. 优化MPS训练速度的小技巧

  • 启用半精度训练:MPS对FP16精度支持更好,可通过amp=True参数开启(默认已开启,可手动指定确保生效)
  • 调整batch size:根据设备显存情况适当调大batch值(如M1 Pro 16G可设为16,M1 8G可设为8)
  • 减少日志输出:添加verbose=False参数降低IO开销

内容的提问来源于stack exchange,提问作者Harvey Xie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:30:13