Apple M2训练YOLOv8遇RuntimeError:Half精度上采样未实现
解决M2 Mac上YOLOv8训练的
upsample_nearest2d_channels_last错误 在M2芯片Mac上训练自定义数据集的YOLOv8时,出现RuntimeError: "upsample_nearest2d_channels_last" not implemented for 'Half'错误,本质是MPS对部分半精度(FP16)算子支持不完善导致的。要全程强制使用FP32精度,只需在训练时做以下参数设置:
解决方案
- 关闭自动混合精度(AMP):训练阶段通过
amp=False禁用半精度训练,强制模型全程使用FP32 - 确保验证阶段也关闭半精度:添加
half=False参数,避免验证过程中触发半精度操作
修改后的训练代码:
from ultralytics import YOLO model = YOLO('yolov8n.pt') results = model.train( data='MY_PATH/data.yaml', epochs=20, imgsz=640, device='mps', amp=False, half=False )
原理说明
YOLOv8默认开启自动混合精度(amp=True)来加速训练,但MPS(Apple Silicon的PyTorch后端)对upsample_nearest2d这类算子的半精度实现存在缺失。关闭AMP后,模型的训练和验证过程都会使用FP32精度,避开不兼容的半精度操作,从而解决该报错。
内容的提问来源于stack exchange,提问作者Figtor
相关产品推荐
相关产品推荐

