LLM学習率スケジューリング(エルエルエムガクシュウリツスケジューリング)
LLM(大規模言語モデル)の訓練において、学習率を訓練ステップに応じて動的に変化させる戦略の総称。固定学習率では収束が不安定になりがちな数十億パラメータ規模のモデルに対し、ウォームアップ・コサインアニーリング・ワンサイクルなど多彩なスケジューラが開発され、訓練効率と最終精度を大幅に改善する。
LLM学習率スケジューリングとは
LLM学習率スケジューリング(Learning Rate Scheduling)は、大規模言語モデルの訓練中に学習率 η を時間経過(ステップ数やエポック数)に応じて動的に制御する手法群である。学習率はオプティマイザの更新幅を決定する最重要ハイパーパラメータであり、高すぎると損失が発散し、低すぎると収束に膨大な計算資源を浪費する。2026 年現在、Llama 3・GPT-4・Gemini といった主要 LLM はいずれもコサインアニーリング + ウォームアップの組み合わせを基本採用しており、学習率スケジューリングは LLM 訓練パイプラインの標準コンポーネントとなった。
学習率スケジューリングの基本的な考え方は、訓練フェーズごとに最適な学習率が異なるという経験的知見に基づく。訓練初期にはパラメータがランダム初期化状態にあり大きな勾配が発生しやすいため、低い学習率で安定化させる(ウォームアップ)。訓練中盤では十分な学習率でパラメータ空間を効率的に探索し、終盤では小さな学習率で微調整して損失の谷に収束させる。
主要スケジューラ一覧と比較
| スケジューラ | 数式概要 | 典型パラメータ | 主な採用モデル | 収束特性 |
|---|---|---|---|---|
| Step Decay | η = η₀ × γ^(step/milestone) | γ=0.1, milestone=30ep | ResNet, VGG(CV系) | 段階的、LLMには不向き |
| Exponential Decay | η = η₀ × e^(-λt) | λ=0.01 | 旧世代RNN/LSTM | 単調減衰、調整困難 |
| Cosine Annealing | η = η_min + 0.5(η_max-η_min)(1+cos(πt/T)) | T=total_steps | Llama 3, GPT-4, Mistral | 滑らか、LLM標準 |
| Linear Warmup + Cosine | warmup→cosine decay | warmup=2000steps | Llama 3 (2K warmup) | 現行LLM最多採用 |
| One Cycle | warmup→max→anneal | div_factor=25 | FastAI系, BERT FT | 超収束、短時間訓練 |
| Polynomial Decay | η = (η₀ - η_end)(1-t/T)^p + η_end | p=1.0-2.0 | BERT, T5, mT5 | 線形〜二次減衰 |
| Warmup-Stable-Decay (WSD) | warmup→定率→急減衰 | stable=80% | MiniCPM, 一部中国系LLM | 安定期長め |
| Inverse Square Root | η = η₀ / √t | — | 初期Transformer | Attention Is All You Need |
学習率とLLM訓練の関係
学習率スケジューリングが LLM に不可欠な理由は、パラメータ数が数十億〜数兆に達するモデルのロスランドスケープ(損失地形)が極めて複雑であることに起因する。
ロスランドスケープの特性
- 鋭い谷(Sharp Minima): 汎化性能が低い局所解。高い学習率で脱出可能
- 平坦な谷(Flat Minima): 汎化性能が高い局所解。低い学習率で到達
- サドルポイント: 高次元空間では局所最小値より圧倒的に多い。Momentum やアダプティブ学習率で突破
- 勾配消失/爆発: 深層ネットワークで頻発。適切な学習率制御で軽減
Chinchilla スケーリング則との関係
DeepMind の Chinchilla 論文(2022)が示したスケーリング則は、最適なトークン数 D とパラメータ数 N の関係を D ≈ 20N と定式化した。この法則に従って訓練トークン数を増やす場合、学習率スケジューラの総ステップ数 T を正しく設定することが不可欠である。T を過小に見積もると後半で学習率が 0 に近づきすぎ、過大に見積もると減衰が不十分になる。
PyTorch での実装例
PyTorch 2.x の torch.optim.lr_scheduler モジュールは主要スケジューラを網羅している:
import torch
from torch.optim import AdamW
from torch.optim.lr_scheduler import CosineAnnealingLR, LinearLR, SequentialLR
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8B")
optimizer = AdamW(model.parameters(), lr=3e-4, weight_decay=0.1)
# Linear Warmup (2000 steps) + Cosine Annealing
warmup = LinearLR(optimizer, start_factor=1e-6/3e-4, total_iters=2000)
cosine = CosineAnnealingLR(optimizer, T_max=98000, eta_min=3e-5)
scheduler = SequentialLR(optimizer, [warmup, cosine], milestones=[2000])
for step, batch in enumerate(dataloader):
loss = model(**batch).loss
loss.backward()
optimizer.step()
scheduler.step()
optimizer.zero_grad()
Hugging Face Transformers の統合
Transformers ライブラリでは get_scheduler ヘルパーで主要スケジューラにアクセスできる:
from transformers import get_scheduler
scheduler = get_scheduler(
name="cosine",
optimizer=optimizer,
num_warmup_steps=2000,
num_training_steps=100000,
)
対応スケジューラ名: linear, cosine, cosine_with_restarts, polynomial, constant, constant_with_warmup, inverse_sqrt
実モデルでの採用例
- Llama 3 (Meta, 2024): Linear Warmup 2,000 steps + Cosine Decay。ピーク学習率 3×10⁻⁴、最終学習率はピークの 1/10(3×10⁻⁵)。15T トークン訓練
- GPT-4 (OpenAI, 2023): 具体的な数値は非公開だが、Cosine Annealing ベースと推測される。GPT-3 論文では Cosine Decay を明示
- Mistral 7B (2023): Cosine Annealing、ウォームアップ 1,000 steps。ピーク学習率 3×10⁻⁴
- Gemma 2 (Google, 2024): Cosine Decay + Linear Warmup。ピーク学習率 3×10⁻⁴、5T トークン
- Qwen 2.5 (Alibaba, 2024): Cosine Annealing、ウォームアップ比率 0.01
学習率スケジューリングのベストプラクティス
事前学習(Pre-training)
- ウォームアップは必須: 1,000〜2,000 ステップが標準。全体ステップ数の 0.1〜2%
- コサインアニーリングを第一選択: Llama 3/GPT-4/Mistral すべてが採用
- 最終学習率はピークの 1/10: η_min = η_max / 10 が経験的に最良
- 総ステップ数は事前に確定: Chinchilla 則でトークン数を決定し、バッチサイズで割る
ファインチューニング
- 学習率はプレトレインの 1/10〜1/100: 3×10⁻⁵〜3×10⁻⁶ が典型
- ウォームアップは短め: 100〜500 ステップ、または全体の 3〜6%
- Linear Decay で十分: コサインほどの精密な制御は不要なケースが多い
- LoRA/QLoRA では学習率を上げられる: アダプタのみ更新するため 1×10⁻⁴ 程度まで許容
FAQ
Q1: 学習率スケジューラを使わないとどうなる?
固定学習率でも訓練は可能だが、LLM スケールでは以下の問題が生じる。訓練初期に勾配爆発で NaN が発生するリスクが高まる(ウォームアップ不在)。訓練後半に学習率が高すぎて損失の谷を飛び越えてしまい、最終精度が 1〜3% 低下する。Google の Adafactor 論文(2018)では、スケジューラ不使用で BLEU スコアが 2.1 ポイント低下した事例が報告されている。
Q2: コサインアニーリングと線形減衰はどちらが良い?
事前学習ではコサインアニーリングが優勢。Meta の Llama 3 論文では、コサイン vs 線形で最終 perplexity に 0.3〜0.5 の差が出たと報告されている。コサインは訓練中盤で学習率を比較的高く維持するため、パラメータ空間の探索が十分に行われる。ファインチューニングでは差が小さく、線形減衰で十分なケースが多い。
Q3: ウォームアップのステップ数はどう決める?
経験的なガイドラインは全体ステップ数の 0.1〜2%。Llama 3 は 2,000 steps(全 15T トークン ÷ バッチ 4M = 約 375 万 steps の 0.05%)。Mistral は 1,000 steps。BERT は全体の 1% がオリジナル設定。ウォームアップが短すぎると初期の勾配爆発リスクがあり、長すぎると有効な訓練時間が減る。
Q4: 学習率の再ウォームアップ(Re-warmup)とは?
継続事前学習(Continual Pre-training)で使われるテクニック。事前学習済みモデルに追加データで訓練を続ける際、学習率を一度上げ直してから再度減衰させる。Llama 3.1 や CodeLlama で採用されており、新しいドメイン知識の獲得効率が向上する。