推論最適化・実行基盤

プレフィックスキャッシュとは|出力を4000トークンにすると、短縮率が29.0%から0.2%に縮んだ

前置きの使い回しはどれだけ効くのか出力の長さで効果はどう変わるのか到着の頻度は関係あるのか

出力20トークンなら、前置きを省く効果で29.0%短縮できました。

出力4000トークンでは0.2%まで縮みます。出力を作る時間は省けないためです。

この記事の要点

  • 出力20で29.0%短縮
  • 出力4000で0.2%
  • 1分5件で12.7%まで削減
  • 1分0.2件では53.9%

出力4000トークンでは、短縮率が0.2%まで縮む

同じ前置きなら計算を省けます。ただし省けるのは前置きの分だけで、出力の時間は残ります。

プレフィックスキャッシュは、共通する前置きの計算を省きます。公式は自動プレフィックスキャッシュは、既存の問い合わせのKVキャッシュを保存し、新しい問い合わせが同じ前置きを持っていればそのまま使い回せるので、共通部分の計算を省けると述べています。

省けるのは前置きの分だけです。出力の長さが変わるとどうなるのか実際に計算して数えました。

出力の長さを変える

text
前置き 2,000トークン。読み込みは1トークン0.09ms、出力は1トークン22ms
前置きを省略できても、出力を作る時間(decoding)はそのまま残る

出力の長さ  前置きの読み込み  出力を作る時間  省略ありの合計  省略なしの合計  短縮率
        20             180ms           440ms           440ms           620ms     29.0%
        80             180ms          1760ms          1760ms          1940ms      9.3%
       300             180ms          6600ms          6600ms          6780ms      2.7%
      1000             180ms         22000ms         22000ms         22180ms      0.8%
      4000             180ms         88000ms         88000ms         88180ms      0.2%

出力20トークンでは29.0%短縮できます。前置きの180msが、全体620msの3割近くを占めるためです。

出力4000トークンでは0.2%です。出力を作る時間が88,000msに対して、前置きの180msは誤差程度になります。

省けるのは片側だけ

この形は、公式の前処理の時間(prefilling)だけを減らし、新しいトークンを作る時間(decoding)は減らさないという説明そのままです。

だから効果を見積もるときは、前置きと出力の比率を先に見ます。短い出力を大量にさばく用途で最も効きます

この区分けは連続バッチングの記事でも扱った、詰める処理と生成する処理の違いと同じ形です。

出力が長くなるほど、前置き省略の効果は薄まる。

短縮率(%)出力の長さ(トークン)→31.94400208030010004000前置き2,000トークンでの計算。出力20トークンで29.0%、4000トークンでは0.2%まで縮む。
図1 ── 出力の長さと、短縮率
出典vLLM 公式ドキュメント「Automatic Prefix Caching」2026-08-18 確認
Automatic Prefix Caching (APC in short) caches the KV cache of existing queries, so that a new query can directly reuse the KV cache if it shares the same prefix with one of the existing queries, allowing the new query to skip the computation of the shared part.
原文vLLM 公式ドキュメント「Automatic Prefix Caching」 この内容の有効期限2027-02-18

1分5件以上なら、入力の相当量が12.7%まで下がる

長い文書を繰り返し使う用途で効きます。ただし到着の間隔が空くと、使い回す前に消えてしまいます。

プレフィックスキャッシュの典型的な用途は、長い文書への繰り返しの問い合わせです。公式は同じ長い文書に違う問いを繰り返す場合、その文書を何度も処理する代わりに、APCは1度だけ処理させ、以後の要求はKVキャッシュの使い回しで再計算を避けられると述べています。

使い回されるかどうかは、到着の頻度で決まります。実際に流して数えました。

到着の頻度を変える

text
問い合わせ 2000件。前置き 2000トークン・問い 60トークン・出力 150トークン
使い回しは 5分もつものとし、置くとき 1.25倍・読むとき 0.1倍で数える

1分あたりの件数  使い回した回数  置き直した回数  入力の相当量      使わない場合との比
        0.2件           1260回            740回     2,222,000             53.9%
          1件           1980回             20回       566,000             13.7%
          5件           1999回              1回       522,300             12.7%
         20件           1999回              1回       522,300             12.7%
         60件           1999回              1回       522,300             12.7%

