[Bugfix][Engine] Preserve text_encoder_tp_size in OmniEngineArgs (#7652)

Signed-off-by: mershi <mershi@tencent.com>
Co-authored-by: mershi <mershi@tencent.com>
This commit is contained in:
shiyichuanandmershi authored and GitHub committed 2026-09-21 17:01:03 +08:00
1 parent 84977d9543
commit fb2e3535af
2 files changed
+43

No files matched your search

+37
View File
@@ -543,3 +543,40 @@ def test_tensor_parallel_size_none_is_handled():
)
assert isinstance(args, dict)
assert "tensor_parallel_size" not in args
# For https://github.com/vllm-project/vllm-omni/issues/7564
def test_from_cli_args_preserves_text_encoder_tp_size():
"""`--text-encoder-tp-size` must survive from_cli_args field filtering.
Library callers build engine args via ``OmniEngineArgs.from_cli_args``;
the dataclass field filter drops any namespace attribute the dataclass
does not declare, silently resetting the diffusion text-encoder TP to 1.
"""
engine_args = OmniEngineArgs.from_cli_args(
SimpleNamespace(text_encoder_tp_size=2),
)
assert engine_args.text_encoder_tp_size == 2
# For https://github.com/vllm-project/vllm-omni/issues/7564
def test_text_encoder_tp_size_reaches_default_diffusion_parallel_config():
"""The preserved CLI value must land in DiffusionParallelConfig.
Mirrors the library flow: from_cli_args -> kwargs -> the generic
diffusion fallback, which resolves the field through
``DiffusionParallelConfig.from_stage_overrides``.
"""
from dataclasses import asdict
from vllm_omni.config.config_factory import StageConfigFactory
engine_args = OmniEngineArgs.from_cli_args(
SimpleNamespace(text_encoder_tp_size=2),
)
stage_cfg = StageConfigFactory.create_default_diffusion(
{k: v for k, v in asdict(engine_args).items() if v is not None},
)[0]
parallel_config = stage_cfg["engine_args"]["parallel_config"]
assert parallel_config["text_encoder_tp_size"] == 2
+6
View File
@@ -223,6 +223,12 @@ class OmniEngineArgs(EngineArgs):
# Diffusion request-mode batch admission (forwarded to OmniDiffusionConfig).
request_batch_max_wait_ms: float = 0.0
fa_deterministic: bool = False
# Tensor-parallel degree for the diffusion text encoder (forwarded to
# DiffusionParallelConfig via the generic diffusion fallback). Declared
# here so ``from_cli_args`` field filtering keeps ``--text-encoder-tp-size``
# for library callers (#7564); registered pipelines may consume it through
# their own stage_cli_aliases or deploy YAML.
text_encoder_tp_size: int | None = None
@classmethod
def _add_omni_specific_args(cls, parser: argparse.ArgumentParser) -> argparse.ArgumentParser: