長い文書を扱うLLMの弱点である「KVキャッシュの肥大化」を、推論時の学習で解消する論文が公開されました。Latent Compaction with Test-Time Trainingは、文書ごとに小さなキャッシュを学習して作り直す手法を提案しています。RULER(長い文脈での検索や推論の力を測るベンチマーク)で、32倍に圧縮しても正答率は96.7%でした。同じ条件の比較手法KVZip+は40.0%にとどまっています。モデルの重みは変えず、コードも公開されています。
背景と文脈
LLMは文章を生成するとき、過去の入力に対するattention(どの単語に注目するかを計算する仕組み)の中間結果を保存しています。これがKVキャッシュ(Key-Valueキャッシュ)です。入力が長いほどキャッシュは大きくなり、メモリ消費と計算コストが増えます。長い契約書やコードベースをまるごと読ませる用途では、この負担が大きな壁になります。
これまでの圧縮手法の多くは、重要度の低い部分を捨てる発想でした。ただ、後からどんな質問が来るかは事前にわかりません。捨てた部分に答えが含まれていれば、正しく答えられなくなります。論文は、この「未知の質問に備えて情報を残す」難しさを課題に挙げています。
KVZip+は、この分野の比較対象として使われた手法です。圧縮率を上げるほど精度が落ちる傾向は、従来手法の共通の悩みでした。今回の論文は、その常識を学習で覆そうとしています。
技術/ビジネス面

著者らの発想は、KVキャッシュそのものをニューラルネットのように扱って最適化することです。推論の直前に、対象の文書専用の小さなキャッシュを学習します。この学習をtest-time training(テスト時学習:推論時にその入力に合わせてパラメータを更新する手法)と呼びます。モデルの重みは固定したまま、キャッシュの中身だけを調整します。
手順は2段階です。まず、キャッシュの初期値を決めます。元の情報をどれだけ復元できるかという再構成の重要度、元のモデルのattention、キー空間での多様性の3点を使って選びます。次に、元のモデルが出す注意の出力と正規化の値を一致させるように学習します。続いて、キャッシュ全体を同時に調整します。この段階では、完全なキャッシュを持つ元のモデルを教師にしたdistillation(蒸留:大きなモデルの出力を手本に小さな仕組みを学ばせる手法)を行います。
学習に使うのは、文書に関する汎用的なプロンプトだけです。後で出る質問や正解は一切見ません。つまり、特定の質問に合わせた不正は含まれず、どんな質問にも備える形になっています。
評価はRULERのほか、LongBench(長文理解の総合ベンチマーク)とPhonebook Lookup(電話帳のような大量の対応表から値を引く検索課題)で行いました。同じメモリ予算で比べた従来の圧縮手法に対し、いずれも大きな改善を示したと報告しています。QwenとMiniCPMという別系統のモデルでも、検索精度が上がりました。
これからどうなるか
この手法の価値は、長文処理のコスト構造を変える可能性にあります。キャッシュが32分の1になれば、同じGPUメモリで扱える文書数や同時接続数が大きく増えます。RAG(Retrieval-Augmented Generation、検索拡張生成)で文書全体を毎回読み込む構成では、メモリ試算が変わるかもしれません。
実装者としては、同じ文書に何度も質問するユースケースで特に有望です。社内マニュアルや仕様書のように、文書が固定で質問が繰り返される場面なら、一度の学習コストを回収しやすくなります。逆に、文書が毎回変わる用途では、学習時間が負担になる点に注意が必要です。
論文が示した結果は、報告された範囲のベンチマークに基づきます。実際のサービスで速度や品質がどう出るかは、公開コードで各自が検証することになります。他のモデルサイズでの追試が増えるかが、評価を固める鍵です。
圧縮の質を測る観点も参考になります。単に平均の正答率を見るだけでなく、圧縮率ごとに精度がどう下がるかを確かめることが大切です。この論文は32倍という大きな圧縮率で結果を示しており、実運用で許容できる圧縮率を見積もる材料になります。自社のデータで同様の曲線を描いてみると、導入判断がしやすくなるでしょう。
まとめ
Latent Compactionは、KVキャッシュを学習して作り直し、RULERで32倍圧縮でも96.7%の正答率を保ちました。捨てるのではなく学ぶという発想が、長文処理のコスト削減に新しい道を開きます。
参考リンク
アイキャッチ画像: Photo by Akshar Dave🌻 on Unsplash