1分5件以上なら、入力の相当量は12.7%まで下がって頭打ちになります。ほとんどの回で使い回せています。

1分0.2件だと53.9%です。5分の保持時間内に次が来ないことが多く、置き直しが740回発生しました。

前置きが長いほど効く

text
前置きの長さを変えたとき(1分あたり5件の場合)

前置きの長さ  入力の相当量  使わない場合  比
     200トークン       160,230       520,000   30.8%
     500トークン       220,575     1,120,000   19.7%
    1000トークン       321,150     2,120,000   15.1%
    2000トークン       522,300     4,120,000   12.7%
    8000トークン     1,729,200    16,120,000   10.7%

8000トークンの前置きでは10.7%まで下がります。長い文書ほど、省ける割合が大きくなります

つまり長い文書への繰り返し問い合わせという公式の想定は、この2つの条件が両方そろう場面を指しています。

出典vLLM 公式ドキュメント「Automatic Prefix Caching」2026-08-18 確認
Long document query, where the user repeatedly queries the same long document (e.g. software manual or annual report) with different queries. In this case, instead of processing the long document again and again, APC allows vLLM to process this long document only once, and all future requests can avoid recomputing this long document by reusing its KV cache.
原文vLLM 公式ドキュメント「Automatic Prefix Caching」 この内容の有効期限2027-02-18

性能は基本的に落ちないが、効くのは片方の段階だけ

有効にして損はしません。ただし前処理の段階だけが対象で、生成の段階には手を出しません。

プレフィックスキャッシュは、有効にしても性能を落としません。公式はAPCは一般に、vLLMの性能を下げない。とはいえ、APCが減らすのは問い合わせを処理する時間(前処理の段階)だけで、新しいトークンを作る時間(生成の段階)は減らさないと述べています。

「性能を下げない」と「速くなる」は別のことです。最初の節の表を見直します

効果の範囲を区切る

出力4000トークンの行では、短縮率は0.2%でした。下がらないが、ほとんど速くもならないという状態です。

だから「有効にしたのに速くならない」と感じたら、まず出力の長さと前置きの長さの比率を確かめます。設定の問題ではなく、用途の性質によることが多いです。

有効にする判断

下がらない性質がある以上、有効にしておいて損はありません。効くかどうかは用途次第、という理解で使うことになります。

余談 この計測での注意

2つの計測はいずれも手元で書いた模型で、実際のvLLMを動かしたものではありません。1トークン0.09ms・22ms、保持時間5分、置くとき1.25倍・読むとき0.1倍といった値はすべて置いたものです。実際の速さの比は機材とモデルによって変わります。ここで見せているのは、出力が長くなるほど短縮率が薄まるという点と、到着の頻度が保持時間を下回ると使い回せなくなるという点の2つです。

出典vLLM 公式ドキュメント「Automatic Prefix Caching」2026-08-18 確認
APC in general does not reduce the performance of vLLM. With that being said, APC only reduces the time of processing the queries (the prefilling phase) and does not reduce the time of generating new tokens (the decoding phase).
原文vLLM 公式ドキュメント「Automatic Prefix Caching」 この内容の有効期限2027-02-18

よくある質問

プレフィックスキャッシュとは何ですか
既存の問い合わせのKVキャッシュを保存し、同じ前置きを持つ新しい問い合わせがそれをそのまま使い回せる仕組みです。
出力が短いときと長いときで効果は違いますか
違います。出力20トークンでは29.0%短縮できましたが、4000トークンでは0.2%まで縮みました。
性能が落ちることはありますか
基本的には落ちません。ただし前置きを読み込む時間だけを減らすもので、出力を作る時間は減らないと説明されています。
到着の頻度は関係ありますか
関係します。1分5件以上なら入力の相当量が12.7%まで下がりましたが、1分0.2件では53.9%にとどまりました。

まとめ

  • 前置きの読み込みを省ける
  • 出力を作る時間は残る
  • 短い出力ほど効果が大きい
  • 到着の頻度が効き方を決める

今日から始められること

  1. 前置きの長さと出力の長さの比率を出す
  2. 到着の頻度を測る
  3. 使い回しがもつ時間の設定を確かめる
  4. 短い出力の用途ほど優先して有効にする

実務で組んだプレフィックスキャッシュのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る