Skip to content

[Bugfix] Select the AR-Diffusion engine in the DreamZero CFG-parallel deploy config - #5439

Merged
lishunyang12 merged 2 commits into
vllm-project:mainfrom
tzhouam:bugfix/dreamzero-cfg2-ar-diffusion-engine
Jul 28, 2026
Merged

lishunyang12 merged 2 commits into
vllm-project:mainfrom
tzhouam:bugfix/dreamzero-cfg2-ar-diffusion-engine

Conversation

@tzhouam

@tzhouam tzhouam commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Purpose

Fixes #5046.

DreamZeroPipeline requires the AR-Diffusion engine and raises at construction when engine_backend resolves to anything else. #4534 added engine_backend to vllm_omni/deploy/dreamzero.yaml but not to vllm_omni/deploy/dreamzero_tp1_cfg2.yaml, and nothing else injects it (OmniDiffusionConfig.engine_backend defaults to "default"). Every launch through the CFG-parallel config therefore died during worker startup:

ValueError: DreamZeroPipeline requires the AR-Diffusion engine; set engine_backend:
vllm_omni.experimental.ar_diffusion.engine.ARDiffusionEngine in the deploy config
(got engine_backend='default').

Both workers died, the executor got EOFError on reader.recv(), and stage init tore the server down — the rest of the traceback in the issue is that cascade.

This is not CI-only: examples/online_serving/dreamzero/run_server.sh defaults to the same config, so the documented multi-GPU serving path was broken too.

Two changes:

  1. Add the missing engine_backend to dreamzero_tp1_cfg2.yaml, matching dreamzero.yaml. No other change is needed — CFG parallelism is already handled by the capability, which collapses the negative branch onto local_index=0 when cfg_world >= 2.
  2. Add tests/dreamzero/test_deploy_configs.py, a CPU test asserting every shipped dreamzero*.yaml stage selects an AR-Diffusion engine. It resolves the import path through DiffusionEngine.resolve_engine_class rather than string-matching, so a stale or typo'd path fails too. Previously only an H100x2 slow-marked e2e test covered this, which is why it surfaced weekly rather than in PR CI.

Test Plan

  • pytest tests/dreamzero/test_deploy_configs.py
  • Negative control: temporarily remove the new engine_backend line and confirm only the dreamzero_tp1_cfg2.yaml case fails.
  • pre-commit run --files vllm_omni/deploy/dreamzero_tp1_cfg2.yaml tests/dreamzero/test_deploy_configs.py

vLLM Version: 0.25.0

vLLM-Omni Commit: 84bbd57

Test Result

tests/dreamzero/test_deploy_configs.py::test_dreamzero_deploy_configs_exist PASSED
tests/dreamzero/test_deploy_configs.py::test_dreamzero_stage_selects_ar_diffusion_engine[dreamzero.yaml-0-stage0] PASSED
tests/dreamzero/test_deploy_configs.py::test_dreamzero_stage_selects_ar_diffusion_engine[dreamzero_tp1_cfg2.yaml-0-stage1] PASSED
3 passed in 9.96s

Negative control, with the fix reverted:

FAILED tests/dreamzero/test_deploy_configs.py::test_dreamzero_stage_selects_ar_diffusion_engine[dreamzero_tp1_cfg2.yaml-0-stage1]
1 failed, 2 passed

pre-commit: all hooks passed.

Not run: the weekly test_dreamzero_openpi_online e2e test, which needs 2x H100. The new test covers the config-level regression, not the full serving path — worth confirming the weekly job goes green after this merges.

🤖 Generated with Claude Code

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

Comment thread tests/dreamzero/test_deploy_configs.py Outdated

pytestmark = [pytest.mark.core_model, pytest.mark.cpu]

DEPLOY_DIR = Path(vllm_omni.__file__).parent / "deploy"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please use get_deploy_config_path

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 6673f83 — now resolves through tests.helpers.stage_config.get_deploy_config_path, matching tests/test_config_factory.py, so the CI-overlay resolution applies too.

The directory is still derived from the helper (Path(get_deploy_config_path("dreamzero.yaml")).parent) rather than hardcoding a filename list, so a future dreamzero*.yaml is covered without editing the test. Each discovered name is then resolved back through the helper.

Re-verified: 3 passed; and with the engine_backend line removed again, only the dreamzero_tp1_cfg2.yaml case fails.

tzhouam and others added 2 commits July 27, 2026 17:13
… deploy config

DreamZeroPipeline requires the AR-Diffusion engine and raises at construction
when engine_backend resolves to anything else. vllm-project#4534 added engine_backend to
vllm_omni/deploy/dreamzero.yaml but not to dreamzero_tp1_cfg2.yaml, so every
launch through the CFG-parallel config died during worker startup with:

  ValueError: DreamZeroPipeline requires the AR-Diffusion engine; set
  engine_backend: ...ARDiffusionEngine in the deploy config
  (got engine_backend='default').

This broke the weekly DreamZero e2e serving test, which passes that config
explicitly, and examples/online_serving/dreamzero/run_server.sh, which
defaults to it.

Add the missing engine_backend, plus a CPU test asserting that every shipped
dreamzero*.yaml stage selects an AR-Diffusion engine. The test resolves the
import path through DiffusionEngine.resolve_engine_class rather than matching
a string, so a stale or typo'd path fails too. Previously only an H100x2
slow-marked e2e test covered this.

Fixes vllm-project#5046

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Use the shared tests/helpers/stage_config helper instead of deriving the
deploy directory from vllm_omni.__file__, matching tests/test_config_factory.py
and picking up the helper's CI-overlay resolution.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@tzhouam
tzhouam force-pushed the bugfix/dreamzero-cfg2-ar-diffusion-engine branch from 6673f83 to 44be9e8 Compare July 27, 2026 09:14
@hsliuustc0106 hsliuustc0106 added bug Something isn't working diffusion codes related to diffusion models labels Jul 28, 2026
@tzhouam tzhouam added the ready label to trigger buildkite CI label Jul 28, 2026
@lishunyang12
lishunyang12 merged commit 66a9b0c into vllm-project:main Jul 28, 2026
8 of 9 checks passed
nagisa-kunhah pushed a commit to nagisa-kunhah/vllm-omni that referenced this pull request Jul 30, 2026
… deploy config (vllm-project#5439)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
khairulkabir1661 pushed a commit to khairulkabir1661/vllm-omni that referenced this pull request Sep 25, 2026
… deploy config (vllm-project#5439)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working diffusion codes related to diffusion models ready label to trigger buildkite CI

Projects

None yet

4 participants