AI・機械学習
上級

LLM学習率スケジューリング(エルエルエムガクシュウリツスケジューリング)

LLM(大規模言語モデル)の訓練において、学習率を訓練ステップに応じて動的に変化させる戦略の総称。固定学習率では収束が不安定になりがちな数十億パラメータ規模のモデルに対し、ウォームアップ・コサインアニーリング・ワンサイクルなど多彩なスケジューラが開発され、訓練効率と最終精度を大幅に改善する。

0 回閲覧
0 いいね

LLM学習率スケジューリングとは

LLM学習率スケジューリング(Learning Rate Scheduling)は、大規模言語モデルの訓練中に学習率 η を時間経過(ステップ数やエポック数)に応じて動的に制御する手法群である。学習率はオプティマイザの更新幅を決定する最重要ハイパーパラメータであり、高すぎると損失が発散し、低すぎると収束に膨大な計算資源を浪費する。2026 年現在、Llama 3・GPT-4・Gemini といった主要 LLM はいずれもコサインアニーリング + ウォームアップの組み合わせを基本採用しており、学習率スケジューリングは LLM 訓練パイプラインの標準コンポーネントとなった。

学習率スケジューリングの基本的な考え方は、訓練フェーズごとに最適な学習率が異なるという経験的知見に基づく。訓練初期にはパラメータがランダム初期化状態にあり大きな勾配が発生しやすいため、低い学習率で安定化させる(ウォームアップ)。訓練中盤では十分な学習率でパラメータ空間を効率的に探索し、終盤では小さな学習率で微調整して損失の谷に収束させる。

主要スケジューラ一覧と比較

スケジューラ数式概要典型パラメータ主な採用モデル収束特性
Step Decayη = η₀ × γ^(step/milestone)γ=0.1, milestone=30epResNet, VGG(CV系)段階的、LLMには不向き
Exponential Decayη = η₀ × e^(-λt)λ=0.01旧世代RNN/LSTM単調減衰、調整困難
Cosine Annealingη = η_min + 0.5(η_max-η_min)(1+cos(πt/T))T=total_stepsLlama 3, GPT-4, Mistral滑らか、LLM標準
Linear Warmup + Cosinewarmup→cosine decaywarmup=2000stepsLlama 3 (2K warmup)現行LLM最多採用
One Cyclewarmup→max→annealdiv_factor=25FastAI系, BERT FT超収束、短時間訓練
Polynomial Decayη = (η₀ - η_end)(1-t/T)^p + η_endp=1.0-2.0BERT, T5, mT5線形〜二次減衰
Warmup-Stable-Decay (WSD)warmup→定率→急減衰stable=80%MiniCPM, 一部中国系LLM安定期長め
Inverse Square Rootη = η₀ / √t—初期TransformerAttention 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. ウォームアップは必須: 1,000〜2,000 ステップが標準。全体ステップ数の 0.1〜2%
  2. コサインアニーリングを第一選択: Llama 3/GPT-4/Mistral すべてが採用
  3. 最終学習率はピークの 1/10: η_min = η_max / 10 が経験的に最良
  4. 総ステップ数は事前に確定: Chinchilla 則でトークン数を決定し、バッチサイズで割る

ファインチューニング

  1. 学習率はプレトレインの 1/10〜1/100: 3×10⁻⁵〜3×10⁻⁶ が典型
  2. ウォームアップは短め: 100〜500 ステップ、または全体の 3〜6%
  3. Linear Decay で十分: コサインほどの精密な制御は不要なケースが多い
  4. 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 で採用されており、新しいドメイン知識の獲得効率が向上する。