Repository navigation
Conversation
Restore online FP8 and MXFP8 runtime state without requantizing cached weights. Preserve the CUTLASS logical width and avoid fusing NVFP4 MoE scales twice in shared IPC tensors. Add output-equivalence coverage and CI jobs. Co-authored-by: Codex <noreply@openai.com> Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn>
Co-authored-by: Codex <noreply@openai.com> Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn>
Co-authored-by: Codex <noreply@openai.com> Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn>
Co-authored-by: Codex <noreply@openai.com> Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn>
Co-authored-by: Codex <noreply@openai.com> Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn>
Contributor
|
Documentation preview: https://vllm--63754.org.readthedocs.build/en/63754/ |
6 tasks done
Co-authored-by: Codex <noreply@openai.com> Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn>
Contributor
|
This pull request has merge conflicts that must be resolved before it can be |
Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn> Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn> Co-authored-by: Codex <noreply@openai.com>
liusy58
added a commit
to liusy58/vllm
that referenced
this pull request
Oct 29, 2026
Signed-off-by: liusy58 <mg21330037@smail.nju.edu.cn> Co-authored-by: Codex <noreply@openai.com>
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
Enable serialized ModelOpt per-tensor and per-channel FP8 linear weights to be reused by the weight-cache daemon with CUTLASS. Related to #56049; depends on #63672 for restoring CUTLASS's logical output width.
Incremental review: liusy58/vllm@3571116...7f75449 (the GitHub diff against main includes the prerequisite).
Claims
FP8andFP8_PER_CHANNEL_PER_TOKENlinear layers using CUTLASS and the default format scheme.Validation
Current head
7f75449765425d759565d3a770d829070d909f99includes main914d61fc538a84e8487cb16fe8241a70f6f4bf9e. October 29 agent-run validation after resolving the inherited online-FP8 import conflict with upstream #60163. The merge retains both CUTLASS and Humming imports, the upstream processed-dimension metadata, and upstream rejection of the unsupported Humming per-token/channel path. It adds no Humming IPC capability.modelopt-layersmodelopt-modelRuntime: NVIDIA B300, PyTorch 2.13.0+cu130, process-local CUDA 13.4 compatibility libraries. The two stable-libtorch extensions are from the official CUDA 13.0 wheel for main
914d61fc538a84e8487cb16fe8241a70f6f4bf9e, checked against wheel RECORD hashes and linked only into task worktrees. The shared venv and host driver were unchanged. This does not validate the full upstream PyTorch 2.14 dependency matrix.Full-model checks use TP1, BF16, eager mode, CUTLASS and TRITON_ATTN, with the existing batch-invariant exact greedy-output comparisons. Each completed case checks ordinary load, missing-daemon fallback, IPC and a second IPC load; both IPC loads forbid fallback. These are output-equivalence smoke checks, not accuracy or performance benchmarks. No multi-GPU, ROCm or other-backend result is claimed.
ModelOpt full-model tests use their checked-in configurations without checkpoint/budget overrides. Per-channel/per-token checkpoint:
CedricHwang/qwen2.5-0.5b-modelopt-fp8-pc-pt, pinnedd9c87375a9b950b1c7965a1110ac6ca455929726.Commands for this revision
All commands set
HF_HUB_OFFLINE=1,PYTHONPATHto the corresponding worktree andLD_LIBRARY_PATH=/home/liusy/codex-runtime/cuda-compat-13-4/usr/local/cuda-13.4/compat.CUDA_VISIBLE_DEVICES=5 .venv/bin/python -m pytest tests/quantization/test_modelopt.py -k 'not checkpoint_setup and not nested_mixed_checkpoint and not mixed_dspark_checkpoint' -q CUDA_VISIBLE_DEVICES=5 .venv/bin/python -m pytest tests/model_executor/model_loader/test_weight_cache.py -k modelopt_fp8 -qGitHub checks for the new head are pending at publication. No Buildkite GPU-suite pass or completed human review is claimed. AI assistance and original feature baselines are recorded below.
Earlier validation and original feature baselines (previous heads)
NVIDIA B300, BF16, CUTLASS linear backend. The real-model test uses
CedricHwang/qwen2.5-0.5b-modelopt-fp8-pc-pt, pinned tod9c87375a9b950b1c7965a1110ac6ca455929726, TP1, eager mode, TRITON_ATTN andVLLM_BATCH_INVARIANT=1.93a266aaa2plus new testsBoth real IPC loads set
fallback=False. The deterministic generation comparison is a smoke evaluation, not a broad accuracy benchmark. Full-model coverage is per-channel/per-token; static per-tensor FP8 is covered by real CUDA layers with unequal fused-projection scales. No performance, multi-GPU, other-platform, or FP8-MoE claim is made.HF_HUB_OFFLINE=1assumes the pinned checkpoint and OPT-125m configuration are cached; omit it for the initial download. Before implementation the first command reported:The four new shared-weight layer cases reported
RuntimeError: layer <root>: ModelOptLinearMethod does not support pre-processed weights. With the implementation, all six new cases passed in 12.00s; the full selected regression run above was repeated after test formatting/type-check fixes. Runs emitted existing torch deprecation warnings. Initial setup attempts encountered a missing offline revision reference and a changing-free-memory profiling assertion; the pinned, isolated baseline above then reproduced the intended rejection.Details
The daemon currently rejects every ModelOpt FP8 linear method even when CUTLASS can consume the processed tensor layout. Opt in only the two plain FP8 weight schemes with the actual selected CUTLASS kernel and no format wrapper. The engine restores
processed_weight_dims=(0, 1)and returns before post-load weight transformations. CUTLASS logical width is initialized from configuration by #63672, so padded shared weights still produce the original output width.The existing L4 preload CI step now selects the real ModelOpt IPC test and the six layer cases, with dependencies on the changed ModelOpt source and tests. The preload feature guide documents the formats, matching daemon/engine kernel configuration, and exclusions. Local validation used B300; L4 CI has not been run locally. No new scheduler/model-runner path or steady-state GPU synchronization.
Duplicate checks on October 26 covered #56049 and its comments, issue-linked PRs, and open searches for ModelOpt FP8 preload/pre-processed weights. #63672 covers online quantization and NVFP4, #63673 covers compressed-tensors FP8, and #62036 covers W4A16 NVFP4 layerwise reload; none implements this serialized ModelOpt FP8 IPC path. This branch includes main
373614f66d.AI assistance: Codex implemented and ran the recorded validation at the submitter's request. This is a draft 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 and metadata restoration; existing loading and kernel interfaces reused.
Testing and Validation: Real checkpoint before/after, exact real-layer tests, regression results and CI resource limits recorded above.
Code Quality and Style: Changed-file hooks passed; rendered preload docs and CI selection updated.
Pull Request Contents: Root cause, prerequisite, duplicate checks, commands, evidence, limitations and AI disclosure included.
Need help on this PR? Tag
@codesmith-botwith what you need.