Cosine Annealing Schedule余弦退火学习率调度

1.1倍的初始lr, 随着training step 余弦地下降到0.1*lr

image.png

def get_lr(current_step, total_steps, lr):
    return lr / 10 + 0.5 * lr * (1 + math.cos(math.pi * current_step / total_steps))

平滑:避免震荡;

先大后小:先大跳出局部最优;后小后期精细调整

大厂频繁采用;

linear warmup + Cosine Annealing

初期模型不稳定,应该先用小学习率,线性提高一阵子,再稳定地用余弦退火调整

def get_lr(step, total_steps, lr, warmup_steps=1000):
    if step < warmup_steps:
        return lr * step / warmup_steps
    else:
        progress = (step - warmup_steps) / (total_steps - warmup_steps)
        return 0.5 * lr * (1 + math.cos(math.pi * progress))
场景类型 学习率策略 是否需要 warmup 说明
快速实验 / 小模型 固定学习率 / OneCycle 模型简单,训练快
中等语言模型 线性 warmup + 余弦退火 Transformer 标准配置
大模型训练(GPT 类) warmup + 平稳 + 多阶段/余弦退火 如 DeepSeek-V3,控制更精细
微调 / 低资源场景 恒定 / 线性下降 可选 需谨慎调整,不破坏已有知识
持续训练 / Checkpoint 分段线性下降 / 阶梯下降 可选 支持“恢复式”训练或长期稳定优化