From 30191ed112d457fdabbe9ab648c1bb45838b525a Mon Sep 17 00:00:00 2001 From: Didan Deng <33117903+wtomin@users.noreply.github.com> Date: Sat, 7 Mar 2026 01:45:02 +0800 Subject: [PATCH] [Feature]: Add vae-patch-parallel CLI argument in online serving (#1716) Signed-off-by: Didan Deng <33117903+wtomin@users.noreply.github.com> --- .../examples/online_serving/text_to_image.md | 23 +++++++++++++++++++ vllm_omni/entrypoints/async_omni.py | 2 ++ vllm_omni/entrypoints/cli/serve.py | 9 ++++++++ 3 files changed, 34 insertions(+) diff --git a/docs/user_guide/examples/online_serving/text_to_image.md b/docs/user_guide/examples/online_serving/text_to_image.md index be8c7d894..793129488 100644 --- a/docs/user_guide/examples/online_serving/text_to_image.md +++ b/docs/user_guide/examples/online_serving/text_to_image.md @@ -23,6 +23,29 @@ Or use the startup script: bash run_server.sh ``` +### Start with Parallelism Acceleration + +Enable Tensor Parallelism and VAE Patch Parallelism for faster inference: + +```bash +# With Tensor Parallelism (requires >= 2 GPUs) +vllm serve Qwen/Qwen-Image --omni --port 8091 --tensor-parallel-size 2 + +# With Tensor Parallelism and VAE Patch Parallelism (requires >= 2 GPUs) +vllm serve Qwen/Qwen-Image --omni --port 8091 --tensor-parallel-size 2 --vae-patch-parallel-size 2 --vae-use-tiling + +# With Sequence Parallelism (Ulysses-SP, requires >= 2 GPUs) +vllm serve Qwen/Qwen-Image --omni --port 8091 --usp 2 + +# With Ring-Attention (requires >= 2 GPUs) +vllm serve Qwen/Qwen-Image --omni --port 8091 --ring 2 + +# Combined: Ulysses + Ring (requires >= 4 GPUs) +vllm serve Qwen/Qwen-Image --omni --port 8091 --usp 2 --ring 2 +``` + +For more details on parallelism acceleration, see the [Parallelism Acceleration Guide](../../diffusion/parallelism_acceleration.md). + ## API Calls ### Method 1: Using curl diff --git a/vllm_omni/entrypoints/async_omni.py b/vllm_omni/entrypoints/async_omni.py index 6939987b0..e393f31be 100644 --- a/vllm_omni/entrypoints/async_omni.py +++ b/vllm_omni/entrypoints/async_omni.py @@ -141,6 +141,7 @@ class AsyncOmni(OmniBase): sequence_parallel_size = kwargs.get("sequence_parallel_size") tensor_parallel_size = kwargs.get("tensor_parallel_size") or 1 cfg_parallel_size = kwargs.get("cfg_parallel_size") or 1 + vae_patch_parallel_size = kwargs.get("vae_patch_parallel_size") or 1 use_hsdp = kwargs.get("use_hsdp", False) hsdp_shard_size = kwargs.get("hsdp_shard_size", -1) hsdp_replicate_size = kwargs.get("hsdp_replicate_size", 1) @@ -165,6 +166,7 @@ class AsyncOmni(OmniBase): ulysses_degree=ulysses_degree, ring_degree=ring_degree, cfg_parallel_size=cfg_parallel_size, + vae_patch_parallel_size=vae_patch_parallel_size, use_hsdp=use_hsdp, hsdp_shard_size=hsdp_shard_size, hsdp_replicate_size=hsdp_replicate_size, diff --git a/vllm_omni/entrypoints/cli/serve.py b/vllm_omni/entrypoints/cli/serve.py index a580f9536..7365e73bb 100644 --- a/vllm_omni/entrypoints/cli/serve.py +++ b/vllm_omni/entrypoints/cli/serve.py @@ -219,6 +219,7 @@ class OmniServeCommand(CLISubcommand): ) omni_config_group.add_argument( "--ring", + "--ring-degree", dest="ring_degree", type=int, default=None, @@ -335,6 +336,14 @@ class OmniServeCommand(CLISubcommand): help="Number of devices for CFG parallel computation for diffusion models. " "Equivalent to setting DiffusionParallelConfig.cfg_parallel_size.", ) + omni_config_group.add_argument( + "--vae-patch-parallel-size", + type=int, + default=1, + help="VAE Patch Parallelism degree for diffusion models. " + "Distributes VAE decode workload across multiple ranks by splitting the latent spatially. " + "Equivalent to setting DiffusionParallelConfig.vae_patch_parallel_size.", + ) # Default sampling parameters omni_config_group.add_argument(