YaRN: RoPEベースLLMの長文脈拡張手法

2026年4月5日更新
※ この文書は自分自身の知識を整理するため、ChatGPT/Gemini を用いて調査・整形したメモです。

YaRN: RoPEベースLLMの長文脈拡張手法

主論文: YaRN: Efficient Context Window Extension of Large Language Models

1. はじめに:YaRNはどのような課題を解決する技術なのか?

1.1 背景と直面している問題点

大規模言語モデル(LLM)が一度にどれくらい長い文章を扱えるか(文脈長)は、単純にモデルの設計図だけで決まるわけではありません。実際には、事前学習の際に「トークンの位置をどう表現したか」と、その範囲内でAttention(注意機構)がどう振る舞うように学習されたかに強く影響されます。
現在、LLaMAをはじめとする多くのDecoder型LLMでは、「RoPE(Rotary Position Embedding)」という位置表現が広く使われています。しかし、RoPEを使っているモデルに対して、単に設定上の最大長(max_position)を伸ばしたり、学習時に経験していない長さのデータをそのまま入力(外挿)したりすると、離れたトークン同士のAttentionが不安定になり、精度が大きく崩れてしまうことが知られています [1][2][3]。
この問題の根本は、「モデルが長い文章を見たことがないから」という単純なものではありません。学習済みモデルが前提としていた「位置空間のバランス(幾何)が、推論の段階で急激に変わってしまうこと」が原因なのです。つまり長文脈化とは、「既存モデルの能力を維持したまま、単に入力文字数を増やす」という話ではなく、「学習済みのAttentionヘッドが頼りにしている位置関係の構造を、いかに壊さずに引き伸ばせるか」という精緻な設計問題として捉える必要があります。

1.2 YaRNの核となるアイデア

YaRNのアプローチは、「RoPEを構成するすべての周波数帯が、同じ役割を持っているわけではない」という気づきからスタートしています [1]。
RoPEには波長の長さによってさまざまな周波数帯が含まれています。
  • 低周波帯(波長が長い): 学習時の文脈長の中では1周(1サイクル)しきらないことも多く、本来は「相対的な位置」を表すはずが、実質的に「絶対的な位置」の目印として使われることがあります。
  • 高周波帯(波長が短い): すぐ近くにあるトークン同士の順番や、局所的な距離感を区別するのに役立っています。
このように役割が分かれているのなら、長文脈化する際にすべての周波数帯を一律に引き伸ばすのは合理的ではありません。そこでYaRNは、「低周波帯は学習範囲外に飛び出さないように強く補間(縮小)しつつ、高周波帯はできるだけ元の状態をキープする」という、帯域ごとにメリハリをつけた設計を採用しました。さらに、この調整によって生じるAttentionロジット(スコアの分布)のズレを、全体的なスケーリングで綺麗に補正します。
一言で言えば、YaRNは「RoPEの周波数バランスを帯域ごとに丁寧に整え、その上でAttentionの効き具合を再調整する手法」だと言えます [1]。

1.3 適用できるモデルと前提条件

YaRNが想定しているのは、「すでにRoPEを使って事前学習されたDecoder型のLLM」です。そのため、位置表現をゼロから設計できる新規の学習モデルよりも、今あるRoPEモデルを手軽に長文脈化したい場合に真価を発揮します。
特に、「モデルの根本的な構造や推論環境(Servingシステム)を大きく変えたくない」「継続的な事前学習やファインチューニングでスマートに対応したい」といったニーズと非常に相性が良いです [1]。
逆を言えば、YaRNはRoPE以外の位置表現を使っているモデルにそのまま適用できる魔法の杖ではありません。また、長い文章をうまく扱えるかどうかは、位置表現の手法だけで決まるわけではなく、学習データの質や学習カリキュラム、評価方法なども重要になってくる点には留意が必要です [1][9]。

1.4 本記事の構成

本記事では、まずRoPEが持つ本来の性質と、なぜ単純に長文脈へ拡張すると破綻してしまうのか、そのメカニズムを紐解きます。
次に、これまでの単純な外挿から「Position Interpolation(PI)」や「NTK-aware」といった手法を経てYaRNへと至る進化の流れを整理し、YaRNの心臓部である「帯域別の補間」と「Attentionロジットの再調整」について詳しく解説します。
その後、実際の推論時におけるDynamic Scaling(動的スケーリング)の仕組みや、事後学習の進め方・評価指標について触れ、最後に他の手法との比較を通じて「どのようなケースでYaRNを選ぶべきか」をまとめていきます。

