Repository navigation
[Core] Align vLLM-Omni with vLLM 0.33.0 - #9648
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
|
@amy-why-3459 Following up on your The config and fallback changes are in Update: the previously pending before/after measurement completed before the investigation was stopped. On one reserved L20X GPU, two synchronized sessions × eight responses per session used identical inputs/reference audio and temperature 0, excluding the first two responses each. Each group yielded 432 Stage0 ITL samples and 558 output tokens, with identical public transcripts. Before619 → current9ec: median 5.508 → 5.445 ms, mean 5.586 → 6.016 ms, p95 6.081 → 6.335 ms. This single ordered pair has mixed results and does not prove regression-free behavior or an established regression. Isolated sampler CPU time and decode-call counts were not exposed by the original driver and were not captured. H100 recognition remained 10/12 scenes in both builds 3267 and 3268; the local L20X result does not qualify it. Further MiniCPM investigation has been stopped at the maintainer's request. Temporary diagnostic work was archived locally and removed from the working tree; no trace commit or new diagnostic CI was published. |
|
@amy-why-3459 Update on your
The related existing checks passed 81 tests, including the complete 51-case MiniCPM pipeline test file. The original aggregate Model Executor selection also passed on a normally reserved local L20X GPU: 8,960 passed, 8 skipped, retaining all 8,968 selected cases. Applicable pre-commit hooks passed. These local results do not claim physical NPU qualification. |
amy-why-3459
left a comment
There was a problem hiding this comment.
Incremental look at e6fa9f1e only ("Harden vLLM 0.33 compatibility adapters"), since my last pass on 9ec70209. My earlier points are unaffected by this commit.
1. _finish_error_requests now raises TypeError on the scheduler step path. If grammar_compile_error_reqs is ever a set or list (e.g. an upstream type change in a later vLLM bump), this raises inside the engine-core loop and fails every in-flight request, not just the ones with grammar errors. The new test pins that behaviour. Since the container type is a property of the installed vLLM rather than of a request, it might be safer to check it once (at scheduler init or in the existing version-compat check) and keep the per-step path non-fatal, or at least make sure the raised error surfaces clearly in the engine-core logs.
2. set_profiler_kwargs (minor). signature(torch.profiler.profile).bind(**kwargs) validates names but not types, so a wrongly typed value still fails later in the constructor. That path is covered by the restore-on-failure test, so this is fine; just noting that the docs' "checks override names" wording is accurate and shouldn't be read as full validation. The scalar-only reuse check matches the docs (lists, enums and callables always rebuild).
3. Dockerfile CPU preload smoke. any(path in maps for path in LD_PRELOAD.split() if "libcudnn.so.9" in path) compares the literal LD_PRELOAD entry against /proc/self/maps, which lists resolved paths. If the preload entry ever points at a symlink (e.g. libcudnn.so.9 -> libcudnn.so.9.x.y), this assertion fails even though the library is loaded. Comparing os.path.realpath(path) would make it robust.
4. Nit: the _add_stored_gemm_outputs -> add_stored_gemm_outputs rename looks complete (I couldn't find other callers of the old name), and the new test_reference_precision.py CPU/CUDA tests nicely exercise the real upstream QKVParallelLinear path instead of a mock.
The profiler-kwargs hardening (mapping check, unknown-name rejection, restore on construction failure, warning on active overrides) looks good and is well covered by the new tests.
|
On the latest
The prior three follow-ups are also implemented: digest/version synchronization comment, preserved platform object in the NPU fixture, and public GEMM helper. Their original reply has been updated with the code and validation results. MiniCPM investigation has been stopped at the maintainer's request; no temporary tracing was published or new diagnostic CI launched. |
amy-why-3459
left a comment
There was a problem hiding this comment.
Incremental review of 22a6b97b ("Resolve cuDNN preload paths in CPU smoke check"), compared with e6fa9f1e, which I reviewed earlier.
Comparing os.path.realpath(path) against /proc/self/maps fixes the symlink case from my last review, since the loader records the resolved file path in the maps.
One minor edge case: os.environ["LD_PRELOAD"].split() only splits on whitespace, but the dynamic loader also accepts colon-separated entries. If a later layer or CI step ever sets LD_PRELOAD=/a.so:/opt/.../libcudnn.so.9, the combined string goes through realpath as a single path and the assertion fails even though cuDNN is loaded. Splitting on both (for example re.split(r"[:\s]+", ...)) would make the check independent of how the variable is composed.
The explanation of the grammar container guard (failing explicitly through the engine-core fatal-error path rather than dropping requests) and of the profiler binding scope makes sense to me. I have nothing further on the rest of this commit.
Adapt the final upstream APIs and runtime dependencies, retain compatibility regressions, and update installation documentation and Dockerfiles. Signed-off-by: tzhouam <tzhouam@connect.ust.hk>
Parse optional Docker image digests before release tags. Split engine/entrypoint and diffusion CPU checks without dropping cases or extending the 20-minute timeout per lane. Signed-off-by: tzhouam <tzhouam@connect.ust.hk>
Keep a complete token when it reaches the soft character target, and close the chunk before the next draw. Preserve hard token caps and UTF-8 completion. Select the supported CUDA Thinker normalization and activation operators via stage kernel configuration, preserving turn defaults and model/head dtypes. Document the affected configuration and chunk-boundary contracts. Signed-off-by: tzhouam <tzhouam@connect.ust.hk>
Select NPU once through the production deploy merge instead of applying its overlay before the host CUDA overlay. Preserve every graph-mode assertion. Add typed CUDA duplex/turn configuration regressions, clarify the bounded text-cap fallback and log decode failures, move the unchanged MAGI arithmetic helper into diffusion utils, and retain the Docker version argument. Accept comments before the cuDNN requirement pin and document MUSA validation scope. Signed-off-by: tzhouam <tzhouam@connect.ust.hk>
Signed-off-by: tzhouam <tzhouam@connect.ust.hk>
Signed-off-by: tzhouam <tzhouam@connect.ust.hk>
Signed-off-by: tzhouam <tzhouam@connect.ust.hk>
22a6b97 to
3a803b6
Compare
amy-why-3459
left a comment
There was a problem hiding this comment.
Incremental look at 3a803b6c only ("Fix Simple test fixtures and parallel isolation"), since my last pass at 22a6b97b. The rest of the rebased stack wasn't re-reviewed here. This increment only touches tests.
grammar_compile_error_reqs = {}on the MagicMock schedulers: This makes sense. The vLLM 0.33update_from_outputpath now reads that attribute, and an auto-created MagicMock attribute doesn't behave like the real dict there. It's now copied into 13 hand-built mocks across 8 files, though, so the next upstream attribute will need the same sweep. A small shared helper in a test util (for examplemake_mock_scheduler(**overrides)that pre-sets the attributesupdate_from_outputreads) would keep these in sync. Fine as a follow-up.test_sibling_stage_processes_share_wakeups: Replacing thetime.sleep(0.05)with thesender_ready+startbarrier, and moving cleanup intofinally, fixes the ordering race and the process leak on failure. One nit: ifprocess.join(5)still times out afterkill(),process.close()raisesValueError, which would hide the original assertion error. Guarding the close withif not process.is_alive()would keep the real failure visible.os._exit(0)in the event-only worker and thedeadprocess: This is a sensible way to keep inherited coverage flushing out of the 0.2s shutdown budget. Since the test only checks shutdown timing and liveness, skipping the interpreter teardown doesn't hide anything it asserts on.- Root logger level restore in
test_serving_speech.py: UsingsetLevelin a finalizer (instead of assigningroot.level) is right, because it also clears the logger cache that latercaplog-based tests depend on.
Nothing blocking in this increment.
amy-why-3459
left a comment
There was a problem hiding this comment.
Looked at the new commit d8397156 ("Publish synthetic image cache atomically") only. The tests/helpers/media.py change looks correct: the cached path decodes the same bytes it returns, an undecodable cache falls back to regenerating, and the write goes to a unique temp file with os.replace, with the temp file removed in finally. io, os, uuid, Image and logger are all imported at module level, so removing the local PILImage import is safe.
A few small notes:
- Overlap with #9834. This overlaps with #9834, which makes the same synthetic-image cache change in the same helper. If both are meant to land, the second one will probably conflict in
generate_synthetic_imageand in the newtests/helpers/tests/test_synthetic_image.py. It may help to say in the description which PR carries it. np_arrayon first versus later calls. When the image is freshly generated,np_arrayis still built from the in-memory PIL image, butbase64holds the lossy JPEG bytes. On a cache hit,np_arrayis decoded from the JPEG. So the same(width, height)returns slightly different pixels depending on whether the cache was warm. This behaviour already existed, but sincetest_cached_pixels_and_payload_use_the_same_generationnow pins pixel/payload consistency for the cached path, decodingimage_byteson the fresh path too (or noting the difference in the docstring) would make both paths behave the same.- Truncated-JPEG detection depends on global Pillow state. The
except OSErrorfallback relies onimage.load()raising on a truncated file. If anything in the test process setsImageFile.LOAD_TRUNCATED_IMAGES = True, a half-written cache would be accepted silently. That's unlikely now that writes are atomic, so it's only worth a comment.
Only 3a803b6c..d8397156 was reviewed; I did not run the tests.
Gaohan123
left a comment
There was a problem hiding this comment.
LGTM. Remaining issue can be solved in follow-up PR
vllm-project/vllm-omni@main:recipes 670aa7ec6043 → 4b63581cf652 [latest.vllm-omni] vllm-project/vllm-omni@670aa7e...4b63581 Commits: - vllm-project/vllm-omni@4b63581cf652 [Core] Align vLLM-Omni with vLLM 0.33.0 (vllm-project/vllm-omni#9648) Recipes: - MiniMaxAI/MiniMax-H3 (modified): https://recipes.vllm.ai/MiniMaxAI/MiniMax-H3 - Qwen/Qwen-Image-2.1 (modified): https://recipes.vllm.ai/Qwen/Qwen-Image-2.1 - Qwen/Qwen-Image (modified): https://recipes.vllm.ai/Qwen/Qwen-Image - fishaudio/drama-3 (modified): https://recipes.vllm.ai/fishaudio/drama-3 - meituan-longcat/LongCat-Image-Edit (modified): https://recipes.vllm.ai/meituan-longcat/LongCat-Image-Edit - nvidia/Cosmos3-Nano (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Nano - nvidia/Cosmos3-Super-Image2Video (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Image2Video - nvidia/Cosmos3-Super-Text2Image (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Text2Image - nvidia/Cosmos3-Super (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super - stabilityai/stable-audio-open-1.0 (modified): https://recipes.vllm.ai/stabilityai/stable-audio-open-1.0 - stabilityai/stable-diffusion-3.5-medium (modified): https://recipes.vllm.ai/stabilityai/stable-diffusion-3.5-medium Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
vllm-project/vllm-omni@main:recipes 809548323b15 → fc7ea43775b8 [latest.vllm-omni] vllm-project/vllm-omni@8095483...fc7ea43 Commits: - vllm-project/vllm-omni@bfe3d20c8ca4 [Bugfix][MammothModa2] Route AR MoE experts graph-safely under cudagraph capture (vllm-project/vllm-omni#9764) - vllm-project/vllm-omni@4b63581cf652 [Core] Align vLLM-Omni with vLLM 0.33.0 (vllm-project/vllm-omni#9648) - vllm-project/vllm-omni@670aa7ec6043 [Model] TaoMate-H3: full-request inference and streamed audio delivery (vllm-project/vllm-omni#8676) - vllm-project/vllm-omni@01c3f711a8d7 [Model] Add experimental Physis Same-Step Wan, LTX and MiniMax-H3 (vllm-project/vllm-omni#9154) Recipes: - MiniMaxAI/MiniMax-H3 (modified): https://recipes.vllm.ai/MiniMaxAI/MiniMax-H3 - Qwen/Qwen-Image-2.1 (modified): https://recipes.vllm.ai/Qwen/Qwen-Image-2.1 - Qwen/Qwen-Image (modified): https://recipes.vllm.ai/Qwen/Qwen-Image - fishaudio/drama-3 (modified): https://recipes.vllm.ai/fishaudio/drama-3 - meituan-longcat/LongCat-Image-Edit (modified): https://recipes.vllm.ai/meituan-longcat/LongCat-Image-Edit - nvidia/Cosmos3-Nano (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Nano - nvidia/Cosmos3-Super-Image2Video (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Image2Video - nvidia/Cosmos3-Super-Text2Image (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Text2Image - nvidia/Cosmos3-Super (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super - stabilityai/stable-audio-open-1.0 (modified): https://recipes.vllm.ai/stabilityai/stable-audio-open-1.0 - stabilityai/stable-diffusion-3.5-medium (modified): https://recipes.vllm.ai/stabilityai/stable-diffusion-3.5-medium Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
vllm-project/vllm-omni@main:recipes 809548323b15 → fc7ea43775b8 [latest.vllm-omni] vllm-project/vllm-omni@8095483...fc7ea43 Commits: - vllm-project/vllm-omni@bfe3d20c8ca4 [Bugfix][MammothModa2] Route AR MoE experts graph-safely under cudagraph capture (vllm-project/vllm-omni#9764) - vllm-project/vllm-omni@4b63581cf652 [Core] Align vLLM-Omni with vLLM 0.33.0 (vllm-project/vllm-omni#9648) - vllm-project/vllm-omni@670aa7ec6043 [Model] TaoMate-H3: full-request inference and streamed audio delivery (vllm-project/vllm-omni#8676) - vllm-project/vllm-omni@01c3f711a8d7 [Model] Add experimental Physis Same-Step Wan, LTX and MiniMax-H3 (vllm-project/vllm-omni#9154) Recipes: - MiniMaxAI/MiniMax-H3 (modified): https://recipes.vllm.ai/MiniMaxAI/MiniMax-H3 - Qwen/Qwen-Image-2.1 (modified): https://recipes.vllm.ai/Qwen/Qwen-Image-2.1 - Qwen/Qwen-Image (modified): https://recipes.vllm.ai/Qwen/Qwen-Image - fishaudio/drama-3 (modified): https://recipes.vllm.ai/fishaudio/drama-3 - meituan-longcat/LongCat-Image-Edit (modified): https://recipes.vllm.ai/meituan-longcat/LongCat-Image-Edit - nvidia/Cosmos3-Nano (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Nano - nvidia/Cosmos3-Super-Image2Video (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Image2Video - nvidia/Cosmos3-Super-Text2Image (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Text2Image - nvidia/Cosmos3-Super (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super - stabilityai/stable-audio-open-1.0 (modified): https://recipes.vllm.ai/stabilityai/stable-audio-open-1.0 - stabilityai/stable-diffusion-3.5-medium (modified): https://recipes.vllm.ai/stabilityai/stable-diffusion-3.5-medium Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
vllm-project/vllm-omni@main:recipes 4cbaec9d0146 → fc7ea43775b8 [latest.vllm-omni] vllm-project/vllm-omni@4cbaec9...fc7ea43 Commits: - vllm-project/vllm-omni@bfe3d20c8ca4 [Bugfix][MammothModa2] Route AR MoE experts graph-safely under cudagraph capture (vllm-project/vllm-omni#9764) - vllm-project/vllm-omni@4b63581cf652 [Core] Align vLLM-Omni with vLLM 0.33.0 (vllm-project/vllm-omni#9648) - vllm-project/vllm-omni@670aa7ec6043 [Model] TaoMate-H3: full-request inference and streamed audio delivery (vllm-project/vllm-omni#8676) - vllm-project/vllm-omni@01c3f711a8d7 [Model] Add experimental Physis Same-Step Wan, LTX and MiniMax-H3 (vllm-project/vllm-omni#9154) Recipes: - MiniMaxAI/MiniMax-H3 (modified): https://recipes.vllm.ai/MiniMaxAI/MiniMax-H3 - Qwen/Qwen-Image-2.1 (modified): https://recipes.vllm.ai/Qwen/Qwen-Image-2.1 - Qwen/Qwen-Image (modified): https://recipes.vllm.ai/Qwen/Qwen-Image - fishaudio/drama-3 (modified): https://recipes.vllm.ai/fishaudio/drama-3 - meituan-longcat/LongCat-Image-Edit (modified): https://recipes.vllm.ai/meituan-longcat/LongCat-Image-Edit - nvidia/Cosmos3-Nano (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Nano - nvidia/Cosmos3-Super-Image2Video (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Image2Video - nvidia/Cosmos3-Super-Text2Image (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Text2Image - nvidia/Cosmos3-Super (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super - stabilityai/stable-audio-open-1.0 (modified): https://recipes.vllm.ai/stabilityai/stable-audio-open-1.0 - stabilityai/stable-diffusion-3.5-medium (modified): https://recipes.vllm.ai/stabilityai/stable-diffusion-3.5-medium Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
vllm-project/vllm-omni@main:recipes 670aa7ec6043 → a8220b0352f1 [latest.vllm-omni] vllm-project/vllm-omni@670aa7e...a8220b0 Commits: - vllm-project/vllm-omni@a8220b0352f1 [Doc] Add Qwen-Image-2.1 Ascend 910B1 low-latency serving recipe (vllm-project/vllm-omni#9796) - vllm-project/vllm-omni@bfe3d20c8ca4 [Bugfix][MammothModa2] Route AR MoE experts graph-safely under cudagraph capture (vllm-project/vllm-omni#9764) - vllm-project/vllm-omni@4b63581cf652 [Core] Align vLLM-Omni with vLLM 0.33.0 (vllm-project/vllm-omni#9648) Recipes: - MiniMaxAI/MiniMax-H3 (modified): https://recipes.vllm.ai/MiniMaxAI/MiniMax-H3 - Qwen/Qwen-Image-2.1 (modified): https://recipes.vllm.ai/Qwen/Qwen-Image-2.1 - Qwen/Qwen-Image (modified): https://recipes.vllm.ai/Qwen/Qwen-Image - fishaudio/drama-3 (modified): https://recipes.vllm.ai/fishaudio/drama-3 - meituan-longcat/LongCat-Image-Edit (modified): https://recipes.vllm.ai/meituan-longcat/LongCat-Image-Edit - nvidia/Cosmos3-Nano (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Nano - nvidia/Cosmos3-Super-Image2Video (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Image2Video - nvidia/Cosmos3-Super-Text2Image (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Text2Image - nvidia/Cosmos3-Super (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super - stabilityai/stable-audio-open-1.0 (modified): https://recipes.vllm.ai/stabilityai/stable-audio-open-1.0 - stabilityai/stable-diffusion-3.5-medium (modified): https://recipes.vllm.ai/stabilityai/stable-diffusion-3.5-medium Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
vllm-project/vllm-omni@main:recipes 670aa7ec6043 → a8220b0352f1 [latest.vllm-omni] vllm-project/vllm-omni@670aa7e...a8220b0 Commits: - vllm-project/vllm-omni@a8220b0352f1 [Doc] Add Qwen-Image-2.1 Ascend 910B1 low-latency serving recipe (vllm-project/vllm-omni#9796) - vllm-project/vllm-omni@bfe3d20c8ca4 [Bugfix][MammothModa2] Route AR MoE experts graph-safely under cudagraph capture (vllm-project/vllm-omni#9764) - vllm-project/vllm-omni@4b63581cf652 [Core] Align vLLM-Omni with vLLM 0.33.0 (vllm-project/vllm-omni#9648) Recipes: - MiniMaxAI/MiniMax-H3 (modified): https://recipes.vllm.ai/MiniMaxAI/MiniMax-H3 - Qwen/Qwen-Image-2.1 (modified): https://recipes.vllm.ai/Qwen/Qwen-Image-2.1 - Qwen/Qwen-Image (modified): https://recipes.vllm.ai/Qwen/Qwen-Image - fishaudio/drama-3 (modified): https://recipes.vllm.ai/fishaudio/drama-3 - meituan-longcat/LongCat-Image-Edit (modified): https://recipes.vllm.ai/meituan-longcat/LongCat-Image-Edit - nvidia/Cosmos3-Nano (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Nano - nvidia/Cosmos3-Super-Image2Video (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Image2Video - nvidia/Cosmos3-Super-Text2Image (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super-Text2Image - nvidia/Cosmos3-Super (modified): https://recipes.vllm.ai/nvidia/Cosmos3-Super - stabilityai/stable-audio-open-1.0 (modified): https://recipes.vllm.ai/stabilityai/stable-audio-open-1.0 - stabilityai/stable-diffusion-3.5-medium (modified): https://recipes.vllm.ai/stabilityai/stable-diffusion-3.5-medium Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
vllm-project/vllm-omni#9648 merged and v0.33.0rc1 is published on PyPI, so the installer no longer builds Omni from a GitHub source archive. Also correct the structural-tag docs: 0.33 release candidates and development builds use the default since 570b8ab. Signed-off-by: Julien Darve <jdarve@NVIDIA.com>
vLLM 0.33 moves runtime hooks and serving APIs that Omni overrides, and changes the CUDA/Torch dependency set. This PR restores those integration points and repairs failures exposed by validating the existing workloads against the final release.
Contributor intent
41ef6bdbc9321e785943b41e583735f48d70edfe; candidated8397156120955c4e24141519356bbc8977243c4; vLLM 0.32.05df63a72→ final 0.33.04ba787ec9959e566d3b587a796dff07673324da5.Why these changes are needed
update_from_output, which Omni overrides. Restore those steps in the Omni paths, publish only materialized KV, drain deferred HiSparse loads at the completed-step fence, and respect the new final-token truncation boundary. Otherwise prefixes are not cached, stopped streams can remain unscheduled, or session append hits the upstream assertion.has_topp_only_rowsargument. These prevent wrong graph selection, incomplete writes, lost connector results and callback/masking errors. Register custom-sampler kernels during startup so their first use is covered by warmup.RequestErrormessages/codes through scheduler, output processor and frontend, including errors issued before execution; avoid duplicate duplex error delivery.profiler_kwargs; Omni overrides must accept and reset these options. Validate override names, restore state if construction fails, and rebuild accumulating sessions so an invalid request or a reusedacc_events=Trueprofiler does not contaminate a later session.img2imgprefix attention through a narrow host-side alias toimage. Without the alias, the new shared prefix helper misses those bidirectional spans. Original modality/cache identities remain intact.uv pip checkand native imports remain required.lm_head.weightstorage. Aliasing that storage with the embedding table makes vocabulary lookup go out of bounds. When quantization is configured, leave the unused head detached; prompt encoding consumes hidden states rather than head logits.KernelConfigthrough the typed stage-config path. Turn profiles reset the inherited kernel defaults. This improves the tested local case, but does not resolve the H100 recognition failure below.grammar_compile_error_reqsdictionary; initialize it in the existing mock fixtures rather than weakening production validation. Isolate the real router test's SageMaker root-logging side effect, measure SHM wakeups after connector startup, and keep synthetic Event workers independent of coverage-exit I/O. Publish synthetic JPEGs through a complete in-memory encoding and atomic cache replacement so parallel collectors cannot open a truncated file; decode cached pixels and payload from the same byte snapshot, and regenerate incomplete cache entries. Preserve the original warning, timing, exit-code and selected-case assertions.The rebase adopts main's CPU collection fix #9785: its atomic overlay publisher, stable SHM parameter IDs and 36-line publication regression are unchanged from main. The equivalent local publisher/IDs and three local regression cases were removed from this diff and archived locally. Main's combined Engine&Entrypoints&Diffusion CPU lane retains its 25-minute budget; its complete current-head CI result is pending. Main's L4 thinker KV-budget fix is also retained.
Full-nightly comparison (same frozen main baseline): main control at
41ef6bdbc9321e785943b41e583735f48d70edfeand candidate atd8397156120955c4e24141519356bbc8977243c4. The new candidate result is pending; the main control already has failures, including MiniCPM and Qwen-Image latency. Main CPU Coverage passed. The one-off candidate and reused main control retainNIGHTLY=1,RUN_HUNYUAN_IMAGE3_PERF=1, all 16 performance lanes andEMAIL_DISTRIBUTION=0. Four-hour refreshes, daily CI and background automation remain disabled.Scope and validation
Against the comparison merge base, the diff is 201 files, +3,787 / -660 lines:
Temporary recognition traces, Conv1 precision experiments, FP32-head experiments and unrelated feature work are excluded. Existing main MRv2 DCP/KV gaps are not claimed fixed.
Current candidate
d8397156120955c4e24141519356bbc8977243c4, native vLLM 0.33 / Torch 2.14:-n 4 --dist loadgroup, with an independent cold temporary cache: 34,468 passed, 92 skipped, 1 xfailed, 2 failed and 1 setup error. An L20X CUDA device was visible because existing CPU-marked Helios/Kandinsky initialization uses CUDA; this is not a no-GPU qualification. All eight new image tests passed within this full selection.PIL.UnidentifiedImageError; the fix passed all 8. They cover cold/hot concurrent reads, incomplete-cache repair, failed publication preserving the old image, and matching cached pixels/payload bytes.3a803b6c4; the follow-up above changes only the synthetic-image helper and its tests.Build 3273 passed 34,443 CPU tests but failed during collection while opening a shared synthetic JPEG. Main 3272's corresponding CPU Coverage job passed. The image helper is unchanged between their comparison base and the old candidate: the failure does not establish a Pillow/vLLM kernel regression. Its direct final-path write exposes partial JPEGs to parallel collectors; that race is reproduced locally. The CI log did not preserve the failed file or writer identity.
Fresh candidate full-nightly correctness and performance results remain pending at the links above; the focused local passes and disclosed full-suite result do not establish full model or performance acceptance.
Unresolved MiniCPM quality: H100 CI 3267/3268 at the earlier candidate revisions reproduced identical 10/12 scene coverage (missing 11/12), although a local L20X case passed. Similar vLLM 0.32 reports already exist, so this is not claimed to have first appeared in 0.33. It remains tracked in issue #9828. Further MiniCPM investigation has stopped for this PR; no H100 quality fix or all-green full-CI claim is made.
AI assistance: Codex prepared these scoped compatibility changes, validation and review follow-ups under the maintainer's instructions.