题目重点:将warmup、cosine、step与plateau关联到训练证据,明确更新步、恢复状态和比较预算。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练按optimizer update step计t,总预算T,梯度累积的microbatch不等于更新步。
- 比较scheduler时保持数据顺序/优化器/预算和验证政策一致;不把本文示例超参数当Amazon通用要求。
解题路线
- 先解释当前曲线的目的与证据:早期loss/grad/update不稳用warmup逐步增学习率;后期希望缩小更新用decay。先检查bad data、loss scale与归一化,scheduler不能自动修复错误。
- 线性warmup η(t)=ηmax·t/W,之后cosine ηmin+(ηmax−ηmin)(1+cos(π(t−W)/(T−W)))/2;分界W和总T必须明确,T=W时要单独定义,不在公式里除0。
- step decay明确里程碑与γ,plateau按验证指标变化/耐心/方向触发,容易受评估噪声和频率影响。跨实验比较不能一边更多验证一边更少却都叫相同patience。
- 累计梯度时scheduler通常跟有效optimizer更新,不跟每microbatch;混合精度overflow跳过更新时是否进scheduler要看框架合同。恢复训练须保存optimizer/scheduler/global step,不能只加载模型重新warmup。
- 监控LR、训练/验证loss、gradient norm、更新/参数范数比和跳步,做有限候选消融。若训练loss一直高是容量/欠拟合也可能是LR太低,不能仅见loss差就把曲线改得更复杂。
- 长训练提前延长预算会改变cosine相位和最终LR,须定义续跑策略;不同训练预算比较最终验证表现同时报算力,避免更长训练被误记为scheduler优势。
手动走一遍
虚构1000更新步、W100、ηmax0.001、ηmin0:第50步0.0005,第100步0.001,第550步0.0005,第1000步0。8次microbatch累积为1次更新时,不能第125更新就误以为跑完整条1000步曲线。
规模与取舍
常见解析schedule每更新O(1)状态/计算;plateau保存少量验证历史。主要成本是调参训练次数和验证开销,不是scheduler函数本身。
易错点与追问
容易失分的边界
- microbatch步数混optimizer步数。
- checkpoint只存模型。
- plateau模式min/max写反。
- 换scheduler同时改预算却归因曲线。
- warmup掩盖数据/数值错误。
继续深挖
- 中途增加训练预算怎样续cosine?
- Adam与SGD的学习率比较有什么陷阱?
- 验证稀疏时plateau耐心如何解释?
- overflow跳步怎样保存一致状态?
