推論最適化・実行基盤

vLLMとは|上限ぶんを先に確保すると86.2%が無駄になり、入る人数が7分の1になった

確保の仕方で何が変わるのか詰め方でどれだけ速くなるのか文脈を長くすると何が減るのか

上限の4,096トークンぶんを先に確保すると、86.2%が使われないまま押さえられました。

16トークンずつなら無駄は1.3%です。同じ60GBに入る人数が30人から213人になります。

この記事の要点

  • 上限先取りで86.2%が無駄
  • 16トークン単位なら1.3%
  • 入る人数は30人→213人
  • 詰め方で待ちは4.4分の1

上限ぶんを先に確保すると、86.2%が使われない

覚えておく場所を小分けに確保します。上限で押さえる形と比べて、入る人数が7.1倍になりました。

vLLMは、覚えておく場所の扱い方に工夫があります。公式はPagedAttentionによる、注意の鍵と値のメモリの効率的な管理を挙げています。

確保の単位でどれだけ変わるのか。実際に割り当てて数えました。

確保の単位を変える

text
依頼 20,000件。上限は 4,096トークンだが、実際に使う長さはばらつく
実際に使った合計は 11,336,014トークン(1件あたり平均 567)
覚えておく場所を、何トークンぶんずつ確保するかを変えて、無駄になる量を見る

確保の単位      確保した合計      無駄になった分      無駄の割合      同じメモリで入る人数
       4,096トークン        81,920,000          70,583,986           86.2%                     30人
       1,024トークン        26,132,480          14,796,466           56.6%                     94人
         256トークン        13,992,448           2,656,434           19.0%                    175人
          64トークン        11,958,528             622,514            5.2%                    205人
          16トークン        11,486,464             150,450            1.3%                    213人

上限ぶんを先に確保すると、押さえた場所の86.2%が使われません。実際の平均は567トークンだからです。

16トークンずつなら無駄は1.3%です。同じ60GBに入る人数が30人から213人になりました。

細かくしても頭打ち

text
※ 「同じメモリで入る人数」は、60GB を1件あたりの確保量で割った値(1トークン 0.5MB として計算)。
※ 上限ぶんを先に確保すると、短い依頼でも上限ぶんを押さえることになる。

64から16に細かくしても、205人から213人です。効くのは大きい側を潰すところまででした。

細かくするほど管理の手間は増えます。256あたりで大半の無駄は消えています

細かく確保するほど無駄は減るが、効くのは最初の数段階。

単位: 人16トークン213人64トークン205人256トークン175人1,024トークン94人4,096トークン30人依頼2万件・平均567トークンでの実測。無駄の割合は順に86.2%・56.6%・19.0%・5.2%・1.3%。
図1 ── 確保の単位と、同じメモリに入る人数
出典vLLM 公式ドキュメント「Welcome to vLLM」2026-08-18 確認
Efficient management of attention key and value memory with PagedAttention
原文vLLM 公式ドキュメント「Welcome to vLLM」 この内容の有効期限2027-02-18

空いた枠から入れると、待ちが4.4分の1になる

入ってきた依頼を続けて詰めます。長さがそろっている場合は、この工夫が効きません。

vLLMは、依頼を続けて詰めます。公式は入ってくる依頼の連続的な詰め合わせ、分割した前処理、接頭辞の使い回しを挙げています。

どれだけ効くのか。詰め方を変えて実際に流して比べました。

詰め方を変える

text
依頼 600件・同時に処理できる数 8・1トークン 8ミリ秒
出力の長さ: 85%は40〜200トークン、15%は400〜1000トークン

詰め方                  平均の待ち時間  p95      最大      全体の所要  1秒あたり
まとめて始めて終わる                 151.36秒   260.13秒   272.69秒      326.4秒      1.84件
空いた枠から入れる                   34.62秒    60.26秒    66.79秒      120.3秒      4.99件

枠が空いている時間の割合

詰め方                  枠が埋まっていた時間  空いていた割合
まとめて始めて終わる                      941.1秒           64.0%
空いた枠から入れる                       941.1秒            2.2%

平均の待ちが151.36秒から34.62秒になりました。4.4分の1です。

理由は下の表にあります。空いていた割合が64.0%から2.2%に下がりました。

効かない場合もある

text
出力の長さがそろっている場合(全員150トークン)

