fix(vllm): pin granite --max-num-seqs=1024 (was implicit default 128)

granite (fleet fan-out summarizer/classifier) had no explicit --max-num-seqs,
so vLLM V1 resolved it to 128 — which caps concurrency BELOW granite's own KV
bound (~192 concurrent @ 1K-token calls, more for shorter classify calls).
Pinned it very high (1024) so the KV pool is the only bound; VRAM-neutral
(the KV pool is util-bound, unchanged). Added the flag to the granite command
+ GRANITE_MAX_NUM_SEQS to the env template. Live applied + verified
(resolved max_num_seqs=1024, seat healthy).
This commit is contained in:
2026-07-16 10:47:15 -07:00
parent a2b026d499
commit 9e69639482
2 changed files with 10 additions and 0 deletions
+4
View File
@@ -119,3 +119,7 @@ GRANITE_KV_CACHE_DTYPE=fp8
# leftover room on full-chapter context (max-len 131072). KV 15.0 GiB = 196,560 tokens
# = 1.50x @ 131072; GPU-1 lands ~6.7 GB headroom (char-rp 30 + granite 27 + selene 17 + trio).
GRANITE_GPU_MEM_UTIL=0.27
# Concurrency cap — set VERY HIGH 2026-07-16 (was vLLM default 128) so the KV pool is
# the only bound. granite is the fleet fan-out summarizer/classifier (many concurrent
# SHORT calls); default 128 capped below the KV bound (~192 @ 1K-tok). VRAM-neutral.
GRANITE_MAX_NUM_SEQS=1024
+6
View File
@@ -233,6 +233,12 @@ services:
- ${GRANITE_GPU_MEM_UTIL}
- --max-model-len
- ${GRANITE_MAX_MODEL_LEN}
# Very high so the KV pool (not the seq cap) is the only concurrency bound —
# granite is the fleet fan-out summarizer/classifier (many concurrent SHORT
# calls). vLLM's default resolves to 128, capping below the KV bound
# (~192 @ 1K-tok); 1024 unblocks it (VRAM-neutral — KV pool is util-bound).
- --max-num-seqs
- ${GRANITE_MAX_NUM_SEQS}
- --dtype
- auto
# CUDA graphs ENABLED (no --enforce-eager) for decode throughput. Made