LM-Infinite(エルエムインフィニット)
ACL 2024採択の長文コンテキスト対応手法。Λ字型(ラムダシェイプド)アテンション制約によりO(1)メモリで任意長シーケンスを処理。ファインチューニング不要。
LM-Infinite
LM-Infinite(Language Model with Infinite Context)は、LLMが学習時に見たコンテキスト長を推論時に大幅に超えても安定して動作するための手法で、2023年末に発表されACL 2024に採択された研究成果。既存モデルへのファインチューニングや重み変更なしに適用できる点が特徴。
コアアイデア:Λ字型アテンション
LM-Infiniteの核心は、アテンション計算を全トークン対全トークンから特定のパターンに制限する「Λ字型(Lambda-shaped)アテンション」マスクにある。
保持するトークン:
-
Global tokens(グローバルトークン): シーケンス冒頭の固定数のトークン(デフォルト約50-200)
- 入力の全体的なコンテキスト・指示・ドキュメントヘッダ等を含む
- どのトークンからでも常にアテンション可能
-
Local tokens(ローカルトークン): 現在位置から直前のウィンドウ内のトークン(デフォルト数百〜数千)
- 直近の文脈・局所的な文法構造を処理
- スライディングウィンドウとして動的に移動
削除するトークン: グローバル領域とローカルウィンドウの間の中間トークン(距離的に遠く、冒頭でもない部分)はアテンション計算から除外。
実装の概要
# LM-Infinite アテンションマスク生成
def lambda_shaped_mask(seq_len, global_n=100, local_n=2048):
mask = torch.zeros(seq_len, seq_len, dtype=torch.bool)
for i in range(seq_len):
# グローバルトークン(冒頭)
mask[i, :global_n] = True
# ローカルウィンドウ(直近)
start = max(global_n, i - local_n + 1)
mask[i, start:i+1] = True
return mask
なぜ冒頭トークンが重要か
LM-Infiniteの分析で明らかになった重要な発見として、LLMのアテンション機構は「アテンションシンク(Attention Sink)」と呼ばれる現象を示す。冒頭の数トークン(特に最初のトークン)は全アテンションヘッドにわたって異常に高いアテンション値を受け取る傾向があり、モデルの計算安定性に寄与していると考えられる。StreamingLLMも同様の発見を独立して報告している。
StreamingLLMとの違い
| 特性 | LM-Infinite | StreamingLLM |
|---|---|---|
| 発表 | ACL 2024 | ICLR 2024 |
| コンテキスト範囲 | 全長対応(中間スキップ) | ストリーム型(古い履歴破棄) |
| 全コンテキスト保持 | 不可(中間切り捨て) | 不可(ローリング) |
| テキスト圧縮 | なし | なし |
性能と評価
学習コンテキスト長をはるかに超えた入力でも、標準的なRoPEモデルが発散するような入力長でperplexityを安定して維持することが論文で示されている。ただし中間部分のトークンが捨てられるため、文書中盤の詳細情報を参照するタスクでは性能限界がある。
利用シナリオ
- 長期チャット: 会話が長くなっても最初のシステムプロンプトと直近の発言を保持
- ストリーミング文書処理: リアルタイムで届くドキュメントの要約・分類
- コード補完: 大規模コードベースの読み込みと継続的なコーディング支援
- ニュース解析: 継続的に更新されるニュースフィードのリアルタイム解析
LM-Infiniteは理論的に無制限のコンテキスト処理を可能にしつつ、O(1)メモリ(ローカルウィンドウサイズに対して定数)で動作する実践的かつ理論的に整備されたアプローチとして注目されている。