Conversation
…100 graph The SM70 Flash-V100 0.0.3 compile graph forced VLLM_DISABLE_COMPILE_CACHE=1 in two places (the config defaults and the envs.py default) because a reloaded AOT artifact once reproduced greedy token drift. The cause was a compile-cache key that ignored unregistered VLLM_ switches, fixed in 1CatAI#536. With the key fixed, a warm boot on that graph reloads its AOT artifacts (70-75 s instead of 110-120 s to ready) and produces the identical greedy text; the card type is part of the artifact key. The opt-out is back to what the user sets. VLLM_SM70_ALLOW_COMPILE_CACHE_FOR_PROFILING only existed to bypass the forced opt-out and goes with it. Signed-off-by: Peuqui <peuqui@github.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…s load bundled AOT artifacts torch 2.10.0 does not serialize the Triton kernel side table into bundled AOT artifacts, so the first warm boot after a cold compile fails to load them (empty-reason "load failure", recompile, re-save). PyTorch fixed this in #173556 (main dffe73e2, in 2.11+); 2.11 drops Volta from the cu128 wheels, so 2.10.0 stays pinned. tools/torch_patches/apply.sh applies the fix to the installed 2.10.0 (idempotent, hash-checked, refuses unknown files). Measured on Qwen3.8-27B-NVFP4 (MTP k=3, TP2, two V100, cache on, artifacts cleared once): cold 476 s, first warm 85 s with all artifacts loaded, second warm 80 s, text identical. Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Peuqui <peuqui@github.com>
Author
|
Updated: the torch 2.10.0 caveat now ships with its fix (tools/torch_patches, backport of pytorch #173556, measured 27B cold/warm/warm 476/85/80 s), and removing the opt-out exposed a PLE artifact bug fixed in #622, which should land before or with this PR. Details in the description. |
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.
Purpose
With
VLLM_SM70_FLASH_V100_0DOT3_COMPILE_GRAPH=1,VllmConfigsetVLLM_DISABLE_COMPILE_CACHE=1unless the user had set the variable, andenvs.disable_compile_cache()defaulted to1on the same condition. The log line explained why: a reloaded AOT artifact had once reproduced deterministic greedy token drift. The cause of that drift was the compile-cache key, which did not include unregisteredVLLM_switches and therefore reused an artifact compiled for a different kernel path. That was fixed in #536.With the key fixed, the forced opt-out only hides the cache from users who did not ask for that. This change removes both defaults, so
VLLM_DISABLE_COMPILE_CACHEmeans what its documentation says again, and removesVLLM_SM70_ALLOW_COMPILE_CACHE_FOR_PROFILING, whose only purpose was to bypass the forced opt-out (its mirror inbenchmarks/benchmark_sm70_decode.pygoes with it). Users who want the old behaviour setVLLM_DISABLE_COMPILE_CACHE=1explicitly.What the cache does on this graph, measured
Qwen3.8-27B-NVFP4 with DFlash2 n=7, TP2, greedy, 5x400 tokens per boot,
VLLM_DISABLE_COMPILE_CACHE=0on this branch's parent (main dfef334 plus our open PRs), 11 boots, output text identical (same SHA-256) in every one:Two things on torch 2.10.0, which requirements/cuda.txt pins:
(
Compiling model again due to a load failure ..., reason:with an empty reason, then arecompile and re-save; from the second warm boot on everything loads). The cause is the
Triton kernel side table that 2.10.0 does not serialize into the artifact; PyTorch fixed
it in #173556 (main dffe73e2, in 2.11+), and 2.11 drops Volta from the cu128 wheels, so
2.10.0 stays pinned here. This PR therefore ships the fix as a backport:
tools/torch_patches/apply.sh .venv/bin/pythonpatches the installed 2.10.0(idempotent, refuses anything but the pristine or the patched file). Measured on
Qwen3.8-27B-NVFP4, MTP k=3, TP2 on two V100 with the cache on, after deleting
torch_aot_compile/once: cold 476 s (writes), first warm 85 s (4 artifacts loaded,no load failure), second warm 80 s; text identical (SHA-256
a3dffc7c5e9b417a).hidden since [Doc] Record Qwen3.8 prefill output-quality gate #403: the gather op took the table pointer as an
intand Inductor bakedthe address into the AOT artifact, so the first warm boot of Qwen3.8-Flash-Next died
with an illegal memory access on the stage that holds the PLE table. Fixed in
[Bugfix][Qwen4Exp] Resolve the PLE table pointer inside the gather op instead of baking it into the graph #622, which should land before or together with this PR. With both, Flash-Next
TP2 PP2 boots cold 340 s, first warm 312 s, second warm 343 s, six artifacts loaded
each time, text identical (SHA-256
e948a82ead51948c).Test Plan
pre-commit run --files benchmarks/benchmark_sm70_decode.py vllm/config/vllm.py vllm/envs.pyandpre-commit run mypy-3.10 --hook-stage manual --files vllm/config/vllm.py vllm/envs.py.grep -rn ALLOW_COMPILE_CACHE_FOR_PROFILING tests/ docs/to confirm nothing else references the removed switch.cache_devtype_chain.sh,cache_reload_chain.sh,cache_trace_chain.shin our v100-skinny repository; logs available on request).Test Result
tools/torch_patches/apply.shapplied twice (second run reports"already applied"); 27B cold/warm/warm as above.
Not a duplicate
gh pr list --state open --searchfor "compile cache", "DISABLE_COMPILE_CACHE" and "ALLOW_COMPILE_CACHE_FOR_PROFILING" andgh issue list --search "compile cache"return nothing related; no open PR touches these lines ofvllm/config/vllm.pyorvllm/envs.py.AI assistance (Claude) was used to trace the cache path, run the boot matrix and prepare the change; I reviewed every line and ran the checks above.
🤖 Generated with Claude Code