広告

KVキャッシュ・アーキテクチャがどのように進化してきたかを探る――何を覚えるかを選択するモデル構造が「コンテキスト・ロット(文脈の腐敗)」を回避するのに役立つ

Reddit r/LocalLLaMA / 2026/3/29

💬 オピニオンSignals & Early TrendsIdeas & Deep AnalysisModels & Research

要点

  • この記事では、複数のLLMアーキテクチャ間での「トークンあたりのKVキャッシュ(メモリ)コスト」を比較し、GPT-2(300 KiB/token)からLlama 3(128 KiB/token)へ、さらにDeepSeek V3(68.6 KiB/token)へと明確な下向きのトレンドがあることを示し、その差がアテンション設計の計測結果によって説明される。
  • grouped-query attention(GQA)、潜在/KV圧縮、スライディングウィンドウによる選択的アテンションといったアーキテクチャの変更が、キャッシュサイズを削減しつつ、ベンチマーク性能の維持とパープレキシティ(当惑度)の低下を最小化することを目指す仕組みを説明する。
  • KVキャッシュベースのトランスフォーマーと、KVキャッシュをそもそも使わないSSM/Mamba型アプローチを対比し、後者は各トークンごとに更新される固定サイズの状態を維持することで、保存/アテンションの負担をリアルタイム圧縮へと振り替える点を述べる。
  • 著者は、短命なKVキャッシュ(数分)と恒久的なモデル重みの間に構造的な「ギャップ」があることを強調し、中期的なメモリはRAG、ベクターデータベース、ファイルシステム、システムプロンプトといったヒューリスティックを通じて外部的に提供する必要があると論じる。
  • コンテキスト劣化(「context rot(文脈の腐敗)」)と圧縮について扱い、要約ポリシーは精度を失い得ることを指摘する。加えて、CursorのRL(強化学習)に基づく学習済み圧縮は有望だが、現時点では主にコーディングのベンチマークでのサポートに限られていると述べる。

最近KVキャッシュを深掘りして、実際の数字をアーキテクチャごとに並べて見ると、その進化の流れが非常に面白いと感じました。

セバスチャン・ラシュカのLLM Architecture Galleryには、数十のモデルファミリについて、トークンごとのKVキャッシュコストが掲載されています。軌跡は次のとおりです:

• GPT-2(2019):300 KiB/トークン。マルチヘッド注意では、各ヘッドがそれぞれ独自のキーとバリューを保持します。共有なし。4,000トークンの会話 = モデルの重みとは別に、キャッシュだけでGPUメモリ約1.2GB。

• Llama 3(2024):128 KiB/トークン。グループ化クエリ注意(GQA)で、複数のクエリヘッドが同じKVペアを共有します。GPT-2のコストの半分未満。洞察は、実際には多くのヘッドが冗長な表現を学習していた、という点です。

• DeepSeek V3(2024):68.6 KiB/トークン。マルチヘッドの潜在注意がKVペアを低次元の潜在空間に圧縮し、推論時にデコンプレスします。これは671Bパラメータのモデル(MoEにより37Bが有効)です。V3のアーキテクチャが土台にしているDeepSeek V2のアブレーション研究では、圧縮表現が複数のベンチマークで標準のMHAと同等、あるいはわずかに上回ることが示されました。損失のある圧縮が、元のものを上回る。

• Gemma 3(2025):GQAに加えてスライディングウィンドウ:ローカル〜グローバルの注意層が5:1、ローカル層は最大1,024トークンにのみ注意します。攻撃的なフィルタリングによるパープレキシティ損失はほとんどありません。

• Mamba/SSM(2023):そもそもKVキャッシュがありません。固定サイズの隠れ状態を持ち、トークンごとに更新します。モデルは、すべてを保存して後から注意するのではなく、リアルタイムに何を圧縮するかを決めます。

私が最も関心を持っているのは、「作業メモリ」と「恒久的な知識」のギャップです。KVキャッシュは数秒〜数分持続します(報告されているキャッシュ寿命は、おおむね5〜10分で、提供元や負荷によって変動します)。そして、その後は消えます。学習済みのモデル重みは恒久的です。この2つの間には何もありません。ネイティブな中期記憶はなく、「先週の火曜日にこのユーザーと話した」というためのアーキテクチャ上の枠もありません。単なるギャップです。

そのギャップを埋めるものはすべてヒューリスティックです。RAG、ファイルシステム、ベクトルDB、厳選されたコンテキストを運ぶシステムプロンプト。アーキテクチャ上の空白に架け橋をかけるものです。動きますが、内部に中期記憶を持たないモデルに対して、モデル外のルックアップシステムを後付けしただけです。

この圧縮(compaction)の問題がそれを象徴しています。コンテキストが大きくなりすぎると、モデルは自分自身の履歴を要約し、キャッシュをクリアして、その要約から続行します。6つのルールからなる出版方針は「編集方針に関する何か」になります。金額は精密さを失い、モデルは何を失ったのかを知る方法がありません。それでもモデルは自信を持って、劣化したコンテキスト上で動作し続けます。

Cursorの学習による圧縮アプローチ(プロンプトで圧縮させるだけでなく、RLでモデルがうまく自己要約できるように学習させる)は有望ですが、その証拠は1つのコーディングベンチマークだけです。コードには明確な報酬シグナルがあります。テストに通るか、通らないかです。編集メモ、戦略的計画を圧縮する場合はどうでしょうか。あるいは、別の40メッセージ先では重要な詳細が不要になるような会話では? 隠れた失敗(サイレントな失敗)では、圧縮は盲目のままです。

ローカルで長い会話を動かしている人たちが、コンテキスト劣化について何か気づいたことはありますか。モデルがはっきりと筋を見失うところに到達しますか? そしてMambaや他のSSMを扱っている人にとっては、長いコンテキストでの固定状態というトレードオフは、TransformerのKVキャッシュと比べて実際にはどう感じられますか?

submitted by /u/monkey_spunk_
[link] [comments]

広告