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
相关产品推荐
相关产品推荐

