Repository navigation
Conversation
Co-authored-by: Codex <noreply@openai.com> Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn>
Contributor
|
Documentation preview: https://vllm--64182.org.readthedocs.build/en/64182/ |
6 tasks done
6 tasks done
This branch has not been deployed
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.
Overview
Allow the weight-cache daemon to reuse AWQ/GPTQ linear weights already packed for Marlin across engine restarts. Related to #56049; based directly on main
6376fda7a9.Claims
Validation
B300, TP1. The two real-model cases use FP16, eager execution, TRITON_ATTN, explicitly selected Marlin, two prompts × 16 generated tokens, and prompt/sample top-5 logprobs. Each compares ordinary loading → missing-daemon disk fallback → IPC → second IPC; both IPC starts set
fallback=False. Comparison uses the existingcheck_logprobs_closehelper.VLLM_BATCH_INVARIANT=0is intentional: AWQ switches away from Marlin when enabled, and Marlin does not guarantee batch invariance.Checkpoints:
Qwen/Qwen2.5-0.5B-Instruct-AWQatdb09cd27ead7fee40cdee309693cf83601b9c899;Qwen/Qwen2.5-0.5B-Instruct-GPTQ-Int4atc34a4a91629f09f73a285f32dbd26106b033c654. INT8/BF16 and padded outputs are covered by real CUDA layers, not a complete INT8 checkpoint. This is cache-versus-ordinary output equivalence, not quantization accuracy against BF16 or a performance benchmark. Multi-GPU, other hardware and other kernels are not claimed.Reproduction and baseline evidence
Apply the new tests to main
6376fda7a9without the two production changes to reproduce the failures. Before implementation, the real daemons report:Host-specific environment: its precompiled Marlin path first failed with unsupported PTX during ordinary loading. Baseline and passing results above both use process-local
LD_LIBRARY_PATH=/home/liusy/codex-runtime/cuda-compat-13-4/usr/local/cuda-13.4/compat, containing NVIDIA's checksum-verifiedcuda-compat-13-4package615.71.10-1ubuntu1, as supported by NVIDIA's compatibility matrix. It was extracted under the user's task directory; the host driver and shared Python environment were not modified. Initial environment failures and corrected negative-test setup errors are retained separately and are not represented as cache bug reproductions. Runs emit existing torch/fork deprecation warnings.Details
Both methods previously rejected daemon caching even though ordinary Marlin loading worked. Their kernel configuration and parameter names are constructed before post-load processing; the remaining normal post-load work converts AWQ packing and/or repacks weights, permutes scales/zero points and pads/permutates bias. IPC already supplies those transformed tensors. Opt in only the actual
MarlinLinearKernelwith FP16/BF16 activations, and return before those transformations on the pre-processed path. No common loading interface, kernel implementation, scheduler/model-runner change or steady-state synchronization is added.Reuse the existing daemon, generation and comparison helpers. The L4 Marlin Preload CI step selects the real-model and layer/boundary cases and tracks their source dependencies. Local validation is B300; L4 Buildkite execution is not claimed. The preload guide documents commands, defaults and exclusions, with links from the AWQ/GPTQ guides.
Duplicate checks covered current #56049/comments, issue-linked drafts and open Marlin-preload/AWQ/GPTQ-cache searches. #61908 introduces a different on-disk AWQ-v2 format, while #60479 changes GPTQ batch-invariant execution; neither restores daemon IPC weights. Existing FP8/FP4 cache drafts do not cover this path.
AI assistance: Codex implemented and ran the recorded validation at the submitter's request. This draft is for human review; no completed human approval or human-run tests are asserted.
Pull Request Checklist
I used vLLM's
/pr-checklistskill. (Mandatory for agents, optional for humans).AI assistance was used during the creation of this PR.
Design Fit: Narrow capability opt-in using existing kernel construction and loading interfaces.
Testing and Validation: Real-model and layer before/after checks, shared tensor preservation, regression and CI coverage recorded above.
Code Quality and Style: Changed-file hooks passed; discoverable support documentation and CI selection included.
Pull Request Contents: Root cause, duplicate checks, commands, limitations, environment and AI disclosure included.