詳細解釋
熱身(Warmup)是訓練初期學習率從小逐漸增加到目標值的策略,幫助模型穩定啟動並避免早期大梯度破壞預訓練權重。
為何需要:
- 初期不穩定:模型權重隨機初始化或預訓練,梯度可能很大
- 保護預訓練:微調大模型時,大學習率會破壞已學知識
- 穩定收斂:小學習率讓模型適應數據分布
- 大批次必需:大批次訓練必須配合warmup
常見策略:
- 線性Warmup:學習率從0線性增加到目標值
- lr = base_lr × (step / warmup_steps)
- 常用於Transformer架構 (變換器 / 注意力模型) (Switch Transformer)訓練
- 常數Warmup:先常數小學習率,再跳躍到目標值
- 漸進Warmup:多階段逐步增加
典型設置:
- GPT (生成式預訓練變換器)系列:375M tokens的warmup(約總訓練的1-2%)
- BERT (雙向編碼器表示):前10,000步warmup
- 微調:通常較短(如100-500步)
- 大批次:warmup步數與批次大小成正比
與學習率調度的關係:
- Warmup + Cosine Decay:先增後減的平滑曲線
- Warmup + Linear Decay:預熱後線性下降
- Warmup + Constant:預熱後保持
實踐建議:
- 預訓練:較長warmup(數千到數萬步)
- 微調:較短warmup(總步數的5-10%)
- 監測損失:如果初期震盪,增加warmup
Warmup是穩定訓練大模型的關鍵技術。