【YOLOv11】041、YOLOv11分布式训练:多GPU、多机训练配置与优化
上周调一个工业质检项目,单卡训YOLOv11要跑三天。老板扔过来四张A5000,结果多卡速度只提升了30%——GPU利用率像心电图,一张卡满负载,其他三张在摸鱼。
这种场景搞深度学习的兄弟应该都遇到过,今天咱们就拆解YOLOv11的分布式训练,把这块硬骨头啃下来。
分布式训练的本质是通信优化
很多人以为多卡训练就是简单加个--device 0,1,2,3,其实水很深。
PyTorch的DDP(DistributedDataParallel)底层是NCCL通信库,数据要在卡间同步梯度。YOLOv11的模型结构里SPPF、C2f这些模块的输出张量布局,直接影响通信效率。
我见过有人把batch_size设成奇数,导致每轮迭代都要padding,通信开销直接翻倍——这里踩过坑,建议batch_size保持2的幂次。
单机多卡配置的魔鬼细节
先看启动脚本怎么写:
# 错误示范:这样启动其实还是DataParallel,通信瓶颈在0号卡python train.py--device0,1,2,3# 正确姿势:用torch.distributed.launchpython