[Entrypoints] online serving support usp args (#366)
Signed-off-by: David Chen <530634352@qq.com>
This commit is contained in:
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:
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user