Skip to main content
PromptQuorumPromptQuorum

ローカルLLMのプロンプトキャッシュとは?

クイック回答

プロンプトキャッシュは、プロンプトのプレフィックスについて計算されたキー・バリュー(KV)キャッシュを保存し、後続のリクエストが同じプレフィックスを共有する場合に再計算を不要にする仕組みです(固定のシステムプロンプト、再利用される文書、過去の会話ターンなど)。プレフィックスが繰り返されるワークロードではプロンプト処理時間を大幅に短縮しますが、すべてのリクエストが無関係であれば効果はありません。

  • プロンプトのプレフィックスのKVキャッシュを保存するもので、モデルの出力そのものではない
  • 最大の効果:長い固定システムプロンプト、再利用される文書、複数ターンの会話
  • 呼び出しごとに共有プレフィックスがない単発リクエストには効果なし

更新: 2026年7月15日

Technique & Concept Explainers中級

重要なポイント

  • プロンプトキャッシュはプロンプトのプレフィックスについて計算されたKVキャッシュを保存し、後のリクエストが同じトークンを再処理する代わりに再利用できるようにする
  • 共有されるプレフィックスが大きく、繰り返される頻度が高いほど高速化の効果も大きい — 数千のリクエストで再利用される長く変化しないシステムプロンプトは大きな恩恵を受ける
  • ほとんどのローカルサービング環境では複数ターンの会話が自動的に恩恵を受ける。新しいターンごとにそれまでの会話全体をプレフィックスとして共有するため
  • キャッシュはプロンプト処理(入力側)にのみ効果があり、トークン生成(出力側)には効果がない — 最初のトークンが出るまでの時間を短縮するのであって、生成開始後のトークン毎秒には影響しない

キャッシュが実際に処理を高速化する仕組み

プロンプトを処理するとは、モデルが応答の生成を始める前に、入力の各トークンについてキー・バリュー(KV)表現を計算することです。このプロンプト処理のステップは生成が始まる前に発生し、そのコストはプロンプトの長さに比例します。キャッシュがなければ、2,000トークンのシステムプロンプトは、毎回バイト単位で同一であっても、リクエストのたびに完全に再処理されます。

キャッシュは、特定のプレフィックスについて計算されたこのKV表現を、正確なトークン列に紐づけて保存します。新しいリクエストが同じトークンで始まる場合、キャッシュされたKV値がそのまま再利用され、プロンプトのうち新しい・未キャッシュの部分のみが処理されます。実際の効果として、入力の大部分を再計算する必要がなくなるため、キャッシュがヒットした場合は最初のトークンが出るまでの時間が大幅に短縮されます。

これが、複数ターンの会話がほぼ自動的に恩恵を受ける理由です。会話の3ターン目には1ターン目と2ターン目がプレフィックスとして含まれるため、キャッシュを意識したサービング環境では、会話履歴全体ではなく最新のターンのみを処理すれば済みます。

実際に恩恵を受けるためのプロンプト構成

  • **共有される変化しない内容を先頭に置く。** リクエスト間で同一のまま変わらないシステムプロンプト、指示、参照文書は、リクエストごとに異なる可変部分より前に置きます。キャッシュは完全一致するプレフィックスにのみ機能するため、最初の相違点より前の部分が再利用の対象になります。
  • **共有プレフィックスをリクエスト間でバイト単位で同一に保つ。** システムプロンプト内のたった1文字の違い(タイムスタンプやランダムなIDなど)でもプレフィックスの一致が崩れ、完全な再処理を強制されます — リクエストごとに変化する部分は、再利用可能な内容の後、プロンプトの末尾に移動させます。
  • **無関係な単発リクエストにキャッシュの効果を期待しない。** 共有される前提のない単発の質問が中心のワークロードでは、キャッシュが再利用できるものがありません — このテクニックの価値は、トラフィックのうちどれだけ実際に共通のプレフィックスを共有しているかに比例します。
  • **長時間続く会話は、キャッシュ保持設定の恩恵を最も受けます。** サービング環境がキャッシュされたプレフィックスを破棄するまでどれくらい保持するかを確認しましょう — 破棄が積極的すぎるキャッシュは、ターン間に間隔のある会話には役立ちません。

よくある質問

プロンプトキャッシュはモデルの出力を変えますか?
いいえ。キャッシュは共有プレフィックスの内部処理方法にのみ影響し、完全な再処理と数学的に同一の結果を、より高速に生成します。モデルの挙動や品質を変えるものではなく、パフォーマンスの最適化です。
プロンプトキャッシュはトークン生成速度に役立ちますか、それとも初回応答時間だけですか?
初回応答時間(最初のトークンが出るまでの時間)にのみ役立ちます。生成が始まると、キャッシュの有無にかかわらずトークンは同じ生成速度で1つずつ生成されます — キャッシュが取り除くのは無駄なプロンプト処理であり、生成ステップ自体ではありません。
キャッシュはどれくらいVRAMを使いますか?
キャッシュされたKVデータはモデル自体と並んでVRAM上に存在し、そのサイズはキャッシュされているコンテキストの量と同時進行の会話数に応じて増減します。長い会話を多数同時にキャッシュすると、VRAM使用量が無視できないほど増加することがあります — VRAMに制約のあるハードウェアでは、キャッシュの深さとの間に実際のトレードオフがあります。
ローカルのサービングツールはすべてプロンプトキャッシュに対応していますか?
対応状況やデフォルトの挙動はツールによって異なります — セッション内の複数ターン利用で自動的にキャッシュするツールもあれば、明示的な設定が必要なツールもあり、キャッシュ保持期間(プレフィックスが破棄されるまでキャッシュされ続ける時間)もツールごとに異なります。使用しているサービングツールのドキュメントで、キャッシュの挙動と制御可能な設定を確認してください。