LLMプロバイダはキャッシュ読み込みのちょっとした改善でかなりの利益を見込める

論文紹介

ChatGPT, ClaudeなどのLLMプロバイダをAPIを通して利用するとき、入力トークンのキャッシュを利用できます。会話の内容を毎回全て読み直すのではなく、入力の結果をキャッシュしておくことでAPIの利用料金を抑えることができます。
一見すると利用者のお財布に優しい機能であるように思えますが、実際は結構なマージンをとっているであろうことがわかりました。試算によると、キャッシュによってAPIの料金は一般的に1/10になるのに対して、実際の計算量は1/50にまで削減できるというのです。この間にある5倍ぶんがマージンというわけ。
今回の種本は”Can I Buy Your KV Cache?”というarXivの論文です。誠実さのために書いておくと、先程述べた主張はこの論文の一部に過ぎず、全体としては「KVキャッシュをもっと広く共有しよう」という主張です。
KVキャッシュとは、入力トークンに対してPrefillという作業を行った後の産物です。Prefillが結構重い計算になります。トークンを読むための作業(Prefill)とその産物(KVキャッシュ)であることを知っていれば問題ありません。

AIエージェントは同じ計算を量産している

Claude codeやCodexなどを始めとするAIエージェントは、LLMを利用する際に同じ計算を何度も繰り返しています。たとえばAIエージェントが調べものをする際にQiitaを参照し、LLMに読ませたとします。きっと他のAIエージェントもQiitaの同じ記事を参照したことがあるはずです。それぞれのAIエージェントが同じ記事を読み込む(トークンとして入力する)ということは、Prefillで全く同じ計算をして、全く同じKVキャッシュを生成することになります。
こういった人気の記事のKVキャッシュをあらかじめLLMプロバイダーが保存しておいて適宜再利用することで、同じKVキャッシュを何度も生成しないようにしよう、ということです。
現在のキャッシュ機能では過去の会話をセッション内でキャッシュするだけですが、この提案では、再利用されやすい文書のキャッシュをサービス全体で共有することになります。この仕組みは、現在のキャッシュの仕組みを流用することで簡単に実現できるとのこと。
このアイデアをQwen3-4Bで試したところ、計算量は通常のキャッシュに比べて9倍~50倍削減されました。この開きはキャッシュの大きさ(文書の長さ)によるもので、計算量は文書の長さの2乗に比例して両者の差が開いていくとのことです。

料金を試算してみる

3774トークンの文書を8000万のエージェントが利用する場合、従来どおりそれぞれでKVキャッシュを生成した場合約150万ドルかかる一方で、KVキャッシュをエージェント間で共有した場合は約3万ドルに抑えられます。50倍です。
現在、キャッシュ読み込みにかかるAPI利用料は単なるトークン入力に対して1/10程度の価格であることが多いですが、このKVキャッシュ共有を用いれば、文書の参照にかかる部分の計算コストを1/50、つまり1/10のさらに1/5にまで圧縮できます。この仕組みを導入しつつ今までと同じようにAPI利用料金を1/10に固定することで、この1/5の部分をLLMプロバイダが大きなマージンとして持っていくことができます。消費者としてはその分安くしてほしいですが、そうはしないでしょう。
この仕組みが実現すると実質的にユーザーがKVキャッシュを買うかたちになるので、この論文のタイトルは”Can I Buy Your KV Cache?(KVキャッシュを買えますか?)”であるわけです。

ローカルLLMでこの仕組みを取り入れてもLLMプロバイダほどのうまみはない

生成されるKVキャッシュは、たとえ同じトークンを入力したとしてもモデルごとに異なります。ローカルでLLMを動かすときは頻繁にモデルをとっかえひっかえする人もいるうえ、データ転送のコストが高すぎてコンピュータ同士でKVキャッシュを共有することは現実的ではありませんから、LLMプロバイダほど効率的にKVキャッシュを使うことはできません。しかしプログラミング言語・フレームワークのドキュメントのようによほど何度も参照するものであれば時短にはなるでしょう。Prefillの待ち時間は特にエージェンティックコーディングを行うときの待ち時間の大きな部分を占めます。

まとめ

  • 頻繁に参照される文書のKVキャッシュをプロバイダ内で共有することでコストを抑えられる
  • ローカルLLMでも一応恩恵はありそう

種本

Can I Buy Your KV Cache?

コメント

タイトルとURLをコピーしました