2. RoPEの特性と長文脈への外挿が破綻するメカニズム

2.1 記号の定義と前提知識

本稿では、事前学習時の最大文脈長を \(L_{\text{train}}\)、拡張後に目標とする最大文脈長を \(L_{\text{target}}\) とし、その比率(スケール)を以下のように定義します。
\[ s = \frac{L_{\text{target}}}{L_{\text{train}}} > 1 \]
Attentionのヘッド次元数は偶数 \(d_h\) とし、各2次元ペアを \(j = 0, 1, \dots, d_h/2 - 1\) のインデックスで表します。RoPEにおける回転行列は次のように与えられます。
\[ R(\phi) = \begin{pmatrix} \cos \phi & -\sin \phi \\ \sin \phi & \cos \phi \end{pmatrix} \]
入力ベクトル \(x\) の \(j\) 番目の2次元成分 \(x^{(j)}\) に対するRoPEの適用は、以下の式で定義されます。
\[ \operatorname{RoPE}(x,m)^{(j)} = R(m\theta_j)x^{(j)}, \qquad \theta_j = b^{-2j/d_h}, \; b = 10000 \]
ここで、\(m\) はトークンの位置を指します。以降の解説では、「位置を縮める」ことと「周波数を縮める」ことが数式上等価であることを利用します。
\[ e^{i(m/s)\theta_j} = e^{im(\theta_j/s)} \]
つまり、長文脈化へのアプローチは「位置 \(m\) を \(m/s\) に補間する」と考えても、「有効な角周波数 \(\tilde\theta_j\) を新しく設計する」と考えても同じです。この記事では後者の視点で解説を進めます。

2.2 RoPEの基本的な性質

RoPEの最大の特徴は、位置情報を埋め込みベクトルに単に足し合わせるのではなく、QueryとKeyの空間そのものを回転させる点にあります。回転行列には以下の性質があります。
\[ R(m\theta_j)^\top R(n\theta_j) = R((n-m)\theta_j) \]
このため、位置 \(m\) のQueryと位置 \(n\) のKeyの内積を計算すると、次のようになります。
\[ \langle \operatorname{RoPE}(q,m), \operatorname{RoPE}(k,n) \rangle = \sum_j (q^{(j)})^\top R((n-m)\theta_j)k^{(j)} \]
この数式が示す通り、RoPEは内積の計算において絶対位置そのものではなく、相対的な距離 \(n-m\) に依存するように設計されています。これが、多くのDecoder型モデルでRoPEが採用されている大きな理由です。

2.3 周波数帯ごとの役割の違い

各次元の角周波数 \(\theta_j\) に対応する波長は、次のように計算されます。
\[ \lambda_j = \frac{2\pi}{\theta_j} = 2\pi b^{2j/d_h} \]
\(j\) が小さいほど波長は短く(高周波帯)、\(j\) が大きいほど波長は長く(低周波帯)なります。RoPEはこのように複数の周波数帯を組み合わせることで、精緻に位置を表現しています。
ここで重要なポイントは、実際の学習過程において「すべての帯域が同じように使われているわけではない」ということです。
  • 高周波帯: 短い距離でも位相(角度)が大きく変わるため、近くにあるトークン同士の順序や、局所的な位置関係を識別するのに役立ちます。
  • 低周波帯: 学習時の文脈長 \(L_{\text{train}}\) の範囲内では1周すらしないような長い波長成分は、学習データの中では位置ごとにほぼ一意の位相を持っています。そのため、理論上は相対位置を表現するものであっても、実際には「絶対位置に近い目印(アンカー)」として機能してしまうことがあります。

2.4 長文脈への外挿が失敗(OOD)する理由

RoPEは相対距離に基づくため、一見すると長い系列にも自然に対応(一般化)できそうに思えます。しかし、実際にはそう上手くはいきません。
問題の根本は、モデルが学習時に経験しているのがあくまで \(0\) から \(L_{\text{train}}\) までの範囲に限定されている点にあります。
  1. 未知の相対距離(第一のOOD): 学習範囲を超えるような遠距離の位相差に対しては、Attentionの重みが最適化されていません。
  2. 絶対位置アンカーの崩壊(第二のOOD): 低周波帯が学習時に「準・絶対位置」として機能していた場合、系列が長くなるとその前提が崩れます。学習時は特定の場所を指し示していた位相構造が、長い系列ではまったく別の位置関係を意味するようになってしまうからです。
このように、長文脈への外挿では二重の分布外(Out-of-Distribution: OOD)状態が発生します。「単純な外挿よりも、位置を補間する方が理論上はるかに安定する」とPosition Interpolation(PI)の論文で述べられているのは、まさにこの事情を反映したものです。相対位置の数式が保たれることと、学習済みのモデルがその位相の変化に耐えられるかどうかは、まったく別の問題なのです。

2.5 一様に補間すると局所的な解像度が落ちてしまう理由

では、長距離でのOODを回避するために、すべての周波数帯を同じ割合(一様)に縮めてしまえばよいのでしょうか? 実はこれも最適な解決策ではありません。
元のRoPEでは、隣り合うトークン間の位相差は各帯域で以下のようになります。
\[ \Delta \phi_j = \theta_j \]
しかし、一様に補間を行うと次のようになります。
\[ \Delta \phi_j^{\text{(uniform)}} = \frac{\theta_j}{s} \]
このように、すべての帯域で位相差が小さく(圧縮)なってしまいます。高周波帯は本来、局所的な順序を細かく識別する役割を担っていますが、一律に圧縮してしまうと近距離の分解能(解像度)まで失われてしまいます。
したがって、長文脈の拡張において本当に必要なアプローチは、「低周波帯は学習範囲外への外挿を避けつつ補間し、高周波帯は局所的な識別力を維持するためにできるだけそのまま保存する」ことです。この点を明確に設計に組み込んでいるのが、YaRNという手法の革新的なところです。

3. 長文脈適応手法の進化

3.1 単純外挿の限界

もっともシンプルで思いつきやすいアプローチは、事前学習で使った位置IDの範囲をそのまま後ろに伸ばし、より長い位置に対しても同じRoPEを適用するというものです。しかし、この方法には限界があります。モデルが学習段階で経験していない「大きな位相差」が突然入力されるため、長距離でのアテンションスコアが不安定になりやすいのです。
数式上、RoPEは相対的な位置関係をうまく扱えるように見えます。しかし現実には、学習された重みはあくまで「有限の長さ」で構成された位相幾何に過学習(最適化)しているに過ぎない、というのが外挿が破綻する本質的な理由です。

3.2 Position Interpolation(PI)によるブレイクスルー

この外挿問題に対して、最初に明確な解決策を提示したのが「Position Interpolation(PI)」です。
PIの発想は非常に直感的で、長くなった系列を無理に外挿するのではなく、元の学習済み位置範囲内に「ギュッと押し込む(補間する)」というアプローチをとります。周波数の視点で見ると、PIはすべての帯域に対して以下の式を適用するのと同じ効果を持ちます。
\[ \tilde\theta_j^{\text{(PI)}} = \frac{\theta_j}{s} \]
これを位置の視点から言えば、元の位置 \(m\) を \(m/s\) に圧縮してからRoPEを計算している、と言い換えることもできます。
PIの最大のメリットは、モデルにとって未知の領域へむやみに飛び出す(生の外挿)を避けられる点です。これにより、比較的少ない追加の継続学習でも、スムーズに長文脈へ適応させることが可能になります。実際、PIの論文では、ただ長い系列を与えて直接ファインチューニングするよりも、はるかに速く目標とする文脈長に到達できることが実証されています。

3.3 NTK-aware の登場とその課題

非常に優れたPIですが、弱点もありました。それは「すべての周波数帯を一律の比率で圧縮してしまう」という点です。これにより、近接トークンの順序把握などに使われる「高周波帯の局所情報」の解像度まで一緒に削ぎ落としてしまいます。
この欠点をなんとか補おうとしてコミュニティから生まれたのが、「NTK-aware」と呼ばれる手法群です。NTK-awareの基本的なコンセプトは、「高周波帯はなるべく元のまま残し、低周波帯だけを強く縮める」ことで、局所的な相対位置の識別能力を維持することにあります。
方向性としては非常に理にかなっていますが、NTK-awareには実運用上のネックがありました。それは、有効なbase(基数)の変更量を経験則で探る必要があり、目標とする拡張倍率に対して直接的なコントロールがしづらいという点です。つまり、アイデアは良いものの、設計原理としてはまだ不十分な状態でした。

3.4 帯域別設計へのパラダイムシフト(YaRNへ)

こうした進化の過程を経て、焦点は「RoPEの周波数帯ごとに役割は異なる」という本質的な理解へと移っていきます。
低周波帯は、学習範囲の中で「準絶対的な位置のアンカー」として働きやすく、一方で高周波帯は「局所的な相対順序」の把握に貢献しています。この役割の違いを正しく踏まえるなら、長文脈化を行う際には「どの帯域を、どのくらい補間するのか」を明示的に設計していくのが、最も自然なアプローチと言えるでしょう。
YaRNは、まさにこの「帯域別設計」をコアに据えた手法です。PIが持つ学習の安定性を受け継ぎつつ、NTK-awareが目指した高周波帯の保存というアイデアを取り入れています。さらに、アテンションのスケールまで含めて全体を再調整することで、長文脈への適応をよりシステマチックかつ強力に解決しようとしています。

4. 帯域ごとの補間と attention logit の再調整

4.1 NTK-by-parts:周波数帯ごとの補間設計

YaRNの根幹をなすのが、論文内で「NTK-by-parts」と呼ばれている帯域別のRoPE変形アプローチです。
まず、それぞれの周波数帯が学習時の文脈長の中でどれくらい回転したかを、以下の式で計算します。
\[ r_j = \frac{L_{\text{train}}}{\lambda_j} \]
この \(r_j\) は、その次元が学習範囲内で何周したかを示す目安になります。次に、2つの閾値 \(\alpha\) と \(\beta\) を使って、線形ランプ関数 \(\gamma(r)\) を定義します。
\[ \gamma(r)= \begin{cases} 0 & (r < \alpha) \\ 1 & (r > \beta) \\ \frac{r-\alpha}{\beta-\alpha} & (\alpha \le r \le \beta) \end{cases} \]
これを用いて、拡張後の有効角周波数を次のように決定します。
\[ \tilde\theta_j^{\text{(NTK-parts)}} = \left(\frac{1-\gamma(r_j)}{s}+\gamma(r_j)\right)\theta_j \]
数式を見ると少し複雑に感じるかもしれませんが、意味するところはとてもシンプルです。\(r_j\) が小さい「長波長(低周波)帯」では \(\gamma(r_j)\) が0に近づくため、Position Interpolation(PI)と同じように \(\theta_j/s\) へと強く補間されます。反対に、\(r_j\) が大きい「短波長(高周波)帯」では \(\gamma(r_j)\) が1に近づくため、元の周波数がそのまま維持されます。そして中間の帯域では、その間を滑らかに繋ぐように補間される仕組みです。

4.2 なぜ低周波と高周波を分けるのか?

このように帯域を分ける狙いは、「低周波帯で発生する長距離の未知データ(OOD)問題を抑えつつ、高周波帯が持つ局所的な位置の識別能力をなるべく残す」ことにあります。
従来のPIでは、未知の距離への外挿を避けるために全帯域を一律に縮めていましたが、その結果として高周波帯の細かい解像度まで失われてしまうという弱点がありました。NTK-by-partsは、この代償を最小限に抑えています。
つまりYaRNは、RoPEを単に全体的に引き伸ばすのではなく、「どの帯域が未知の長さに弱いのか」を見極め、必要な部分にだけ強く補間をかけるという賢いアプローチをとっています。周波数の構造をひとまとめにするのではなく、帯域ごとに意味を切り分けて処理している点が、この手法の大きな特徴です。

4.3 attention logit 全体の再調整(スケーリング)

YaRNがPIやNTK-by-partsと決定的に違うのは、RoPEの周波数を変えるだけでなく、attention logit のスケールまで再調整する点です。
通常のattentionは以下のように計算されます。
\[ \operatorname{softmax}\left(\frac{q_m^\top k_n}{\sqrt{d_h}}\right) \]
しかしYaRNでは、ここに温度パラメータ \(t\) を組み込みます。
\[ \operatorname{softmax}\left(\frac{q_m^\top k_n}{t\sqrt{d_h}}\right) \]
実際の実装としては、RoPEを適用した後の \(q\) と \(k\) の両方に係数 \(c(s)\) を掛けることで、結果的に logit 全体を \(1/t\) 倍するのと同じ効果を持たせています。LLaMA や Llama 2 向けには、以下の経験的な数式が推奨されています。
\[ c(s) = \sqrt{\frac{1}{t}} = 0.1\ln s + 1 \]
この操作の目的は、周波数をいじったことでズレてしまったattentionの分布を、ひとつのスカラー値を使ってキャリブレーション(再調整)することにあります。帯域ごとの補間だけでは、学習済みのモデルが想定していた logit の動きと完全に一致するとは限りません。そこで全体的なスケールを調整し、モデルが受ける影響をさらに小さくしているのです。

4.4 YaRN の全体像まとめ

ここまでを整理すると、YaRNは単発のテクニックではなく、以下の2つの要素を組み合わせた手法であることがわかります。
  • 帯域別のRoPE変形: 低周波帯は強く補間し、高周波帯はできる限り維持する。
  • グローバルなスケーリング: 変形によって生じる attention logit のズレを再調整する。
この組み合わせによって、PIのように未知の長さへの外挿を避けつつ、高周波帯の解像度も保ち、さらにattentionの効き具合も元の学習状態に近づけることができます。その結果、長い文脈への適応がスムーズになり、大きく文脈長を伸ばす場合でも動作が安定しやすくなります。

4.5 実装の手軽さというメリット

エンジニア目線で嬉しいのは、YaRNの導入に必要な変更がごくわずかで済むという点です。
実際にやるべきことは、「RoPEの周波数計算を帯域別に変えること」と、「\(q\)・\(k\)(または logit)にスカラー係数を掛けること」の2点だけで、attentionのカーネル自体を新しく書き換える必要はありません。論文の中で FlashAttention 2 との整合性がアピールされているのも、これが理由です。
すでに運用しているRoPEモデルを、アーキテクチャや推論サーバーの根幹部分を大改修することなく、現実的なコストで長文脈化できる。これこそが、YaRNの持つ最大の実用的な強みと言えるでしょう。

5. 推論時の拡張:スケール手法の選択と実装上の壁

5.1 固定スケールと動的スケール(Dynamic Scaling)の違い

YaRNを使って実際に推論を行う際、拡張倍率 \(s\) をどのように扱うかについては、大きく分けて2つのアプローチがあります。一つは常に一定の倍率を適用し続ける「固定スケール」で、もう一つは現在処理しているテキスト(系列)の長さに合わせて倍率を変動させる「Dynamic Scaling(動的スケール)」です。
固定スケールの場合、推論の最初から最後まで一貫して以下の倍率を使用します。
\[ s = \frac{L_{\text{target}}}{L_{\text{train}}} \]
一方、Dynamic Scalingでは、現在の系列長を \(l'\) としたとき、次のようにスケールを計算します。
\[ s(l') = \max\left(1, \frac{l'}{L_{\text{train}}}\right) \]
つまり、入力テキストが長くなるのに比例して、徐々に補間の度合いを強めていくという仕組みです。

5.2 なぜDynamic Scalingが有利なのか

固定スケールには、「まだテキストが短いうちから、最終的な最大倍率の補間をかけてしまう」という弱点があります。本来であれば元のRoPEの幾何構造をそのまま保てるはずの短い文脈に対しても、不必要な変形を加えてしまうわけです。
Dynamic Scalingはこの問題を上手く回避してくれます。元の学習長 \(L_{\text{train}}\) に到達するまではRoPE本来の挙動をキープし、それを超えて必要になったタイミングで初めて、なめらかに長文脈向けの形へ移行させます。
この仕組みにより、以下のような多くのメリットが生まれます。
  • 短い文脈を入力した際の性能低下(回帰)を防ぎやすい
  • テキストが長くなっても、性能の劣化がゆるやかになる
  • 学習時に想定していなかった中途半端な長さに対しても柔軟に対応できる
実際のYaRN論文のデータでも、Dynamic-YaRNは比較対象であるDynamic-PIよりも優れたパフォーマンスを示しています。

5.3 KVキャッシュと実装面でのハードル

非常に魅力的なDynamic Scalingですが、実際にシステムへ組み込むにあたっては無視できない実装上のハードルが存在します。
通常、テキスト生成(デコーディング)の過程では計算を効率化するためにKVキャッシュを利用します。もしここで「RoPE適用後のKey」をそのままキャッシュに保存していると、大きな問題が起きます。テキストが長くなって途中でスケール \(s\) の値が変化した瞬間、それまでに保存していた過去のKeyと新しいスケールが全く噛み合わなくなってしまうのです。なぜなら、RoPEの角度は過去のトークンも含めてすべて新しいスケールで再計算されなければならないからです。
したがって、Dynamic Scalingを正しく動かすためには、システムの作りを工夫する必要があります。具体的には、「RoPEを適用する前の状態」を保持しておいて後から適用し直すか、あるいはRoPEをいつでも再計算できるような特殊なキャッシュ設計が求められます。固定スケールと比べると、実際の運用(サービング)環境への要求はかなり厳しくなると言えるでしょう。

5.4 実運用(サービング)における注意点まとめ

実際のプロダクション環境で運用する際は、「モデルの学習時に想定したスケールのルール」と「本番環境での実装」がしっかり一致しているかを必ず確認してください。たとえば、固定スケールで学習させたモデルを本番だけDynamic Scalingで動かしたり、その逆を行ったりすると、評価時と本番時でRoPEの意味合いがズレてしまい本来の性能を発揮できません。
また、最近よく使われるPrefix Caching(プロンプトの共通部分のキャッシュ)や、複数リクエスト間でのキャッシュの使い回しを行う環境ではさらに注意が必要です。スケールの値がリクエストごとに異なると、キャッシュの互換性が失われてしまうためです。
まとめると、推論環境の設計においては「理論上どちらのスケーリング手法が優れているか」だけで決めることはできません。KVキャッシュの仕様、最適化されたFused Kernelとの相性、キャッシュの再利用戦略、バッチ内に混在する様々なテキスト長など、実装上のあらゆる条件を総合的に考慮して判断する必要があります。YaRN自体は既存モデルに導入しやすい優れた手法ですが、Dynamic Scalingを採用する場合は、こうしたシステム側の制約にしっかりと向き合う必要があります。

6. 事後学習の戦略とモデルの評価方法

6.1 長文そのままのファインチューニングが非効率な理由

単純に長いテキストデータを読み込ませてファインチューニング(direct fine-tuning)を行えば、いずれモデルも長文脈に慣れてくれそうに思えるかもしれません。しかし、Position Interpolation(PI)の論文でも指摘されている通り、このアプローチは非常に学習効率が悪く、適応に時間がかかることがわかっています。
その最大の理由は、モデルが長い文章の「知識」を持っていないからではなく、学習済みモデルが前提としていた「位置空間の幾何学的な構造」が突然変わってしまう点にあります。既存のAttentionヘッドは、事前学習で見慣れた位相構造をベースに役割分担をしているため、その前提をいきなり崩されてしまうと、ゼロから再学習するのに近い状態になってしまいます。長文脈への適応でまず何より重要なのは、新しい知識を詰め込むことではなく、「既存のAttentionヘッドを、なるべく負担の少ない形で新しい座標系に再同調させること」です。PIやYaRNが優れているのは、この再同調の際の分布ズレ(ディストリビューション・シフト)を最小限に抑えられる点にあります。

6.2 YaRN の優れた収束特性

では、実際のところYaRNの学習はどれくらいスムーズなのでしょうか。YaRNの論文では、LLaMA 7B を 32k 文脈へ拡張する学習曲線が比較されており、少なくともこの実験設定では、YaRN は PI、NTK-aware、NTK-by-parts よりも早い段階で loss が下がり、その後も低い loss を保っていることが示されています。
YaRN 論文 Figure 2 左: LLaMA 7B を 32k 文脈へ拡張した際の training loss curve 比較
図: LLaMA 7B を 32k 文脈へ拡張したときの training loss curves (YaRN 論文の Figure 2 より引用)
これはYaRNの設計を考えれば非常に理にかなっています。低周波帯ではPIのように未知の領域(OOD)への外挿を防ぎ、高周波帯では既存の局所的なAttentionヘッドの能力を維持しつつ、さらに logit のスケールまで調整しているからです。つまり、YaRNの強みは「モデルにすべてを新しく学び直させない」ことに尽きます。修正すべき帯域だけを大きく変え、そのまま使える帯域は残すことで、追加学習にかかるコストを抑えつつ、収束を早めているのです。
加えて論文の Appendix B.2 では、Llama 2 7B を 4k から 8k へ拡張する比較において、YaRN は PI より少ない 400 steps でもほぼ同等の perplexity を示しており、「少ない追加学習で十分な性能に届きやすい」という実務上の利点も補強されています。

6.3 段階的なコンテキスト拡張のすすめ

また、目標とするコンテキスト長まで一気に拡張する必要はありません。YaRNの論文では、段階的に長文脈化を進めていくアプローチが有効であると示されています。
例えば、まずは16kの長文脈モデルを作り、そのチェックポイントを足場にして32k、64k、そして128kへとステップアップしていくようなイメージです。このように少しずつコンテキスト長を伸ばすことで、一度に発生するデータ分布の変化を和らげ、学習をより安定させることができます。この戦略は実務的にも非常に便利です。超長文の高品質な学習データが十分に用意できない場合でも、まずは手に入る範囲のデータでモデルを安定させ、その後は推論時の拡張機能や少量の追加学習を組み合わせることで、実用的な長文脈モデルを構築できる可能性があります。

7. YaRNと他手法との比較

7.1 評価のポイント

YaRNを評価する際は、単に「どれだけ文脈を長くできるか」というスペック面だけを見てもあまり意味がありません。実務においては、「既存のRoPEモデルにどれだけ簡単に組み込めるか」「追加学習のコストはどの程度か」「局所的な位置関係の解像度を維持できるか」、そして「推論サーバーの実装に悪影響を与えないか」といった観点が重要になります。
この基準に照らし合わせると、YaRNの最大の強みは「既存モデルとの相性の良さ」と「高倍率で拡張した際の安定性」を両立している点にあります。一方で、位置表現をゼロから設計するような新規の事前学習プロジェクトにおいては、少し評価の土俵が変わってきます。

7.2 RoPE系手法との比較

まずは、RoPEをベースにした他の拡張手法と比べてみましょう。
最もシンプルなのは、学習時と同じ位置表現をそのまま長い系列に適用する「単純外挿」ですが、これは学習範囲外の未知の位相差に直面するため、長距離になると注意機構が破綻しやすいという問題があります。
この破綻を防ぐために提案されたのが「Position Interpolation(PI)」です。PIは全体を学習範囲のサイズに圧縮(補間)するため動作は安定しますが、すべての周波数帯を一律に縮めてしまうため、高周波帯が担っていた「近接トークンの細やかな解像度」まで犠牲になってしまいます。
そこで、高周波帯をなるべく温存しようというアプローチとして「NTK-aware」が登場しました。方向性はYaRNに非常に近いのですが、設計が経験則に頼っており、目的の拡張倍率に合わせてパラメータを直接コントロールしにくいという弱点がありました。YaRNは、この帯域ごとの補間を「NTK-by-parts」として明確に数式化し、さらにattention logitの温度調整も組み込むことで、より直感的でコントロールしやすい設計を実現しています。
なお、XPosやLeXといった長さ外挿を意識した手法もありますが、これらは主にモデルの新規学習(フルスクラッチ)を想定しているため、「すでにRoPEで学習済みのモデルを後から拡張する」というYaRNの目的とは少し用途が異なります。

7.3 非RoPE系手法との比較

RoPE以外の位置表現には、絶対位置埋め込み(sinusoidalや学習ベース)をはじめ、Shaw型やT5型の相対バイアス、ALiBiなど、さまざまな優れた手法が存在します。
たとえばALiBiは、「短い系列で学習し、推論時に長い系列に適用する(Train Short, Test Long)」という設計思想において非常に魅力的です。しかし、これらの手法をYaRNと直接比較するのは適切ではありません。なぜなら、すでにRoPEの幾何構造に最適化されて学習を終えたモデルに対して、ALiBiやT5型のバイアスを「後付けのパッチ」としてそのまま差し替えることはできないからです。これらはあくまで新規設計時の選択肢として考えるべきでしょう。

7.4 YaRNを採用すべき条件

これらを踏まえると、YaRNを採用すべきプロジェクトの条件が明確になってきます。具体的には、以下の4つの要件を満たす場合にYaRNは最も適しています。
  • ベースとなるLLMがすでにRoPEを採用していること。
  • モデルのアーキテクチャ自体には大きな変更を加えたくないこと。
  • フルスクラッチでの再学習ではなく、比較的コストの低い継続学習(fine-tuning)で対応したいこと。
  • FlashAttentionなどの既存の推論・サービング環境との互換性を保ちたいこと。
つまりYaRNは、「理想的な位置表現は何か」という学術的な一般論を追求する技術というよりは、「既存のRoPEベースLLMを、現実的なコストで手っ取り早く長文脈化したい」という現場のニーズに真っ直ぐに応える、非常に実務的なソリューションと言えます。

7.5 注意点と限界

もちろん、YaRNがすべての課題を解決する万能薬というわけではなく、いくつか注意すべき限界もあります。
  • どんなに設計を工夫しても、元の短い文脈における性能低下(劣化)を完全にゼロにすることはできません。
  • 文脈長に応じて倍率を変えるDynamic Scalingを採用する場合、KVキャッシュの管理など推論システム側の実装条件が厳しくなります。
  • 当然ですが、RoPE以外の位置表現を使っているモデルには適用できません。
  • 言語モデルの長文脈への対応力は位置表現だけで決まるわけではなく、学習データの分布やタスクの特性によっては、別の根本的なアプローチが必要になる場合もあります。
YaRNは、「RoPEモデルの既存の資産をなるべく壊さずに長く使う」ための条件付きの強力なツールとして活用するのが良いでしょう。

8. まとめ

YaRNは、RoPEベースのLLMにおける文脈長の拡張を、単なる「位置データの延長」としてではなく、「周波数帯ごとの役割分担」と「アテンション(注意)分布の再調整」という視点から捉え直した画期的な手法です。具体的には、低周波帯に対しては学習範囲外の未知のデータ(OOD)を避けるためにしっかりと補間を行う一方で、高周波帯に対しては局所的な並び順の情報を保つために元の構造を極力残すようにアプローチします。その上で、こうした変更によって生じたattention logitのズレを全体的に補正することで、追加学習の効率をグッと上げ、文脈長を大幅に伸ばした場合でも安定したパフォーマンスを実現しています [1]。
このように考えると、YaRNの本当の価値は「ただ長く読み込めるようになる」ことではありません。「すでにRoPEで学習を終えた注意ヘッドが依存している位相幾何(モデルが前提とする構造)を、最小限の手直しでそのまま延長できる」という点にあります。したがって、既存のRoPEモデルの良さを活かしつつ、現実的なコストで長文脈化したい場合には、YaRNが非常に有力な選択肢となります。
一方で、位置表現をゼロから選べる新規の事前学習や、長さへの対応そのものをまったく別のアプローチで最適化したいケースでは、YaRNにこだわらず、他の手法も含めて設計全体を幅広く検討することをおすすめします。

9. 参考文献

本稿の執筆にあたり、以下の文献を参照しています。
  1. Bowen Peng, Jeffrey Quesnelle, Honglu Fan, Enrico Shippole, et al. YaRN: Efficient Context Window Extension of Large Language Models. arXiv:2309.00071
  2. Jianlin Su, Yu Lu, Shengfeng Pan, Ahmed Murtadha, Bo Wen. RoFormer: Enhanced Transformer with Rotary Position Embedding. arXiv:2104.09864
  3. Shouyuan Chen, Sherman Wong, Liangjian Chen, Yuandong Tian. Extending Context Window of Large Language Models via Position Interpolation. arXiv:2306.15595
  4. Ofir Press, Noah A. Smith, Mike Lewis. Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation. arXiv:2108.12409
  5. Yutao Sun, Li Dong, Barun Patra, et al. A Length-Extrapolatable Transformer. arXiv:2212.10554
  6. Ashish Vaswani, Noam Shazeer, Niki Parmar, et al. Attention Is All You Need. arXiv:1706.03762
  7. Peter Shaw, Jakob Uszkoreit, Ashish Vaswani. Self-Attention with Relative Position Representations. arXiv:1803.02155
  8. Colin Raffel, Noam Shazeer, Adam Roberts, et al. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683
  9. Amirhossein Kazemnejad, Inkit Padhi, Karthikeyan Natesan Ramamurthy, Payel Das, Siva Reddy. The Impact of Positional Encoding on Length Generalization in Transformers. arXiv:2305.19466