Warmup
Warmup(Learning Rate Warmup,學習率預熱)
3 秒看懂
訓練大型模型時,學習率不是一上來就拉滿,而是從一個極小值(甚至接近零)逐步升到目標值——這個”慢啟動”過程就叫 Warmup。 沒有它,隨機初始化的引數在高學習率下極易梯度爆炸、訓練發散。它是如今幾乎所有大型模型訓練的”標配開關”。
3 分鐘產業解釋
為什麼工程師離不開 Warmup?
大型模型訓練(如 Transformer 架構)面臨一個核心矛盾:訓練初期,模型權重是隨機初始化的,損失曲面非常”陡峭”且不穩定;但如果一開始就用很小的學習率,後期收斂會極慢。
Warmup 的解法樸素而有效:
- 起步階段(前幾千到幾萬步):學習率從 ≈0 線性(或按其他曲線)升到預設峰值
\eta_{max}。 - 正常訓練階段:之後配合 Cosine Decay、Linear Decay 等排程器,將學習率從峰值逐步降低。
產業價值:
- 對於引數量從數十億到數萬億的模型(GPT 系列、LLaMA、PaLM 等),Warmup 步數通常是總訓練步數的 0.1%–2% 量級,看似微小,但若去掉,訓練大機率在前幾百步就出現 loss spike 或徹底崩潰。
- 它是訓練超引數調優中成本最低、收益最高的單項之一——通常只需設定一個
warmup_steps或warmup_ratio,無需額外計算資源。 - 對於分散式訓練(資料並行、張量並行、流水線並行),初始階段各並行分支的梯度方差更大,Warmup 的穩定作用更加關鍵。
15 分鐘專家深入
核心機制拆解
問題本質: 隨機初始化時,模型各層的啟用值和梯度統計量(均值、方差)尚未經訓練”校準”。若此時施加較大的引數更新,會導致:
- 某些層的啟用值指數級放大(尤其是深層網路中的殘差連線路徑)
- 梯度範數劇烈波動 → loss 震盪或直接 NaN
- 注意力分佈退化為近似均勻,softmax 飽和
Warmup 的數學直覺: 給最佳化器”熱身時間”,讓 Adam/AdamW 的一階矩(動量)和二階矩(自適應學習率)估計器收集足夠的梯度統計資訊後再用大步長更新。
經典 Warmup 排程形式
① 線性 Warmup(最常用)
\eta_t = \eta_{max} \cdot \frac{t}{T_w}, \quad t \leq T_w
其中 T_w 為總 warmup 步數。之後接主排程器(如 Cosine Decay)。
② Transformer 原始排程(Vaswani et al., 2017)
\eta_t = d_{model}^{-0.5} \cdot \min\!\left(t^{-0.5},\; t \cdot T_w^{-1.5}\right)
這個公式將 warmup 和 inverse-square-root decay 合為一體,在 t = T_w 處達到峰值。現代大型模型訓練已較少使用此原始形式,更常用線性 warmup + cosine decay 的組合。
③ Gradual Warmup(Goyal et al., 2017, “Accurate, Large Minibatch SGD”)
在 ImageNet 大 batch 訓練中提出:先用小學習率訓練 5 個 epoch(線性升溫),再切換到正常學習率。該工作證明了 warmup 使得用大 batch(如 8192)訓練成為可能,且精度不損失。
常見超引數設定(行業實踐歸納)
| 模型規模 | 典型 Warmup 步數 | 佔總訓練步數比例 | 來源 |
|---|---|---|---|
| BERT-Large(340M) | ~10,000 步 | ~1%(總步 1M) | Google 原始論文 |
| GPT-3(175B) | 約 117 步(375M tokens) | 極小比例 | OpenAI 論文 [估算] |
| LLaMA 系列 | 2,000 步 | 據公開配置檔案 | Meta 開源配置 |
| 大規模預訓練(通用) | 1,000–10,000 步 | 0.1%–5% | [行業共識] |
⚠️ 以上為基於公開論文與開源配置的歸納,實際訓練中因 batch size、資料量不同而差異顯著,無唯一”正確值”。
為什麼 Adam/AdamW 尤其需要 Warmup?
SGD 類最佳化器也需要 warmup,但 Adam 系列有額外的脆弱性:
Adam 的引數更新為:
\theta_{t+1} = \theta_t - \eta \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon}
在 $t$ 很小時,二階矩估計 \hat{v}_t 的偏差校正項 \frac{1}{1-\beta_2^t} 會放大有效步長。當 \beta_2 = 0.999(常見設定)時:
| 步數 $t$ | 偏差校正因子 \frac{1}{1-\beta_2^t} |
|---|---|
| 1 | ~1000 |
| 10 | ~100 |
| 100 | ~10 |
| 1000 | ~1.58 |
也就是說,Adam 在最初幾步的有效學習率可能是設定值的成百上千倍! Warmup 直接壓制了這一爆炸性放大。
技術原理(深度機制)
從損失曲面幾何角度理解 Warmup
訓練初期的損失曲面示意(概念圖):
Loss
│
│ ╱╲ ╱╲
│ ╱ ╲ ╱ ╲ ← 高曲率、多尖峰(sharp minima 密集)
│ ╱ ╲ ╱ ╲
│╱ ╲╱ ╲___________
└──────────────────────────── 引數空間
↑
隨機初始化在此區間
Warmup 的作用:用小步長 "試探" 曲面 → 避免一步跳入高損失區域
關鍵理論支撐:
-
梯度方差視角(Gradient Variance)
- 初始化時,mini-batch 梯度的方差極大(引數未收斂 → 各樣本梯度方向不一致)
- 大學習率 + 高方差 = 引數更新方向被噪聲主導 → 發散
- Warmup 讓方差逐步降低後再放大步長
-
Loss Sharpness 與泛化(Jiang et al., 2020; Foret et al., 2021)
- 有研究指出,訓練初期跳入 sharp minima 會導致後期難以逃出
- 小學習率 warmup 相當於一種隱式的 sharpness-aware 初始化路徑選擇
-
與 Batch Normalization 的類比
- BN 通過歸一化啟用值來穩定訓練,但 Pre-LN Transformer 中通常不使用 BN(用 LayerNorm)
- LayerNorm 雖歸一化了啟用,但不歸一化梯度流,因此無法替代 warmup 的作用
- 不過:Pre-LN 架構相比 Post-LN 對 warmup 的依賴度確實更低(詳見下文誤讀糾偏)
Warmup 與主排程器的銜接
學習率
│ ┌─────────────────────── Cosine Decay ──────→ 0
│ ╱
│ ╱
│ ╱ ← 線性 Warmup
│ ╱
│ ╱
│──╱
└──┼────┼────────────────────────────────────────→ 步數
0 T_w (warmup結束)
Post-Warmup 常見主排程器:
| 排程器 | 公式 | 典型使用場景 |
|---|---|---|
| Cosine Decay | \eta_t = \eta_{min} + \frac{1}{2}(\eta_{max}-\eta_{min})(1+\cos(\frac{t-T_w}{T_{total}-T_w}\pi)) | GPT、LLaMA、大多數 LLM |
| Linear Decay | \eta_t = \eta_{max}(1 - \frac{t-T_w}{T_{total}-T_w}) | BERT 原始 |
| WSD (Warmup-Stable-Decay) | 先 warmup,再長時間恆定 lr,最後短時間快速衰減 | MiniCPM、部分實踐 [近期趨勢] |
| Inverse Sqrt | \eta_t \propto t^{-0.5} | 原始 Transformer、T5 |
技術演進史
| 時間 | 里程碑 | 關鍵貢獻 |
|---|---|---|
| 2015 | He et al., “Delving Deep into Rectifiers” | 提出 MSRA 初始化 + 配合 lr 排程,間接啟發了”分階段學習率”思路 |
| 2017.02 | Goyal et al., “Accurate, Large Minibatch SGD” | 正式提出 Gradual Warmup,使 ImageNet 大 batch(8K)訓練不掉精度 |
| 2017.06 | Vaswani et al., “Attention Is All You Need” | 將 warmup 內嵌到 Transformer 的 lr 公式中,成為架構標配 |
| 2018 | BERT(Devlin et al., 2018) | 線性 warmup + 線性 decay 的經典範式,被 NLP 社群廣泛採納 |
| 2019 | GPT-2 / Megatron-LM | 超大規模訓練中確認 warmup 的必要性;Megatron 程式碼內建 warmup 邏輯 |
| 2020 | GPT-3 論文 | warmup 步數精細化,針對超長訓練制定策略 |
| 2023–2024 | LLaMA、Qwen、DeepSeek 等開源模型 | warmup 通常 2000 步左右,配合 cosine decay 成為事實標準 |
| 2024 | WSD 排程器興起 | 將 warmup → stable → decay 三段解耦,為”續訓”/“退火”提供靈活性 |
技術路線對比
| 維度 | 線性 Warmup + Cosine | Transformer 原始公式 | WSD 排程器 | 無 Warmup |
|---|---|---|---|---|
| 實現複雜度 | 低 | 中 | 低 | 最低 |
| 訓練穩定性 | 高 | 中(對 T_w 敏感) | 高 | 極差(大型模型幾乎必崩) |
| 最終精度 | 基準線 | 可比 | 可比/略優 [部分報告] | N/A(訓練不收斂) |
| 續訓友好度 | 低(cosine 已衰減) | 低 | 高(stable 階段可任意延長) | N/A |
| 與大 batch 相容 | 好 | 一般 | 好 | 差 |
| 行業採用度 | ★★★★★ | ★★(歷史遺留) | ★★★(上升中) | 不採用 |
上下游
上游(Warmup 依賴什麼) 下游(什麼依賴 Warmup)
┌─────────────────────┐ ┌──────────────────────┐
│ • 權重初始化方案 │ │ • 大型模型預訓練 │
│ (Xavier/He/μP等) │ │ • SFT / RLHF 微調 │
│ • 最佳化器選擇 │ ──Warmup→ │ • 分散式訓練架構 │
│ (Adam/AdamW/Adan) │ │ (Megatron, DeepSpeed)│
│ • Batch Size 策略 │ │ • 訓練穩定性工程 │
│ • 模型架構 │ │ • 學習率排程器 │
│ (Pre-LN vs Post-LN)│ │ (Cosine, WSD等) │
└─────────────────────┘ └──────────────────────┘
關鍵指標
| 指標 | 說明 | 典型值 / 範圍 |
|---|---|---|
warmup_steps | 預熱階段總步數 | 1,000–10,000(LLM 預訓練);100–500(微調) |
warmup_ratio | 預熱步數佔總步數比例 | 0.01%–5% |
初始學習率 \eta_0 | warmup 起始 lr | 通常為峰值 lr 的 10^{-7}–10^{-3} 量級(或直接從 0 開始) |
峰值學習率 \eta_{max} | warmup 結束時的 lr | LLM: 1\times10^{-4}–6\times10^{-4} [範圍估算] |
| warmup 曲線形狀 | 線性 / 指數 / 多項式 | 線性最常見 |
| loss spike 機率 | 有 warmup vs 無 warmup | 無 warmup 時 spike 頻率顯著增高 [定性共識] |
供需與市場資料
Warmup 本身是訓練方法,不直接構成獨立市場,但它是訓練成本和GPU 時間利用率的隱性影響因素。
- 訓練失敗成本:一次大型模型預訓練的成本在百萬到千萬美元量級(數千 GPU 執行數週到數月)。若因缺少 warmup 導致前期發散需要 restart,直接損失 GPU 時間和電力。據行業估算,warmup 能避免的”無謂 restart”可節省 1%–5% 的總訓練成本。[定性估算]
- 超參搜尋成本:Warmup 步數是超參搜尋的維度之一。最優 warmup 步數依賴於 batch size、模型大小、資料分佈,需要小規模 proxy 實驗確定。
- 架構支援:PyTorch 原生
torch.optim.lr_scheduler中LinearLR、CosineAnnealingLR均支援 warmup;Hugging Face Transformers 的Trainer類內建warmup_steps/warmup_ratio引數;DeepSpeed、Megatron-LM 同樣內建。Warmup 已是訓練架構的”零成本基礎設施”。
代表公司與資本對映
| 公司/機構 | Warmup 相關實踐 | 關聯 |
|---|---|---|
| Transformer 原始 warmup 公式;BERT 訓練範式 | 論文發源地 | |
| OpenAI | GPT-3/4 訓練中的精細 warmup 排程 | 大規模訓練工程實踐標杆 |
| Meta (FAIR) | LLaMA 開源配置公開 warmup 步數 | 可復現的訓練配方 |
| Microsoft / DeepSpeed | DeepSpeed 架構內建 warmup 排程器 | 訓練基礎設施 |
| NVIDIA (Megatron-LM) | Megatron 程式碼中 warmup + cosine decay 是預設配置 | GPU 訓練最佳化 |
| Hugging Face | Transformers Trainer 中 warmup 是預設可選引數 | 開發者生態 |
| DeepSeek | 採用 WSD 排程器(Warmup-Stable-Decay) | 近期新型排程實踐 |
產業對映:Warmup 不構成獨立投資主題,但它是大型模型訓練效率的關鍵組成。討論訓練最佳化方向時,可將其放入”訓練穩定性工程”的廣義架構中,與混合精度訓練、梯度裁剪、初始化策略等共同評估。
投資邏輯
核心判斷
- Warmup 是成熟技術,已無獨立技術壁壘。 它是開源架構的標準組件,不構成差異化競爭力。
- 但它是”訓練可靠性”的必要條件。 任何試圖從零訓練大型模型的團隊,若忽略了 warmup(以及梯度裁剪、混合精度等基礎工程),極可能在前期浪費大量算力。
- WSD 等新型排程器的興起值得關注。 WSD(Warmup-Stable-Decay)將訓練解耦為三階段,為**續訓(continual pre-training)和退火(annealing)**提供了工程靈活性,可能成為下一代訓練配方的預設選項。
- 更廣義的”學習率工程”是一個微創新方向。 包括 per-layer lr(不同層用不同 lr)、μP(Maximal Update Parameterization,使超參可跨模型規模遷移)等,都是在 warmup 基礎上的進一步精細化。
風險點
- 若出現全新的最佳化演算法(如不需要 warmup 的一階方法),現有訓練配方可能需要重構。但目前尚無明確替代方案。
常見誤讀糾偏
❌ 誤讀 1:「Pre-LN Transformer 不需要 Warmup」
糾偏:Pre-LN(LayerNorm 放在殘差連線之前)架構確實比 Post-LN 對 warmup 的依賴度低——Post-LN 的訓練不穩定性更嚴重,沒有 warmup 幾乎無法訓練。但 Pre-LN 在大型模型規模下(引數量數十億+)仍然需要 warmup,否則前期 loss spike 的機率仍然顯著。“更少依賴” ≠ “不需要”。 許多論文和工程報告均確認了這一點。
❌ 誤讀 2:「Warmup 只是為了防止梯度爆炸」
糾偏:梯度爆炸是表象之一,但 warmup 的作用機制更深層:
- Adam 二階矩偏差校正的放大效應(見技術原理節)是獨立於梯度爆炸的另一機制
- loss 曲面的尖銳性:早期引數在隨機初始化附近,曲面曲率高,小步長幫助”繞過”尖銳最小值
- 注意力機制的退化:Transformer 的 softmax attention 在初始化時接近均勻分佈,過大的更新可能將其推入退化狀態
- 因此,即使使用了梯度裁剪(gradient clipping),warmup 仍然是必要的
❌ 誤讀 3:「Warmup 步數越多越安全」
糾偏:過長的 warmup 會:
- 浪費訓練步數(warmup 階段的 lr 低 → 引數更新效率低)
- 可能讓模型在次優區域停留過久
- 實際工程中,warmup 步數需要與 batch size 配合調優。更大的 batch size 通常允許更短的 warmup(因為梯度估計更準確,方差更低)
❌ 誤讀 4:「微調(Fine-tuning)不需要 Warmup」
糾偏:取決於場景。全引數微調時,由於預訓練權重已”校準”,warmup 需求確實降低,但通常仍使用少量 warmup(如 3%–10% 的總微調步數)以應對新資料分佈的衝擊。LoRA 等引數高效微調中,新增的低秩矩陣是隨機初始化的,warmup 仍有意義但通常步數更少。
學習路徑
Level 0 · 直覺理解
└── 知道"訓練剛開始時學習率要小一些,然後慢慢變大"
推薦:任何深度學習入門教程中"學習率排程"一節
Level 1 · 理解機制
└── 掌握線性 warmup 公式,能解釋 Adam 偏差校正問題
推薦:
• Vaswani et al., "Attention Is All You Need" (2017) §5.3
• Goyal et al., "Accurate, Large Minibatch SGD" (2017)
Level 2 · 工程實踐
└── 能在訓練架構中配置 warmup,理解 warmup_steps 的選擇邏輯
推薦:
• Hugging Face Transformers 文件 - Trainer 的 lr_scheduler_type
• PyTorch 官方 lr_scheduler 教程
• 任意開源 LLM(如 LLaMA)的訓練配置檔案
Level 3 · 理論深度
└── 理解 warmup 與損失曲面幾何、sharpness-aware 最佳化的關係
推薦:
• Smith & Le, "A Bayesian Perspective on Generalization and
Stochastic Gradient Descent" (2018)
• Gotmare et al., "A Closer Look at Deep Learning Heuristics"
(2019) - 關於 warmup 的理論分析
• Liu et al., "WSD: A Warmup-Stable-Decay Learning Rate
Schedule for Training Large Language Models" (2024)
Level 4 · 前沿探索
└── μP、per-layer lr、與 warmup 的協同設計
推薦:
• Yang et al., "Tensor Programs V: Tuning Large Neural
Networks via Zero-Shot Hyperparameter Transfer" (2022) [μP]
一句話總結
Warmup 是大型模型訓練中最”不起眼”卻最關鍵的穩定器——它用幾千步的低學習率”熱身”,換來了後續數百萬步訓練的收斂保證,是每一個大型模型訓練配方的隱性基礎設施。
延伸閱讀與來源
- Vaswani et al. (2017), “Attention Is All You Need”, NeurIPS — Transformer 原始 warmup 公式
- Goyal et al. (2017), “Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour” — Gradual Warmup 提出
- Gotmare et al. (2019), “A Closer Look at Deep Learning Heuristics” — warmup 理論分析
- Loshchilov & Hutter (2019), “Decoupled Weight Decay Regularization” (AdamW) — AdamW 中 warmup 的互動
- Liu et al. (2024), “WSD: A Warmup-Stable-Decay Learning Rate Schedule” — 新型 WSD 排程器
- Yang et al. (2022), “Tensor Programs V” (μP) — 超引數跨規模遷移中 warmup 的角色
- Meta LLaMA 開原始碼及訓練配置 — 工程實踐參考
- Megatron-LM GitHub 倉庫 — 大規模分散式訓練中的 warmup 實現
📌 準確性宣告:本頁技術事實基於上述論文與開源專案的公開資訊。具體訓練超引數(如 GPT-3 的 warmup 步數)部分基於論文揭露與社群復現的估算,已標註。無據處均以定性表述呈現。