[Entrypoints] online serving support usp args (#366)

Signed-off-by: David Chen <530634352@qq.com>
This commit is contained in:
WeiQing Chen authored and GitHub committed 2025-12-19 11:59:07 +08:00
1 parent 5216cf4ae6
commit 9464e1479d
3 files changed
+32 -2

No files matched your search

@@ -40,6 +40,15 @@ outputs = omni.generate(prompt="A cat sitting on a windowsill", num_inference_st
See `examples/offline_inference/text_to_image/text_to_image.py` for a complete working example.
##### Online Serving
You can enable Ulysses-SP in online serving for diffusion models via `--usp`:
```bash
# Text-to-image (requires >= 2 GPUs)
vllm serve Qwen/Qwen-Image --omni --port 8091 --usp 2
```
##### Benchmarks
!!! note "Benchmark Disclaimer"
These benchmarks are provided for **general reference only**. The configurations shown use default or common parameter settings and have not been exhaustively optimized for maximum performance. Actual performance may vary based on:
+10 -1
View File
@@ -134,9 +134,18 @@ class OmniServeCommand(CLISubcommand):
serve_parser.add_argument(
"--num-gpus",
type=int,
default=1,
default=None,
help="Number of GPUs to use for diffusion model inference.",
)
serve_parser.add_argument(
"--usp",
"--ulysses-degree",
dest="ulysses_degree",
type=int,
default=None,
help="Ulysses Sequence Parallelism degree for diffusion models. "
"Equivalent to setting DiffusionParallelConfig.ulysses_degree.",
)
# Cache optimization parameters
serve_parser.add_argument(
+13 -1
View File
@@ -40,7 +40,7 @@ from vllm.logger import init_logger
from vllm.transformers_utils.tokenizer import MistralTokenizer
from vllm.utils import decorate_logs
from vllm_omni.diffusion.data import OmniDiffusionConfig
from vllm_omni.diffusion.data import DiffusionParallelConfig, OmniDiffusionConfig
from vllm_omni.diffusion.utils.hf_utils import is_diffusion_model
from vllm_omni.entrypoints.async_diffusion import AsyncOmniDiffusion
from vllm_omni.entrypoints.async_omni import AsyncOmni
@@ -236,6 +236,18 @@ async def build_async_diffusion(
config_field_names = {f.name for f in fields(OmniDiffusionConfig)}
diffusion_kwargs: dict[str, Any] = {"model": args.model}
# Diffusion parallelism configuration (e.g. `--usp 2`).
parallel_config_kwargs: dict[str, Any] = {}
for field in fields(DiffusionParallelConfig):
if not hasattr(args, field.name):
continue
value = getattr(args, field.name)
if value is None:
continue
parallel_config_kwargs[field.name] = value
if parallel_config_kwargs:
diffusion_kwargs["parallel_config"] = DiffusionParallelConfig(**parallel_config_kwargs)
for field_name in config_field_names:
if not hasattr(args, field_name):
continue