詰め方                  平均の待ち時間  全体の所要
まとめて始めて終わる                  19.67秒         91.0秒
空いた枠から入れる                   19.38秒         91.0秒

全員が同じ長さなら、両者はほぼ同じです。19.67秒と19.38秒で、所要は同じ91.0秒でした。

効くのは長さがばらつく場合です。長い1件が枠を占めたまま、短い依頼が待つ状況を解消しています。

この詰め方そのものの中身は連続バッチングの記事で扱いました。

出典vLLM 公式ドキュメント「Welcome to vLLM」2026-08-18 確認
Continuous batching of incoming requests, chunked prefill, prefix caching
原文vLLM 公式ドキュメント「Welcome to vLLM」 この内容の有効期限2027-02-18

文脈を128倍にすると、同時に扱える人数が131分の1になる

速く提供する部品ですが、覚えておく量は文脈の長さに比例します。人数がそのまま減ります。

vLLMは、推論と提供のための部品です。公式はvLLMは、大規模言語モデルの推論と提供のための、速くて使いやすい部品であると述べています。

速さの前に、入るかどうかが決まります。文脈の長さで何人入るのか実際に計算して数えました。

文脈の長さを変える

text
層 32・頭 32・頭あたりの次元 128・16bitで持つ場合
1トークンあたり 512 KB を覚えておく必要がある

文脈の長さ    1人あたり    8人同時    32人同時
     1,000トークン     0.49 GB     3.9 GB     15.6 GB
     4,000トークン     1.95 GB    15.6 GB     62.5 GB
     8,000トークン     3.91 GB    31.3 GB    125.0 GB
    32,000トークン    15.63 GB   125.0 GB    500.0 GB
   128,000トークン    62.50 GB   500.0 GB   2000.0 GB

80GB のメモリに、重み以外で何人分入るか(重みを 16GB とする)

文脈の長さ    入る人数
     1,000トークン      131人
     4,000トークン       32人
     8,000トークン       16人
    32,000トークン        4人
   128,000トークン        1人

1,000トークンなら131人入ります。128,000トークンでは1人です。

文脈を128倍にすると、人数は131分の1です。ほぼそのまま反比例しています。

2つの節はつながっている

最初の節の無駄と、この節の必要量は同じメモリを取り合います。上限ぶんを先取りする形では、この表の人数にすら届きません

だから長い文脈を許す設計では、確保の単位が効いてきます。使う長さがばらつくほど、小分けの効果が大きくなります

余談 この計測での注意

3つの計測はいずれも手元で書いた模型で、実際のvLLMを動かしたものではありません。1トークン8ミリ秒、1トークン0.5MBといった値は置いたもので、実機での測定ではありません。使う長さの分布も置いた形で、実際の依頼の分布とは違います。同時に処理できる数を8として固定しており、この値を変えれば詰め方の効き方も変わります。ここで見せているのは、上限ぶんを先に確保すると大半が無駄になるという点と、長さがそろっていれば詰め方の工夫は効かないという点の2つです。

出典vLLM 公式ドキュメント「Welcome to vLLM」2026-08-18 確認
vLLM is a fast and easy-to-use library for LLM inference and serving.
原文vLLM 公式ドキュメント「Welcome to vLLM」 この内容の有効期限2027-02-18

よくある質問

vLLMとは何ですか
大規模言語モデルの推論と提供のための、速くて使いやすい部品です。公式がそう述べています。
覚えておく場所の確保で何が変わりますか
無駄の量です。上限ぶんを先に確保すると86.2%が使われず、16トークン単位なら1.3%でした。
詰め方を変えるとどれだけ速くなりますか
平均の待ちが151.36秒から34.62秒になりました。4.4分の1です。
文脈を長くすると何が減りますか
同時に扱える人数です。80GBの条件で、1,000トークンなら131人、128,000トークンでは1人でした。

まとめ

  • 確保の単位が無駄を決める
  • 小分けにすると人数が増える
  • 詰め方で待ちが縮む
  • 文脈の長さは人数を削る

今日から始められること

  1. 実際に使っている長さの分布を測る
  2. 上限を先取りしていないか確かめる
  3. 空いた枠から入れる詰め方か見る
  4. 文脈の長さと同時人数を突き合わせる

実務で組んだvLLMのワークフローには、値段が付きます

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

出品の仕組みを見る