AI が覚えていないのは、何度も伝えていること

すべての AI エージェントはシステムプロンプトから始まります。同じ指示を毎回再計算するコストと、プレフィックスキャッシュの効果や会話型ワークロードでの課題を探ります。

Allen Helton Allen Helton
頭上に疑問符を浮かべた困り顔のロボットと向かい合うリス

すべての AI エージェントは、システムプロンプトから始まります。

丁寧な言葉で回答するよう指示する数文の場合もあれば、業務の背景、製品知識、動作上の制約を記した数千トークンの場合もあります。いずれにしても、アプリケーションが送るすべてのリクエストに、その全文が含まれます。一語一語、一トークン一トークン、毎回まったく同じです。

そして毎回、GPU はそれを一から計算し直します。

一日に 10,000 件の会話を処理するサポートボットを動かしているなら、同じシステムプロンプトの再計算に 10,000 回分の費用を払っています。500 トークンのプレフィックスが、毎回まったく同じ結果を生む 500 万トークン分の重複した推論になります。モデルはそのコンテキストを既に「理解」しています。ただ、インフラがそれを再利用できないのです。

プレフィックスキャッシュはこの問題に対応し、多くの本番用推論エンジンに既に実装されています。ある種のワークロードでは非常によく機能します。問題は、実際の AI 利用の大半が、プレフィックスキャッシュの最適化対象となったワークロードとは異なることです。実際に機能する範囲と、機能すると思われている範囲の隔たりは、多くのチームがまだ測定できていないコストを生んでいます。

プレフィックスキャッシュが得意なこと

推論中、LLM はトークンを順に処理し、それまでに読んだすべての内容のアテンション状態を表す KV キャッシュを構築します。二つのリクエストが同じトークン列で始まるなら、その KV 状態を再計算せずに再利用できます。

システムプロンプトがよい例です。そのトークンの KV キャッシュを一度計算し、生成されたブロックを保存すれば、以降のリクエストでは、プロンプトの新しい部分へ直接進めます。

企業の RAG 環境では、削減効果はさらに大きくなります。多くのユーザーが同じ文書やナレッジベースに質問すると、リクエストのコンテキストの大部分は共通です。プレフィックスキャッシュがなければ、各リクエストが共有資料の再計算コストをすべて払います。使えば、実質的に一度で済みます。

vLLM や SGLang などのエンジンは、既にこの最適化を実装しています。変化しない共有プレフィックスには、明快で効果的な解決策です。

ブロック境界が一致しない問題

KV キャッシュの状態は、セッションごとの一つの連続したオブジェクトとしては保存されません。固定サイズのトークンブロックに分かれます。たとえば vLLM の既定値は 16 トークンです。プレフィックスキャッシュは、ブロックのハッシュを計算し、一致するハッシュが既にキャッシュにあるかを調べます。

システムプロンプトのような静的プレフィックスでは、ほぼ完全に再利用できます。トークンとブロックのハッシュが変わらず、安定してヒットします。

伸び続ける会話では、ほぼ毎ターン、その前提が崩れます。

ユーザーがターンを加えると、トークン列全体が変化します。会話がブロックの境界でちょうど終わることはほとんどありません。ターン末尾の不完全なブロックは、新しいトークンが来ると内容が変わるため、キャッシュできません。次のターンが加わると、それらのトークンは列の途中に入り、その後のブロックの区切り方やハッシュが変わります。それまで再利用できたブロックの境界が合わなくなり、後続へミスが連鎖することがあります。

そのため、会話型のワークロードでは、特にセッションが長く動的になるにつれ、プレフィックスキャッシュのヒット率がチームの期待を下回ることがよくあります。

会話は通常のキャッシュワークロードと同じようには振る舞わない

プレフィックスキャッシュが最もよく機能するのは、リクエストの先頭が安定しているときです。会話はその逆です。

ターンごとにトークン列の形が変わり、境界が動きます。時間がたつほど、再利用できる機会が減っていきます。

多くのベンチマークは、同じプロンプトを繰り返したり、大きな静的プレフィックスを使ったりして、再利用を最大化するように作られています。実際の会話は、ターンごとに意味が積み重なります。コンテキストが変化するため、再利用が構造的に難しくなります。

このため、会話型推論は従来のキャッシュ問題とは根本的に異なります。再利用は、ブロックサイズやハッシュ戦略だけでは決まりません。状態がどう構成され、セッションを通じてどう引き継がれるかに依存します。

プレフィックスキャッシュは、共有された静的コンテキストという、容易なケースを解決しました。

より難しく、しかもより一般的なのは、長く続くやり取りです。そのワークロードを効率よく支えるには、単なるトークン列ではなく、会話の構造を理解するインフラが必要です。

何十年もの間、キャッシュシステムはデータを中身の分からないバイト列として扱ってきました。二つのバイト列が一致すれば再利用でき、一致しなければ再計算が避けられませんでした。

会話型推論は、その前提を覆します。AI を提供するコストは、処理するデータ量だけでなく、そのデータが時間とともにどう変化するかによって、ますます左右されます。

プレフィックスキャッシュは、過去を繰り返すコストを減らしました。次世代のインフラには、過去を記憶し続けるコストの管理が必要です。

Momento は、会話の状態が大規模な推論の効率に与える影響を積極的に研究しています。長期にわたる AI ワークロードを運用し、同じような課題に直面している方と、ぜひ知見を交換したいと考えています。

あわせて読みたい