Int8 weight-only compressed-tensors DiT artifact + serve-path fixes (issue 5) #6
Open
anodyine
wants to merge 8 commits from
ISSUE-5 into main
pull from: ISSUE-5
merge into: anodyine:main
anodyine:main
anodyine:ISSUE-2
anodyine:pr-6169
anodyine:codex/shared-stage-payload-transport
anodyine:release/v0.31.0rc1
anodyine:dev/vllm-align
anodyine:debug/qwen3-omni-doc-audio-artifacts
anodyine:debug/qwen3-tts-failed-speech-audio
anodyine:debug/cosyvoice-conditioning
anodyine:debug/cpu-collective-isolation
anodyine:debug/stage-client-reload-isolation
anodyine:debug/sana-video-parallel-fixture
anodyine:debug/qwen25-two-card-fixture
anodyine:debug/realtime-invalid-fixtures
anodyine:debug/auxiliary-omni-lifecycle
anodyine:debug/request-session-preservation
anodyine:debug/engine-worker-ownership
anodyine:dev/vllm-align-baseline-v0300
anodyine:perf/cosyvoice3-hopper-default
anodyine:perf/cosyvoice3-streaming-hift
anodyine:docs/repository-owned-review-skill
anodyine:codex-docs-v0.30.0
anodyine:release/v0.30.0
anodyine:fix/qwen3-tts-full-payload-buffer
anodyine:codex/omni-edge-abstraction
anodyine:qwen-image-2.1
anodyine:release/v0.30.0rc1
anodyine:perf/qwen3-tts-event-driven-default
anodyine:codex-issue-7035-h100-determinism
anodyine:frontend/multi-api-server-scaling
anodyine:codex-hwr-domain-timeout
anodyine:codex-diffusion-shutdown-escalation
anodyine:release/v0.29.0rc1
anodyine:backup/vllm-align-remote-20260915-0ae9bdd8c
anodyine:perf/moss-local-batched-execution
anodyine:codex-hwr-memory-diagnostic
anodyine:codex-hwr-registration-policy
anodyine:codex-hwr-integrity-policy
anodyine:codex-hwr-build-admission
anodyine:codex-hwr-quarantine-cleanup
anodyine:codex-hwr-capacity-scan
anodyine:codex/fix-qwen3-omni-moe-backend
anodyine:codex/fix-offline-profiler-config
anodyine:codex/fix-hunyuan-image3-expert-mapping
anodyine:codex/fix-hub-kernel-dependencies
anodyine:codex-vae-b300-stack-tiling
anodyine:codex/fix-mot-one-sided-bias
anodyine:codex-minimax-h3-vendor-callback
anodyine:codex-api-server-user-guide
anodyine:release/v0.28.0
anodyine:test/dots-tts-e2e-coverage
anodyine:fix/qwen3-tts-codec-eos-guard
anodyine:revert-5464-test_minicpmo_4_5
anodyine:codex-6297-topology-aware-diffusion-worker-title-v2
anodyine:revert-6307-codex/6297-topology-aware-diffusion-worker-title
anodyine:codex-revert-mammothmoda2
anodyine:release/v0.28.0rc1
anodyine:codex-flux2-klein-bf16-hwr
anodyine:fix/minicpmo45-duplex-context-overflow-signed
anodyine:codex-dlo-cache-budget-config
anodyine:revert-6624-fix/hf-snapshot-name-match
anodyine:codex-dlo-encoder-residency
anodyine:codex-fix-env-var-ratchet-6217
anodyine:codex-dlo-lifecycle-optimization
anodyine:minicpm-challenge
anodyine:feat/qwen3-tts-deadline-scheduler-signed
anodyine:feat/qwen3-tts-deadline-scheduler
anodyine:codex/qwen3-tts-default-chunk-ramp
anodyine:codex-fix-omni-sleep-wake-resume
anodyine:revert-6574-revert-6557-fix/wan-dmd-alignment-test
anodyine:codex/host-weight-post-load-publication
anodyine:codex/dlo-runtime-cache-phase-b
anodyine:ci/warmup-full-concurrency-batch
anodyine:rl-http-interfaces
anodyine:codex-dlo-fp8-cache-phase1
anodyine:codex-pr6279-benchmark-assets
anodyine:codex-harden-x-to-video-audio
anodyine:codex/dlo-registered-mmap-prototype
anodyine:codex-dlo-host-weight-plan
anodyine:codex-split-attention-offload-guides
anodyine:codex-rank-local-mmap
anodyine:news_update
anodyine:codex-vae-spatial-decode-auto
anodyine:codex-community-docs-refresh
anodyine:codex-quantization-support-guide
anodyine:codex-pd-navigation
anodyine:codex-ltx2-vae-channels-last
anodyine:codex-fix-pr-6011
anodyine:codex-consolidate-lingbot-text-to-video
anodyine:codex-ltx-2-5-diffusers
anodyine:codex-quantization-consistency
anodyine:codex/fix-dlo-5954
anodyine:codex-canonical-image-task-examples
anodyine:codex-user-guide-feature-alignment
anodyine:release/v0.27.0rc1
anodyine:codex-update-cache-dit-1.5.0
anodyine:codex-precheck-pr-example-policy
anodyine:codex-fix-lingbot-t2i-save
anodyine:codex-contributor-agent-skills-docs
anodyine:codex-qwenimage-vae-spatial-decode-auto
anodyine:codex-wan-vae-data-movement
anodyine:codex-request-vae-fastpaths
anodyine:codex-vae-compile-warmup
anodyine:codex-fix-rtd-doc-link
anodyine:copilot/fix-code-review-comment
anodyine:codex/general-example-docs
anodyine:codex-docs-quantization-recipes
anodyine:codex-review-config-provenance
anodyine:codex/update-architecture-overview
anodyine:codex-dlo-rank-local-gif
anodyine:codex/module-design-doc-layout
anodyine:perf/minimax-h3-lossless-hot-path
anodyine:codex-dlo-design-docs
anodyine:codex-design-docs-reorg
anodyine:perf/minimax-h3-adaln-cache-offload
anodyine:revert-4958-perf/code-predictor-fuse-qkv-gateup-v2
anodyine:codex-v0.26.0-docs
anodyine:release/v0.26.0
anodyine:fix/tp-local-kv-recv-consensus
anodyine:fix/cfg-companion-output-race
anodyine:test/logprobs-sched-026-mocks
anodyine:revert-5478-BugFixForOmniGPUWorkerBase
anodyine:release/v0.26.0rc1
anodyine:agent/daily-pr-labeler-workflow
anodyine:fix/pr4709-review-followup
anodyine:feature/refactor-2
anodyine:lishunyang12/skip-softmax-trtllm-gen
anodyine:codex/readme-v0.24.0-docs
anodyine:release/v0.25.0rc1
anodyine:docs/vllm-0.25-bump
anodyine:fix/entrypoint-ci-timeouts-main
anodyine:fix/entrypoint-ci-timeouts
anodyine:release/v0.24.1
anodyine:codex/lingbot-dense-latest-main
anodyine:release/v0.24.0
anodyine:bugfix/qwen3-tts-batched-seeded-mtp
anodyine:bugfix/qwen3-tts-remove-default-seed
anodyine:dev/voxcpm2-unified-graph-followups
anodyine:bugfix/qwen3-tts-customvoice-asr-escalation
anodyine:bugfix/qwen3-tts-seed-propagation
anodyine:dev/voxcpm2-unified-decode-graph
anodyine:copilot/research-github-issue-4510
anodyine:codex/update-codeowners-maintainers
anodyine:release/v0.24.0rc1
anodyine:revert-2565-fix/ssrf-image-video-url
anodyine:release/v0.22.0.post1
anodyine:fix/rebase-pipeline-upload-all-e2e
anodyine:dev/migrate-MR-v2
anodyine:release/v0.23.0rc1
anodyine:codex/fix-diffusion-allrank-rpc
anodyine:fix/omni-weight-snapshot-prefetch
anodyine:codex/cleanup-pr-template
anodyine:readme-update-supported-models
anodyine:SamitHuang-patch-1
anodyine:docs/update-v0.22.0-release
anodyine:feature/precheck-pr-skill
anodyine:release/v0.22.0
anodyine:revert-3943-feat/sensenova-u1-fp8-online-mot-gen
anodyine:feat/diffusion-prefetch-protection
anodyine:release/v0.20.0
anodyine:feat/vllm-upgrade
anodyine:release/v0.22.0rc1
anodyine:lance-model-support
anodyine:fix-mot-rmsnorm-vllm021
anodyine:codex/unskip-fp8-z-image-quality
anodyine:fix/version-tag-alignment-3858
anodyine:helios/accuracy-maintained-main
anodyine:docs/add-new-committers
anodyine:release/v0.21.0rc1
anodyine:worktree-enable-twine-upload
anodyine:khluu/release-docker-images
anodyine:update-v0200
anodyine:revert-3304-FusedRMSNorm
anodyine:copilot/revert-3162-whitelist-optimization-signed
anodyine:revert-1338-refine-diffusion-loader
anodyine:revert-3118-voxcpm2-instructions-cfg
anodyine:copilot/update-documentation-in-pull-request-2972
anodyine:claude/fix-diffusion-cache-ci-iFBqB
anodyine:release/v0.18.0.post1
anodyine:codex-revert-pr-reviewer
anodyine:pipeline-npu
anodyine:community-recipes
anodyine:add-skill
anodyine:khluu/release3
anodyine:khluu/release2
anodyine:release/v0.19.0rc1
anodyine:update-committers
anodyine:governance-update
anodyine:v0.18.0-release-news
anodyine:khluu/release
anodyine:release/v0.18.0
anodyine:dev/rebase-v0.18.0
anodyine:release/v0.18.0rc1
anodyine:khluu/fix_ci
anodyine:ywang96-patch-1
anodyine:governance
anodyine:codex/update-readme-slides-link
anodyine:revert-1255-er-stable-audio-online
anodyine:dev/rebase-v0170
anodyine:release/v0.17.0rc1
anodyine:v016
anodyine:release/v0.16.0
anodyine:khluu-patch-2
anodyine:khluu-patch-1
anodyine:revert-1431-feature/pr-reviewer-auto-trigger
anodyine:copilot/rebase-to-upstream-vllm-v0150
anodyine:release/v0.16.0rc1
anodyine:copilot/find-opening-prs-excluding-diffusion
anodyine:release/v0.15.0rc1
anodyine:release/v0.14.0.post1
anodyine:dev/rebase-v0.15.0
anodyine:main-doc
anodyine:update-doc-to-014
anodyine:release/v0.14.0
anodyine:revert-954-handler_fix
anodyine:release/v0.14.0rc1
anodyine:copilot/fix-output-issues
anodyine:copilot/fix-typo-in-documentation
anodyine:copilot/discuss-issue-823
anodyine:update-doc
anodyine:release/v0.12.0rc1
anodyine:test-ready-label
anodyine:khluu/ci_pipeline_gen
anodyine:h100-ci
anodyine:khluu/ci
anodyine:docker-doc
anodyine:dockerfile
anodyine:raw-image-logo
anodyine:wzliu_connector_dev
anodyine:pq_dev
anodyine:buildkite-2
anodyine:split-ode-solver
anodyine:qby_dev/cpu_support
anodyine:copilot/update-actions-upload-artifact
No Reviewers
Labels
Clear labels
area/agent-workflow
area/backend
area/docs
area/frontend
area/tests
area/workflow
priority/P0
status/done
status/in-progress
status/needs-info
status/needs-triage
status/ready-for-agent
status/ready-for-human
status/review
status/wontfix
type/architecture
type/bug
type/docs
type/epic
type/feature
type/refactor
type/roadmap
type/test
Agent workflow area
Backend area
Documentation area
Frontend area
Testing area
General workflow area
Exceptional interrupt; not a complete priority taxonomy
Work is complete
Implementation is in progress
Blocked pending more information
Needs initial review and prioritization
Ready for an agent to claim
Ready for human review or action
Implementation is ready for review
Work will not be pursued
Architecture or system-design work
Defect or regression
Documentation work
Epic grouping related work
New behavior or capability
Internal restructuring without behavior change
Canonical repository work queue
Test coverage or test infrastructure
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: anodyine/vllm-omni#6
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Implements issue 5, both rounds: serve pre-quantized int8 DiT checkpoints via
compressed-tensors on the RTX 3090, structure-gated capacity matrix and
quality read each round.
Final verdict (round two, per the owner's amended directive): YES — the
W8A8 int8-dynamic artifact (cutlass int8 scaled-MM, no Marlin) delivers 1–4
reference capacity at the fastest speed measured, with BF16-parity quality:
walls 20.5/25.1/29.4/34.0 s per reference count, peak 23,879 MiB, all 16
matrix requests structurally sound, PSNR vs the sealed Diffusers baseline
33.7/28.3/27.5 dB at 1/2/4 refs (BF16 band 26–29 dB) — the first usable
4-reference quality comparison this card has produced.
Round one (int8 weight-only, pack-quantized) established the capacity
mechanics but collapsed in the kernel: Marlin W8A16 on sm_86 emits NaN even
for synthetic random int8 weights with bitwise-verified loading — the same
kernel family as PR #4's online-FP8 collapse. That convergence (two
independent quantizers, one kernel family) is recorded on PR #4, and a
ready-to-file upstream report is staged at
probe/issue-5/UPSTREAM-REPORT-DRAFT.mdfor the #3 lane.
Two serve-path fixes were required to make any compressed-tensors artifact
servable under CPU offload (both in this PR, unit-tested):
vllm_omni/quantization/factory.py— the quant factory could not buildcompressed-tensors at all (hyphen/underscore registry miss + missing
from_configfallback); checkpoint auto-detection and the CLI both failed.vllm_omni/diffusion/model_loader/diffusers_loader.py(+is_prequantized_configin
component_config.py) — pre-quantized checkpoints were misclassified asonline quantization under CPU offload, loading everything on the GPU
(init OOM). Serialized formats now load on the host, round-tripping each
quantized module through the accelerator only for post-load transforms.
Artifacts live outside Git under the helper state root with digest manifests:
qwen-image-2.1-dit-int8wo(round one, Marlin evidence) andqwen-image-2.1-dit-w8a8dyn(round two, the working path).Evidence
BF16 (
evidence/rtx3090/artifact-verify.txt); serve loads bitwise-identically;marlin_isolate.pyNaN for real and synthetic int8, all layer geometries,bf16 and fp16 activations (
evidence/rtx3090/marlin-isolate-*.json); matrixgate FAIL 16/16 at 7.1–7.5 dB.
(
evidence/rtx3090-round2/cutlass-ops-probe.json,w8a8-layer-isolate.json);matrix 16/16 sound, PSNR 33.7/28.3/27.5 dB, walls/VRAM in the table above
(
evidence/rtx3090-round2/w8a8dyn-*). Visual checks: 4-ref apothecary sceneand 1-ref portrait render faithfully.
probe/issue-5/FINDINGS.md(both rounds, gate-calibration note,kernel-isolation chain).
Checks run
Observed:
12 failed, 790 passed, 18 skippedon the branch — the same 12fail on
mainon this host (re-run to confirm; GPU-memory-bound fp8/gguftests on the 24 GB card), so no regressions from this change.
Documentation disposition
updated —
probe/issue-5/FINDINGS.mdrecords both rounds' verdicts, therun matrices, the kernel-isolation chains, and the gate-calibration note;
helper-system follow-through for multi-model-helper-server #27 is input
only, per the issue's scope.
Merge Danger
Door: two-way. Both fixes are behavior-narrow (name-resolution fallback;
offline-detection for serialized formats) and revert cleanly; the probe kit
and artifacts are additive/independent.
Blast Radius: the quant factory's method resolution (all dict/CLI quant
specs) and the diffusion loader's CPU-offload load-path selection for
quantized checkpoints (compressed-tensors/AutoRound-style artifacts; online
fp8/int8 diffusion paths keep their GPU-side load-quantize-offload flow
unchanged).
Rollback: revert the two fix commits; the artifacts are independent of
the repo and nothing else depends on the new helper.
Reviewer prerequisites
venv/clone/snapshot) to reproduce serve numbers; the unit tests alone need
no GPU beyond what CI provides.
Qwen/Qwen-Image-2.1@790c9263under the helper state rootfor artifact rebuild/verification.
~35 min per scheme.
Pre-Test Setup
Expected:
7 passed.Manual Test Plan
Action: rebuild the working artifact and verify it numerically:
Expected: per-tensor
rel_l2≈ 0.009–0.012, 224 quantized tensors.Stop if the error is large.
Action: serve and probe one 4-reference request (GPU free):
Expected: HTTP 200 in ~34 s; structure metrics opaque ≈0.97,
alpha_mean ≈255; PSNR ≈27–28 dB vs the sealed baseline; the rendered PNG
shows the four-character apothecary scene. Stop and retain logs if PSNR
falls in the single digits or opacity collapses (that would be the broken
Marlin signature, meaning the artifact was built with the wrong scheme).
Action (optional, the negative control): reproduce the Marlin
defect with the synthetic isolation:
Expected: NaN for every layer — the upstream-report reproduction.
Failure and recovery
Retain
runs/<label>/serve.log,vram.log, and the PNGs for any failedattempt; do not record a run as passing on structure metrics alone — the
visual check and PSNR against the sealed baseline are part of the gate.
Artifact rebuilds are idempotent into fresh directories only. If init OOMs,
check
nvidia-smifor stray DiffusionWorker processes before concluding aloader regression.
Post-Merge Cleanup
_normalize_method_name canonicalizes dashes to underscores for _OVERRIDES lookup, but vLLM's QUANTIZATION_METHODS keeps historical spellings ('compressed-tensors'), so both --quantization compressed-tensors and checkpoint auto-detection raised 'Unknown quantization method'. Resolve the normalized name back to the registry spelling, and fall back to from_config for registry configs whose __init__ does not take the serialized schema (compressed-tensors config_groups/format/ignore).View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.