Repository navigation
docs: VLLM_ENABLE_STARTUP_PLAN as an opt-in next to the compile cache - #365
Open
ashwinsreedhar28 wants to merge 4 commits into
Open
ashwinsreedhar28 wants to merge 4 commits into
ashwinsreedhar28 wants to merge 4 commits into
Conversation
…ile cache vLLM (v0.29.0+) persists its measured KV-cache budget under VLLM_CACHE_ROOT, which this image already keeps on the network volume, so later cold starts skip the memory measurement and CUDA-graph memory estimate when the plan's fingerprint matches. Documented as opt-in rather than set in the image: the fingerprint omits gpu_memory_utilization until vllm-project/vllm#60143 lands, so a changed limit would reuse the old budget. Numbers in the doc are placeholders pending the v0.32.0 rerun. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KGxXNtPM12ALm9YXqHhiY4
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KGxXNtPM12ALm9YXqHhiY4
… move to the PR Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KGxXNtPM12ALm9YXqHhiY4
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KGxXNtPM12ALm9YXqHhiY4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Documents
VLLM_ENABLE_STARTUP_PLAN=1as an opt-in endpoint setting, in the compile-cache paragraph ofdocs/configuration.md. With it, vLLM saves its measured KV-cache memory budget under$VLLM_CACHE_ROOT/startup_plan/, which this image already keeps on the network volume, and later cold starts with a matching key skip the memory measurement and the CUDA-graph memory estimate. Docs only; no image change.Why opt-in and not the image default
vLLM's plan key does not yet include
gpu_memory_utilization(vllm-project/vllm#60143 proposes adding it). Until it does, a plan recorded at one limit is reused after the limit changes while free memory still clears the gate, so a user loweringGPU_MEMORY_UTILIZATIONafter an OOM would keep the old budget. The doc says so and gives the workaround. When #60143 lands this can become oneENVline in the Dockerfile; I have that branch ready.Measured
Runpod Serverless, this image's base (vLLM v0.32.0), Qwen3-8B bf16, RTX 4090, network volume, compile cache warm. Three measured cold starts each; the with-plan endpoint first ran one discarded boot that wrote the plan (profile 7.5 s on that boot). Per-phase wall time recorded inside the vLLM worker:
determine_available_memory4.6 s saved per cold start (median). Weight load, warm-up and graph capture are not affected (weight load varies with the host page cache in both arms). The three with-plan runs landed on three different workers, so the plan is reused across workers on the volume; on v0.30.0 earlier the same test showed 6.9 → 2.3 s, including a plan written by one endpoint applied by a second. Raw data and the runner: https://github.com/ashwinsreedhar28/vllm-coldstart/tree/main/bench/results
Also found while measuring: vLLM stages the plan file as
<path>.tmp.<pid>, which can collide across containers sharing a cache root; fix proposed in vllm-project/vllm#63388. Not a blocker for opt-in use.Notes
VLLM_CACHE_ROOTis in effect, so they followsrc/compile_cache.py's fallback to the container; an existing plan on the volume is not copied.int:1/0only;trueraises inside the worker. Base images that predate it (it is present in v0.30.0; I have not checked older) logUnknown vLLM environment variableand ignore it.🤖 Generated with Claude Code
https://claude.ai/code/session_01KGxXNtPM12ALm9YXqHhiY4