AI・機械学習
上級
YaRN(ヤーン)
Yet Another RoPE extensioN の略。周波数次元ごとに異なるスケーリング係数を割り当てるNTK-awareスケーリングの発展版で、Mistral 7B v0.2等に採用されたコンテキスト拡張手法。
0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
LLM
コンテキスト拡張
RoPE
YaRN
長文処理
位置エンコーディング
YaRN — 精密な周波数別スケーリングによるコンテキスト拡張
YaRN(Yet Another RoPE extensioN)は2023年にPeng et al.が発表したRoPEスケーリング手法で、周波数次元を三つの域に分割してそれぞれ異なる処理を施す点が特徴だ。Mistral 7B v0.2(8k→32k)やLlama 3.1(128kサポート)の設計に影響を与えた重要な技術だ。
NTK-awareの課題とYaRNの解決策
単純なNTK-awareスケーリングの問題:
- 高周波域の過剰スケーリング: 本来スケールすべきでない短距離パターンまで変形する
- 注意スコアの分散増大: コンテキストが長くなるとsoftmaxの入力が大きくなりすぎ、注意が集中しすぎる(温度問題)
YaRNはこれを二つのアプローチで解決する。
アーキテクチャ詳細
三域分割スケーリング
RoPEの各次元 d をカットオフ alpha・beta で三域に分類:
| 域 | 条件 | 処理 |
|---|---|---|
| 低周波域(長距離) | wavelength > beta * L | 線形スケーリング適用 |
| 中間域(遷移) | alpha * L < wavelength <= beta * L | 線形補間でブレンド |
| 高周波域(短距離) | wavelength <= alpha * L | スケーリングなし(元のRoPEを維持) |
Lは拡張後のコンテキスト長、alpha=1, beta=32 が標準的なデフォルト値。
注意スコア温度補正
コンテキストが長くなるにつれ注意スコアの分散が大きくなる問題を、スケーリング係数 t で補正:
# YaRNの注意スコア補正
attention_scores = attention_scores / (t * math.sqrt(head_dim))
# t = 0.1 * ln(s) + 1.0 (s: スケール係数)
この補正がない場合、長いコンテキストで注意が特定トークンに過集中し、遠距離の情報を正しく参照できなくなる。
継続訓練との組み合わせ
YaRNは「訓練なし外挿」でも機能するが、少量の長文データで継続訓練することで品質を大幅に向上できる:
- 訓練なし: 4k→32kへの拡張でパープレキシティは増加するが実用的
- 400ステップ継続訓練: Llama 2 7Bで4k→128kへの高品質な拡張を実現(論文実験)
Hugging Face での設定
rope_scaling = {
"type": "yarn",
"factor": 4.0,
"original_max_position_embeddings": 4096,
"attention_factor": 0.28
}
採用モデルの例
- Mistral 7B v0.2: 8k→32k(YaRN + 継続訓練)
- Llama 3.1 70B/405B: 8k→128k(YaRN派生 + 大規模継続訓練)
- Qwen 2.5 72B: 128kサポート(YaRN based)
- Mistral Large: 128k(YaRN)