LLM 推論 admission 制御とoverload shedding
記事状態: 公開 · 最終確認: 2026-10-22
要点
LLM 推論 admission 制御とoverload shedding
現在の判断
LLM 推論 admission 制御とoverload shedding
どこまで当てはまるか
LLM 推論 admission 制御とoverload shedding
詳しく理解する
現在位置
LLM推論基盤では、GPUがまだ応答可能でも、無制限にrequestを受け入れると待ち行列が伸び、TTFT(time to first token)や遅い要求の応答時間が急速に悪化する。したがって「落ちるまで受ける」のではなく、request数、prefill token backlog、同時RUNNING数、優先度、SLO classを使って入口で負荷を制御する。
2026-10-22時点のvLLM公式仕様・利用方法の文書では、max_num_queued_reqs によりwaiting+runningのin-flight request数を制限でき、上限到達時は新規requestをHTTP 503で拒否する。また max_num_queued_tokens はprefill中requestのprompt token総量を制限し、TTFT QoS用のcapacity valveとして説明されている。max_num_active_seqs はRUNNINGへadmitするrequest数を制限する。
admission 制御は「同時実行数」だけでは足りない
LLM requestは入力長・出力長・結果の再利用 hit・multimodal input等で負荷が大きく異なる。request countだけの上限は粗い保護にはなるが、短いrequest 100件と巨大prompt 100件を同じ負荷として扱う。
実運用では少なくとも次を分離して観測する。
- waiting / running request数
- prefill backlogのprompt token量
- active sequence数
- TTFT、ITL(inter-token latency)、end-to-end latency
- reject / defer / 処理待ち時間の上限 / cancellation率
- GPU 記憶情報/KV 結果の再利用余力とcompute saturation
- request class、組織の利用環境、優先順位
- 再試行による再流入
vLLMの現行仕様・利用方法の文書は max_num_queued_tokens を target_TTFT * prefill_throughput の考え方で設定するTTFT QoS機構として説明している。ただし、chunked prefill進捗やprefix-cache hitはprefill完了までAPI server側の集計から差し引かれず、backlogは保守的に過大評価され得る。したがって、この値を実token消費の精密なmeterと解釈しない。
overload時は待たせ続けるより、明示的に拒否する方が安全な場合がある
queueが無制限なら、arrival rateがservice rateを上回る期間に待ち時間が累積する。結果として、処理開始時点ですでにclient 処理待ち時間の上限を超えているrequest、cancel済みrequest、SLOを満たせないrequestへGPU時間を使うことがある。
入口では、少なくとも以下を設計する。
- accept: 現在のcapacityとSLOから処理可能なrequestを受理する。
- reject: capacity超過時は503/429等、契約した意味の状態で早期拒否する。
- defer/queue: bounded queue内でのみ待たせる。
- 優先順位 admission: 高優先classを先に通す場合でも、低優先classのstarvationを別途評価する。
- 再試行 guidance: client 再試行が同期して再流入しないようbackoff/jitterと再試行 budgetを設ける。
vLLMのqueue limitは上限到達時にHTTP 503を返し、別instanceへの再試行を可能にする設計である。これは「必ず再試行すれば成功する」という保証ではない。gatewayやclient側で無制限再試行を行えば、overloadを増幅する。
仕組みと設計
Kubernetes Gateway API 推論 Extensionでは、InferencePoolとEndpoint Picker Extension(EPP)を使い、inference-aware 処理先の振り分けをgatewayへ組み込める。実装ガイドでは、eligible endpointが無い場合は503、requestをdropすべき場合は429を返すprotocolが示されている。
ここから、gateway側とモデル server側の役割を分ける。
- gateway/EPP: endpoint health、モデル 利用可能性、処理先の振り分け policy、pool全体の負荷情報を使い、どこへ送るか/dropするかを決める。
- モデル server: 実際のscheduler queue、prefill backlog、active sequence、ローカル環境の resource状態に基づき最終admissionを行う。
- client: 処理待ち時間の上限、再試行 budget、backoff/jitter、重複実行を防ぐ性質要件を管理する。
gatewayだけでcapacityを推定すると、モデル server内部の瞬間的queue/KV状態を見誤ることがある。逆に各serverだけで拒否すると、空いている別endpointへ振り替えられる機会を失う。二段制御では、429/503の意味、再試行先、失敗時の代替処理、metricsを統一する。
優先順位はSLO classと一体で検証する
vLLM SchedulerConfigはFCFSと優先順位 schedulingを提供する。優先順位は低い数値ほど先に処理され、同順位ではarrival timeで順序付けされる。
優先順位を導入する場合、単にVIP requestを先頭へ置くだけでは不十分である。評価対象は次を含む。
- class別TTFT / ITL / p95 / p99
- class別reject率
- starvation時間
- 長promptと短promptの混在時の影響
- 優先順位 request大量流入時の通常class劣化
- 再試行 trafficが優先順位を維持・昇格してしまわないか
- 組織の利用環境間fairness
優先順位はcapacityを増やさない。overload時に「誰のSLOを先に守るか」を変える機構として扱う。
SLOから逆算して設定する
admission limitは固定の万能値ではない。モデル、GPU、数値の精度を下げて処理を軽くする方法、tensor/処理工程 parallel、文脈・入力情報 length、workload mix、prefix 結果の再利用 hit率、speculative decoding等でservice rateが変わる。
運用では代表workloadでprefill 単位時間あたりの処理量とdecode特性を測定し、SLOごとに許容backlogを決める。変更時には少なくとも以下を再測定する。
- モデル / engine バージョン
- GPU type / count
- max 文脈・入力情報 / typical prompt length
- 同時実行数
- 結果の再利用 設定
- scheduler policy
- chunked prefill
- speculative decoding
- gateway 処理先の振り分け policy
設定値は「推奨値」として固定せず、測定条件・根拠 timestampと一緒に台帳化する。
実装チェック
- request数とprefill token backlogの両方に上限がある
- reject 状態とclient 再試行 policyが整合している
- 再試行 budgetとexponential backoff/jitterがある
- 優先順位/SLO class別metricsがある
- gatewayとモデル serverのadmission責任が明文化されている
- queue上限変更が負荷試験と紐付いている
- overload時のp95/p99、reject率、GPU utilizationを同時観測する
- failover先も飽和している場合に再試行を止められる
- cancellation済みrequestのresource消費を確認する
- バージョン upgrade後に同じ負荷試験を再実行する
安全な読み方
max_num_queued_reqs や max_num_queued_tokens が存在することは、任意のSLOが自動的に保証されることを意味しない。Gateway API 推論 Extensionも、特定実装が常に最適なadmission decisionを行うことを保証するものではない。これらは制御点であり、実際のSLOはworkload-specific 比較評価、失敗 injection、本番稼働状況の記録の結果の照合で検証する。
主要根拠
- vLLM SchedulerConfig / admission limits(2026-10-22確認) https://docs.vllm.ai/en/latest/api/vllm/config/scheduler/
- vLLM AsyncLLM
check_admission(2026-10-22確認) https://docs.vllm.ai/en/latest/api/vllm/v1/engine/async_llm/ - Kubernetes Gateway API 推論 Extension Implementer's Guide(2026-10-22確認) https://gateway-api-inference-extension.sigs.k8s.io/guides/implementers/
- Kubernetes Gateway API 推論 Extension API Reference(2026-10-22確認) https://gateway-api-inference-extension.sigs.k8s.io/reference/spec/
よくある失敗・反証
通常負荷比較評価だけではoverload 制御の欠陥を見落とす。次のfault/load testを行う。
arrival rateを段階的にservice rate以上へ上げる
長prompt burstを投入する
一部endpointを停止・drainする
再試行を有効化して再流入を観測する
優先順位 classを偏らせる
gateway/EPPをfail-open / fail-close条件で障害化する
client cancellation/処理待ち時間の上限後に不要処理が残らないか確認する
成功条件は単位時間あたりの処理量最大化だけではない。SLO逸脱の境界が観測可能で、拒否がboundedに起き、回復後にqueueが収束し、再試行 stormを起こさないことを確認する。
まだ確認できていないこと
- EA-754-UNKNOWN-01
- workload固有の最適queue/token limitは未確定。実測が必要。
- gateway/EPP実装ごとの負荷評価指標、drop policy、fail-open/fail-close既定値は個別確認が必要。
- KV 結果の再利用余力を直接admission signalへ使う場合のportableな共通条件・契約は未確定。
- provider-managed 推論で同等の内部admission 評価指標が公開されるとは限らない。
- 503/429に対する各SDK/clientの既定再試行挙動はバージョン別確認が必要。
根拠資料
- 研究資料研究資料
https://docs.vllm.ai/en/latest/api/vllm/config/scheduler/
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
https://docs.vllm.ai/en/latest/api/vllm/v1/engine/async_llm/
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
https://gateway-api-inference-extension.sigs.k8s.io/guides/implementers/
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
- 研究資料研究資料
https://gateway-api-inference-extension.sigs.k8s.io/reference/spec/
確認上の限界
元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
更新履歴
EA-754-RESEARCH-20261022-R1: 正式な 監査/publication 対応付け
出典ID・検証情報・機械可読データ
根拠の種類と情報の鮮度は、ラベルとアイコンで確認できます。
- 記事ID
- EA-754
- 最終確認日
- 2026-10-22
- 提供元・モデル・プラン・利用環境
- —
- 対象地域
- —
元資料の全文と収録照合記録
現在位置
LLM推論基盤では、GPUがまだ応答可能でも、無制限にrequestを受け入れると待ち行列が伸び、TTFT(time to first token)やtail latencyが急速に悪化する。したがって「落ちるまで受ける」のではなく、request数、prefill token backlog、同時RUNNING数、優先度、SLO classを使って入口で負荷を制御する。
2026-10-22時点のvLLM公式documentationでは、max_num_queued_reqs によりwaiting+runningのin-flight request数を制限でき、上限到達時は新規requestをHTTP 503で拒否する。また max_num_queued_tokens はprefill中requestのprompt token総量を制限し、TTFT QoS用のcapacity valveとして説明されている。max_num_active_seqs はRUNNINGへadmitするrequest数を制限する。
admission controlは「同時実行数」だけでは足りない
LLM requestは入力長・出力長・cache hit・multimodal input等で負荷が大きく異なる。request countだけの上限は粗い保護にはなるが、短いrequest 100件と巨大prompt 100件を同じ負荷として扱う。
実運用では少なくとも次を分離して観測する。
- waiting / running request数
- prefill backlogのprompt token量
- active sequence数
- TTFT、ITL(inter-token latency)、end-to-end latency
- reject / defer / timeout / cancellation率
- GPU memory/KV cache余力とcompute saturation
- request class、tenant、priority
- retryによる再流入
vLLMの現行documentationは max_num_queued_tokens を target_TTFT * prefill_throughput の考え方で設定するTTFT QoS機構として説明している。ただし、chunked prefill進捗やprefix-cache hitはprefill完了までAPI server側の集計から差し引かれず、backlogは保守的に過大評価され得る。したがって、この値を実token消費の精密なmeterと解釈しない。
overload時は待たせ続けるより、明示的に拒否する方が安全な場合がある
queueが無制限なら、arrival rateがservice rateを上回る期間に待ち時間が累積する。結果として、処理開始時点ですでにclient timeoutを超えているrequest、cancel済みrequest、SLOを満たせないrequestへGPU時間を使うことがある。
入口では、少なくとも以下を設計する。
- accept: 現在のcapacityとSLOから処理可能なrequestを受理する。
- reject: capacity超過時は503/429等、契約した意味のstatusで早期拒否する。
- defer/queue: bounded queue内でのみ待たせる。
- priority admission: 高優先classを先に通す場合でも、低優先classのstarvationを別途評価する。
- retry guidance: client retryが同期して再流入しないようbackoff/jitterとretry budgetを設ける。
vLLMのqueue limitは上限到達時にHTTP 503を返し、別instanceへのretryを可能にする設計である。これは「必ずretryすれば成功する」という保証ではない。gatewayやclient側で無制限retryを行えば、overloadを増幅する。
gatewayとmodel serverの二段制御
Kubernetes Gateway API Inference Extensionでは、InferencePoolとEndpoint Picker Extension(EPP)を使い、inference-aware routingをgatewayへ組み込める。実装ガイドでは、eligible endpointが無い場合は503、requestをdropすべき場合は429を返すprotocolが示されている。
ここから、gateway側とmodel server側の役割を分ける。
- gateway/EPP: endpoint health、model availability、routing policy、pool全体の負荷情報を使い、どこへ送るか/dropするかを決める。
- model server: 実際のscheduler queue、prefill backlog、active sequence、local resource状態に基づき最終admissionを行う。
- client: timeout、retry budget、backoff/jitter、idempotency要件を管理する。
gatewayだけでcapacityを推定すると、model server内部の瞬間的queue/KV状態を見誤ることがある。逆に各serverだけで拒否すると、空いている別endpointへ振り替えられる機会を失う。二段制御では、429/503の意味、retry先、fallback、metricsを統一する。
priorityはSLO classと一体で検証する
vLLM SchedulerConfigはFCFSとpriority schedulingを提供する。priorityは低い数値ほど先に処理され、同順位ではarrival timeで順序付けされる。
priorityを導入する場合、単にVIP requestを先頭へ置くだけでは不十分である。評価対象は次を含む。
- class別TTFT / ITL / p95 / p99
- class別reject率
- starvation時間
- 長promptと短promptの混在時の影響
- priority request大量流入時の通常class劣化
- retry trafficがpriorityを維持・昇格してしまわないか
- tenant間fairness
priorityはcapacityを増やさない。overload時に「誰のSLOを先に守るか」を変える機構として扱う。
SLOから逆算して設定する
admission limitは固定の万能値ではない。model、GPU、quantization、tensor/pipeline parallel、context length、workload mix、prefix cache hit率、speculative decoding等でservice rateが変わる。
運用では代表workloadでprefill throughputとdecode特性を測定し、SLOごとに許容backlogを決める。変更時には少なくとも以下を再測定する。
- model / engine version
- GPU type / count
- max context / typical prompt length
- concurrency
- cache configuration
- scheduler policy
- chunked prefill
- speculative decoding
- gateway routing policy
設定値は「推奨値」として固定せず、測定条件・evidence timestampと一緒に台帳化する。
failure injectionで確認する
通常負荷benchmarkだけではoverload controlの欠陥を見落とす。次のfault/load testを行う。
- arrival rateを段階的にservice rate以上へ上げる
- 長prompt burstを投入する
- 一部endpointを停止・drainする
- retryを有効化して再流入を観測する
- priority classを偏らせる
- gateway/EPPをfail-open / fail-close条件で障害化する
- client cancellation/timeout後に不要処理が残らないか確認する
成功条件はthroughput最大化だけではない。SLO逸脱の境界が観測可能で、拒否がboundedに起き、回復後にqueueが収束し、retry stormを起こさないことを確認する。
実装チェック
- request数とprefill token backlogの両方に上限がある
- reject statusとclient retry policyが整合している
- retry budgetとexponential backoff/jitterがある
- priority/SLO class別metricsがある
- gatewayとmodel serverのadmission責任が明文化されている
- queue上限変更が負荷試験と紐付いている
- overload時のp95/p99、reject率、GPU utilizationを同時観測する
- failover先も飽和している場合にretryを止められる
- cancellation済みrequestのresource消費を確認する
- version upgrade後に同じ負荷試験を再実行する
安全な読み方
max_num_queued_reqs や max_num_queued_tokens が存在することは、任意のSLOが自動的に保証されることを意味しない。Gateway API Inference Extensionも、特定実装が常に最適なadmission decisionを行うことを保証するものではない。これらは制御点であり、実際のSLOはworkload-specific benchmark、failure injection、本番telemetryのreadbackで検証する。
OPEN_UNKNOWN
- workload固有の最適queue/token limitは未確定。実測が必要。
- gateway/EPP実装ごとの負荷metric、drop policy、fail-open/fail-close既定値は個別確認が必要。
- KV cache余力を直接admission signalへ使う場合のportableな共通contractは未確定。
- provider-managed inferenceで同等の内部admission metricが公開されるとは限らない。
- 503/429に対する各SDK/clientの既定retry挙動はversion別確認が必要。
主要根拠
- vLLM SchedulerConfig / admission limits(2026-10-22確認) https://docs.vllm.ai/en/latest/api/vllm/config/scheduler/
- vLLM AsyncLLM
check_admission(2026-10-22確認) https://docs.vllm.ai/en/latest/api/vllm/v1/engine/async_llm/ - Kubernetes Gateway API Inference Extension Implementer's Guide(2026-10-22確認) https://gateway-api-inference-extension.sigs.k8s.io/guides/implementers/
- Kubernetes Gateway API Inference Extension API Reference(2026-10-22確認) https://gateway-api-inference-extension.sigs.k8s.io/reference/spec/
EVD-EA-754-URL-F8F3C1CBB630研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCEhttps://docs.vllm.ai/en/latest/api/vllm/config/scheduler/
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-754-URL-F8F3C1CBB630
- 検証箇所
- 主要根拠 · https://docs.vllm.ai/en/latest/api/vllm/config/scheduler/
- 適用範囲
- 主要根拠
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-754-URL-3004AA9ECA2B研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCEhttps://docs.vllm.ai/en/latest/api/vllm/v1/engine/async_llm/
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-754-URL-3004AA9ECA2B
- 検証箇所
- 主要根拠 · https://docs.vllm.ai/en/latest/api/vllm/v1/engine/async_llm/
- 適用範囲
- 主要根拠
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-754-URL-E5C3596EB621研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCEhttps://gateway-api-inference-extension.sigs.k8s.io/guides/implementers/
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-754-URL-E5C3596EB621
- 検証箇所
- 主要根拠 · https://gateway-api-inference-extension.sigs.k8s.io/guides/implementers/
- 適用範囲
- 主要根拠
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EVD-EA-754-URL-F7C479D4C79D研究資料研究資料根拠の出所: SOURCE_PACKET_REFERENCEhttps://gateway-api-inference-extension.sigs.k8s.io/reference/spec/
- 裏付ける内容
- —
- 確認日
- —
- 出典・実験ID
- SRC-EA-754-URL-F7C479D4C79D
- 検証箇所
- 主要根拠 · https://gateway-api-inference-extension.sigs.k8s.io/reference/spec/
- 適用範囲
- 主要根拠
- 出典・来歴
- SOURCE_PACKET_REFERENCE_PROJECTED
- 限界
- 元の監査済み資料に記載された参照先です。URLの復元は、資料の最新性や全主張の支持を新たに検証したことを意味しません。
EA-754-CURRENT-APPROVAL研究資料研究資料根拠の出所: AUDITED_CANONICAL_RESEARCH_PACKET現行本文の監査・revision対応
- 裏付ける内容
- 現行台帳のAUDIT_PASSと候補・revision・本文ハッシュの対応を確認しています。
- 確認日
- —
- 出典・実験ID
- EA754-CANDIDATE-20261022-1938JST-C1
- 検証箇所
- 1KqhJtiSb2S84rWmeYVwKcT_76dBwZ_B0ZZuAWQqH0rQ/EA_REVISION_LEDGER#ea_id=EA-754&revision_id=EA-754-RESEARCH-20261022-R1&candidate_id=EA754-CANDIDATE-20261022-1938JST-C1 · EA-754-RESEARCH-20261022-R1
- 適用範囲
- —
- 出典・来歴
- CURRENT_CANONICAL_APPROVAL_READBACK
- 限界
- 監査状態と来歴の記録です。外部根拠の最新性や本文の全主張を追加保証しません。
EA-754-CURRENT-BODY-READBACK実装資料実装資料根拠の出所: IMPLEMENTATION_READBACK現行本文の収録照合
- 裏付ける内容
- 公開生成入力の本文SHA-256が、監査済み候補に結び付いたハッシュと一致しています。
- 確認日
- 2026-10-24
- 出典・実験ID
- BODY-SHA256:f7c11bd73fc853232e60836afb834466cebc309bfd8d7b6be32786ebaf245c1f
- 検証箇所
- content/staging/EA-754.md · f7c11bd73fc853232e60836afb834466cebc309bfd8d7b6be32786ebaf245c1f · EA-754-RESEARCH-20261022-R1
- 適用範囲
- —
- 出典・来歴
- CURRENT_APPROVED_BODY_HASH_MATCH
- 限界
- 本文の同一性の検査です。外部システムの挙動や全主張の真偽を実証したものではありません。
- 出典ID
- EA754-CANDIDATE-20261022-1938JST-C1, SRC-EA-754-URL-F8F3C1CBB630, SRC-EA-754-URL-3004AA9ECA2B, SRC-EA-754-URL-E5C3596EB621, SRC-EA-754-URL-F7C479D4C79D, BODY-SHA256:f7c11bd73fc853232e60836afb834466cebc309bfd8d7b6be32786ebaf245c1f
- 追跡中のUNKNOWN ID
- EA-754-UNKNOWN-01
- 再確認のきっかけ
- 正式な 改訂版/publication 状態 change · 本文 成果物 hash change · 出典 現行性 change · new contradiction or 実装 結果の照合
機械検査: 通過 — 機械検査の結果です。情報の正確性や実行の承認を保証するものではありません。
同じ記事IDの機械可読データです。