YaRN RoPE スケーリング(ヤーンロープスケーリング)
LLMのコンテキスト長を学習済みモデルのファインチューニングなしで大幅に延長するRoPE位置エンコーディング改良手法。Eleuther AI・UT Austin共同研究。
YaRN RoPE スケーリング
YaRN(Yet another RoPE extensioN)は、EleutherAIとUT Austinの研究者が2023年に発表したLLMコンテキスト延長手法で、RoPE(Rotary Position Embedding)の位置エンコーディングを改良することで、ファインチューニングなしまたは最小限の追加学習で元の学習コンテキスト長を大幅に超える推論を実現する。
RoPEスケーリングの背景
RoPEは多くの現代LLMで採用される位置エンコーディング手法で、各次元に異なる周波数の回転を適用することで位置情報を表現する。しかしモデルが学習した最大コンテキスト長(例: 4096トークン)を超えた入力を与えると、位置エンコーディングが分布外となりパフォーマンスが急激に劣化する問題がある。
YaRNの動作原理
YaRNは周波数成分を3カテゴリに分類して異なる処理を適用する:
1. 低周波成分(グローバル位置情報) スケールファクターを直接乗算して延長に対応。長距離依存関係の表現を担う次元で、比較的シンプルな線形スケーリングが有効。
2. 高周波成分(局所位置情報) スケーリングを適用しない(原文ままのRoPEを維持)。局所的なトークン関係の表現を担い、スケーリングによる歪みを防ぐ。
3. 中間周波数(線形補間領域) NTK-Awareスケーリングで定義される境界で、低周波側と高周波側の中間的な処理を行う。
NTK-Awareとの違い
NTK-Aware(Neural Tangent Kernel)スケーリングが単純な非線形スケーリングを全次元に一様適用するのに対し、YaRNは周波数帯域ごとに最適なスケーリング戦略を選択する。これにより特にコンテキスト比が8倍・16倍を超えるような大幅延長時の精度保持に優れる。
実装パラメータ
# YaRN設定例(Hugging Face Transformers)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-hf",
rope_scaling={
"type": "yarn",
"factor": 32.0, # 4096 -> 131072 トークン延長
"original_max_position_embeddings": 4096,
}
)
実績と適用事例
| モデル | 元コンテキスト | YaRN延長後 | 追加学習 |
|---|---|---|---|
| Llama 2 7B | 4K | 128K | ~1000ステップ |
| Code Llama | 16K | 100K | ~400ステップ |
| Mistral 7B | 8K | 128K | ファインチューニング不要 |
限界と注意点
YaRNは学習済みモデルの潜在的な長距離能力を引き出すアプローチであり、モデルが本質的にその位置での学習をしていない場合には精度限界がある。特に極端なコンテキスト比(64倍以上)では、短いファインチューニングを組み合わせることが推奨される。
関連技術との比較
- Linear Interpolation: シンプルだが高周波劣化が深刻
- NTK-Aware: 中程度の延長(4-8倍)に有効、YaRNはその発展版
- LM-Infinite: 推論時の動的対応に特化、YaRNとは設計思想が異なる
- StreamingLLM: 無限長対応だが全コンテキスト保持は不可
YaRNは実装の容易さと高い性能のバランスから、オープンソースLLMコミュニティで広く採用されている実践的な長文脈延長手法の標準となっている。