AI・機械学習
上級

YaRN(ヤーン)

Yet another RoPE extensioNの略。RoPEの低周波・高周波成分を異なる比率でスケールし、少量の継続学習でLLMのコンテキスト長を最大32倍拡張する手法。Mistral-7B-128KやLlama 3.1の長コンテキスト対応に採用。

0 回閲覧
0 いいね
2026/6/1 更新
関連タグ
LLM
RoPE
Long Context
ファインチューニング
AI

概要

YaRN(Yet another RoPE extensioN)は、LLMの位置エンコーディング手法RoPEを効率的に拡張するアルゴリズムで、2023年にNortheastern University・EleutherAI・Quansight Labsの共同研究として発表された。元の学習コンテキスト長の最大32倍まで、少量のデータでの継続学習(約400ステップ)で拡張できる点が特徴だ。

Mistral AI公式の「Mistral-7B-Instruct-v0.2(32K)」や「Mistral-7B-128K」、Meta公式の「Llama 3.1」シリーズ、Qwen2.5等の主要OSSモデルに採用されており、2025年時点でRoPEスケーリングのデファクトスタンダードとなっている。

技術的詳細

RoPEの問題点: RoPEは三角関数の周波数を使って位置を表現する。コンテキストを単純にスケールすると、低周波成分(長距離トークン間関係)では外挿誤差が大きく、高周波成分(隣接トークン関係)では既存情報が失われる。

YaRNの解決策:

  1. RoPEの各次元(周波数成分)を3つのゾーンに分類: 低周波(interpol)・中間(ramp)・高周波(extrapl)
  2. 低周波成分: 線形補間(interpolation)でスケール→長距離依存を保護
  3. 高周波成分: NTK的な外挿でスケール→局所依存を保護
  4. Attention Temperature調整: コンテキスト拡張比sに応じてAttentionのsoftmax温度を調整し、精度劣化を補正

継続学習: 拡張後のコンテキスト長でわずか400〜1,000ステップの継続学習を行うことで、長距離依存の品質を回復。

採用モデル比較表

モデル元コンテキストYaRN拡張後継続学習量公開状態
Mistral-7B-128K4K/8K128K非公開公開
Llama 3.1 8/70/405B8K128K非公開公開
Qwen2.5-72B8K128K非公開公開
OpenHermes-2.5 128K4K128Kコミュニティ公開

llama.cppでの利用

# YaRNを使ったコンテキスト拡張(4K→32K)
./llama-cli -m model.gguf   --ctx-size 32768   --rope-scaling yarn   --rope-freq-scale 0.25  # 元の1/4にスケール

Ollamaのモデルファイル(Modelfile)でも設定可能:

PARAMETER rope_freq_base 160000
PARAMETER num_ctx 32768

精度比較(perplexity)

YaRNの論文では、Llama 2 7B(元4K)をYaRN拡張した場合:

  • 4K以内: 元モデルと同等(perplexity劣化<1%)
  • 8K〜32K: Linear Scalingより20〜40%低いperplexity
  • 32K超: NTK-awareより良好な外挿性能を維持

関連技術との違い

Linear Scalingは全周波数成分を均等にスケールするため、高周波成分が失われて局所的な構文解析精度が低下する。NTK-awarescalingは高周波を保護するが低周波の外挿が不正確。YaRNはこの両者のトレードオフを周波数帯別の処理で解決した。

よくある質問(FAQ)

Q1: YaRNはGGUFモデルで使えますか? A: はい。llama.cppとollamaが--rope-scaling yarnオプションで対応しています。QuantizedモデルでもYaRNは機能します。

Q2: どのくらいの継続学習が必要ですか? A: Mistral公式によれば約1,000ステップ(8Bモデルで数時間〜1日程度)。コミュニティ実験では400ステップでも十分な性能が得られています。

Q3: Llama 3.1はYaRNを使っていますか? A: Metaは詳細な手法を公開していませんが、技術レポートではYaRN類似のアプローチを使用したと記載されています。128KコンテキストはLlama 3.1公式の対応範囲です。

まとめ

  • YaRNはRoPEの周波数帯別スケーリングで長コンテキスト品質劣化を最小化
  • Mistral-128K・Llama 3.1・Qwen2.5等の主要OSSモデルに採用済み
  • 少量継続学習(400〜1,000ステップ)で元コンテキストの最大32倍まで拡張可能
  • llama.cppとOllamaで--rope-scaling yarn設定により自作PCで利用可能
この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/1