# プレフィックスキャッシュ ## 定義 自己回帰的な LLM 推論において、複数のリクエストが共通のトークン列プレフィックスを持つ場合、そのプレフィックスに対応する[[KVキャッシュ]]を使い回すことで prefill の再計算を避ける最適化手法。例えば `["I","like","dogs"]` と `["I","like","cats"]` は先頭 2 トークンの KV キャッシュが同一になるため、後から処理する方は理論上 1/3 の計算量で済む。(Source: [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]]) ## 効果が大きい場面 - **チャットボット**: 対話が単調に(strictly)追記されていくため、各ターンの KV キャッシュを保存すれば最新ターン分だけの計算で済む。 - **Few-shot プロンプト / システム指示**: 固定のプレフィックスとして保存・再利用できる。 (Source: [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]]) ## 実装上の制約 KV キャッシュは大きく(数 GB 規模)、再利用のためには後続クエリが来るまで保持し続ける必要がある。prefill サーバーの空き HBM をローカルキャッシュに充てるほか、TPU ホストの DRAM(8xTPUv5e で HBM 128GiB に対し Host DRAM 約 450GiB)は HBM より遅いが read 用途には十分な速度を持つ。キャッシュと検索は LRU のトライ木で自然に表現できる。KV キャッシュは特定の TPU 群にローカルなため、後続クエリを同じレプリカへ届ける affinity routing が必要になり、ロードバランシングを難しくする。(Source: [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]]) ## 関連 - 概念: [[KVキャッシュ]] / [[PagedAttention]] / [[Prefill-Decode分離]] ## 出典 - [[@2025__ScalingBook__How to Scale Your Model - Part 7 Inference]](プレフィックスキャッシュの定義、効果が大きい場面、LRU トライ木実装と affinity routing の制約)