180、Warmup 策略的三种方案对比:Linear/Constant/Cosine Warmup 对训练稳定性的影响
180、Warmup 策略的三种方案对比:Linear/Constant/Cosine Warmup 对训练稳定性的影响从一次凌晨三点的事故说起去年冬天调YOLOv11的一个检测头,batch size从16拉到64,学习率按老习惯设0.01,结果训练到第200步直接炸了——loss从2.3跳到NaN,梯度里全是inf。当时盯着终端里那行“RuntimeError: CUDA error: device-side assert triggered”,心里一万只草泥马跑过。后来排查发现,罪魁祸首就是学习率太大,模型在初始阶段权重还没站稳,梯度直接冲飞了。从那以后,我养成了一个习惯:任何训练任务,第一件事就是配Warmup。今天这篇笔记,就把我踩过的三种Warmup方案——Linear、Constant、Cosine——的坑和收益,掰开揉碎讲清楚。Warmup到底在解决什么问题YOLOv11的backbone和neck里大量使用BatchNorm,初始状态下的running_mean和running_var都是默认值(0和1)。如果一上来就给大学习率,前几个batch的梯度会剧烈震荡,BN层的统计量根本来不及收敛。更致命的是,模型在随机初始化阶段,不同层的梯度尺度差异可能达到几个数量级——比如检测头的分类分支和回归分支,初始梯度范数能差10倍以上。没有Warmup,大学习率会让大梯度分支直接“踩油门冲沟里”,小梯度分支却纹丝不动。Warmup的核心逻辑就一句话: