AI・機械学習
上級

Context Window Scaling(コンテキストウィンドウスケーリング)

LLMの学習時コンテキスト長を推論時に外挿して拡張する技術群。位置エンコーディングの補間・外挿手法(NTK-Aware Scaling、Dynamic NTK等)により、追加学習なしまたは最小限のファインチューニングで対応長を数倍に伸ばす。

0 回閲覧
0 いいね

Context Window Scalingとは

Context Window Scaling(コンテキストウィンドウスケーリング)とは、LLMが学習時に使用したコンテキスト長を超えて推論時に長い入力を処理するための位置エンコーディング拡張技術の総称である。学習コスト(数百万ドル規模)を再度かけずに対応コンテキスト長を拡張できる点が最大の利点である。

位置エンコーディングとスケーリングの関係

Transformerモデルはトークンの順序情報を位置エンコーディング(Positional Encoding)で表現する。現代のLLMの主流はRoPE(Rotary Position Embedding)であり、トークン位置を回転行列として埋め込む。しかし、RoPEは学習時に見た最大位置までしか正確に機能せず、それを超える位置では出力が急速に劣化する。

主要なスケーリング手法

Position Interpolation(PI)

学習済みの位置範囲[0, L]に新しい位置[0, L']を線形に圧縮してマッピングする。Meta Researchが提案し、LLaMA 2の4K→32K拡張に使用された。実装が単純だが、短いコンテキストでの性能がわずかに劣化する。

NTK-Aware Scaling

RoPEの各周波数成分に異なるスケーリング係数を適用する。高周波成分(近距離の位置関係)はほぼそのまま維持し、低周波成分(遠距離の位置関係)のみを圧縮する。追加学習なしで4倍程度の拡張が可能。

Dynamic NTK

推論中にコンテキスト長に応じてNTKスケーリング係数を動的に調整する。短い入力では元の精度を維持し、長い入力でのみスケーリングを適用する。LLaMAコミュニティで広く採用されている。

手法追加学習拡張倍率短文性能維持
Position Interpolation短時間FT推奨8倍やや低下
NTK-Aware不要〜短時間FT4倍良好
Dynamic NTK不要4〜8倍良好
YaRN短時間FT(400step)16〜64倍優秀
Code Llama方式長時間継続事前学習4倍(16K)優秀

実装上の考慮点

  • ファインチューニングデータ: 拡張後のコンテキスト長に対応した長文データが少量でも必要な手法がある
  • Attention Sinkの保持: 先頭数トークンのAttention重みが異常に高い現象(Attention Sink)はスケーリング時も考慮が必要
  • 段階的拡張: 4K→16K→64Kのように段階的に拡張するほうが一度に大きく拡張するより安定する

FAQ

Q1: 追加学習なしでコンテキスト長を拡張できる手法はありますか?

A1: Dynamic NTKやNTK-Aware Scalingは追加学習なしで4倍程度の拡張が可能である。ただし拡張倍率が大きくなるほど品質劣化が起こるため、8倍以上の拡張にはYaRNなど短時間ファインチューニングを伴う手法が推奨される。

Q2: スケーリング後のモデルは短いプロンプトでも性能が落ちますか?

A2: 手法により異なる。Position Interpolationは短文でわずかに劣化するが、Dynamic NTKやYaRNは短い入力では元の挙動を維持するよう設計されている。

Q3: どの手法を選べばよいですか?

A3: 手軽に試すならDynamic NTK(コード変更のみ、4倍拡張)、本格的な拡張にはYaRN(400ステップ程度のFTで64倍拡張)が推奨される。