Repository navigation
Conversation
Collaborator
|
This PR touches vllm_omni/model_executor/, tests/model_executor/ (5 files). Based on CODEOWNERS coverage of the changed files, the most-related reviewers appear to be: Could one of you take a look when you get a chance? Thanks! |
This was referenced Sep 11, 2026
Collaborator
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
Reduce persistent streaming-decoder state memory for MOSS-TTS-Local v1.5 / MOSS Audio Tokenizer v2. The new V2 decoder-pool path is enabled by default, without an environment-variable switch. This is a memory optimization, not an E2E throughput improvement claim.
VLLM_OMNI_MOSS_CODEC_SHARED_KVenvironment variable is no longer read.This does not implement paged attention or remove the complete-ring gather. K/V data are never shared across layers or live requests. Earlier Local lookup/fused-kernel experiments are not included.
Related to #7202, but targets persistent codec state allocation and per-resolution metadata rather than its Local/MTP and masked-attention changes; not dependent on that PR.
Test Plan
vLLM Version: 0.28.0; PyTorch 2.13.0+cu130; Triton 3.7.1.
vLLM-Omni Commit: measured baseline
677265b64; measured implementationa2f90fd9with the new path enabled. Follow-ups remove local-only artifacts from the PR, align test conventions, and make that same path the V2 default. Serving performance has not been remeasured after the default-switch change.Hardware: one H200 (143771 MiB reported total), both AR and codec stages on GPU 0, BF16. Shared host. Memory fractions 0.60/0.30; reference encoder on CPU; chunk sizes 1/15 frames. No precision/sampling/scheduling changes.
Regression coverage includes reset/reorder, wraparound, oversized chunks, all-padding batches, null-slot immutability, group offset aliases, close/reinitialize and legacy lifecycle, CUDA Graph replay, strict dynamic compilation, and real wrapper staging with a small codec.
Local regression (requires the repo/vLLM environment and a CUDA GPU for the GPU cases; no checkpoint download):
CI-like CPU selection (existing L1 CPU sweep; no Buildkite configuration changes):
python -m pytest tests/model_executor/models/moss_tts/test_shared_codec_kv.py -o addopts= -q -m 'core_model and cpu' --run-level core_modelMicrobenchmark numbers below were collected with a local-only harness; new benchmark scripts are intentionally excluded from this PR. The existing repository serving benchmark can reproduce the E2E workload below.
Serving reproduction:
For C128 memory reproduction, change both stage
max_num_seqsvalues to 128 and append 128 to codec capture buckets. Main/PR used identical resulting configs. The checked-in deploy YAML is unchanged from the baseline (C64).Test Result
C128 memory
Post-capture idle values: all 16 codec graphs captured; three samples five seconds apart were identical for each variant. GPU was empty before each serial launch.
11670 MiB / 11.40 GiB less service memory, entirely in the codec process. The tensor-shape KV saving is 10.49 GiB; allocator/graph state also contributes to process memory. Main compiled fresh while PR reused an AOT artifact. These are not exact peak or matched fully warmed measurements: the initial main warmup was intentionally interrupted, and the PR arm used startup-only measurement.
C64 E2E
Full1088 warmup excluded, then two full1088 measured rounds per variant:
-0.087%: no measurable throughput benefit. All completed phases: 1088 successful / 0 failed. Within-arm spans were 1.70% and 1.52%. Ordered input lengths match. Runs were sequential, not counterbalanced; generated lengths were stochastic.
Plain CUDA Graph microbenchmarks improved decode time, but compiled B1/T15 showed only 6.797 -> 6.503 ms (~4.3% less time). Do not extrapolate plain-graph gains to serving.
Validation boundaries / draft follow-up
git merge-treecheck against0e602509found no text conflicts; integration/CI validation is pending.Implementation notes, reports, raw artifacts, and experimental benchmark scripts remain local. No design Markdown,
results/, orbenchmarks/changes are included in the final PR diff.