From 8e3dce781e0c05642bab6597ea81dbe8ee369f7f Mon Sep 17 00:00:00 2001 From: Didan Deng <33117903+wtomin@users.noreply.github.com> Date: Wed, 11 Feb 2026 17:17:48 +0800 Subject: [PATCH] Unifying CLI Argument Naming Style (#1309) Signed-off-by: Didan Deng <33117903+wtomin@users.noreply.github.com> --- .../download_process_data_seedtts.md | 2 +- .../build_dataset/extract_tts_prompts.py | 2 +- benchmarks/qwen3-omni/README.md | 2 +- .../eval_qwen3_moe_omni_transformers.sh | 2 +- .../qwen3_omni_moe_transformers.py | 8 +- docs/contributing/features/cfg_parallel.md | 10 +-- .../features/sequence_parallel.md | 12 +-- docs/contributing/features/tensor_parallel.md | 8 +- docs/contributing/profiling.md | 12 +-- .../diffusion/cache_dit_acceleration.md | 4 +- .../diffusion/parallelism_acceleration.md | 6 +- .../offline_inference/image_to_image.md | 26 +++--- .../offline_inference/image_to_video.md | 44 +++++----- .../offline_inference/lora_inference.md | 8 +- .../offline_inference/text_to_audio.md | 16 ++-- .../offline_inference/text_to_image.md | 20 ++--- .../offline_inference/text_to_video.md | 28 +++--- examples/offline_inference/bagel/end2end.py | 2 +- .../image_to_image/image_edit.py | 88 +++++++++---------- .../image_to_image/image_to_image.md | 26 +++--- .../run_qwen_image_edit_2511.sh | 6 +- .../image_to_video/README.md | 44 +++++----- .../image_to_video/image_to_video.py | 22 ++--- .../lora_inference/README.md | 8 +- .../lora_inference/lora_inference.py | 2 +- .../offline_inference/text_to_audio/README.md | 16 ++-- .../text_to_audio/text_to_audio.py | 18 ++-- .../offline_inference/text_to_image/README.md | 20 ++--- .../text_to_image/gradio_demo.py | 2 +- .../text_to_image/text_to_image.py | 28 +++--- .../text_to_video/text_to_video.md | 28 +++--- .../text_to_video/text_to_video.py | 30 +++---- 32 files changed, 275 insertions(+), 275 deletions(-) diff --git a/benchmarks/build_dataset/download_process_data_seedtts.md b/benchmarks/build_dataset/download_process_data_seedtts.md index 54bb0f9c9..ec16f6442 100644 --- a/benchmarks/build_dataset/download_process_data_seedtts.md +++ b/benchmarks/build_dataset/download_process_data_seedtts.md @@ -56,7 +56,7 @@ python extract_tts_prompts.py -i meta.lst -o top100.txt -n 100 **Options:** - `-i, --input`: Input metadata file (default: `meta.lst`) - `-o, --output`: Output prompts file (default: `prompts.txt`) -- `-n, --num_lines`: Number of prompts to extract (required) +- `-n, --num-lines`: Number of prompts to extract (required) ### 7. Clean Up (Optional) diff --git a/benchmarks/build_dataset/extract_tts_prompts.py b/benchmarks/build_dataset/extract_tts_prompts.py index 4ca3d1908..bd6ae9bdb 100644 --- a/benchmarks/build_dataset/extract_tts_prompts.py +++ b/benchmarks/build_dataset/extract_tts_prompts.py @@ -56,7 +56,7 @@ def main(): "-o", "--output", type=str, default="prompts.txt", help="Output txt file path (default: prompts.txt)" ) parser.add_argument( - "-n", "--num_lines", type=int, required=True, help="Number of lines to extract from the beginning" + "-n", "--num-lines", type=int, required=True, help="Number of lines to extract from the beginning" ) args = parser.parse_args() diff --git a/benchmarks/qwen3-omni/README.md b/benchmarks/qwen3-omni/README.md index c76fea895..f82e20a41 100644 --- a/benchmarks/qwen3-omni/README.md +++ b/benchmarks/qwen3-omni/README.md @@ -36,7 +36,7 @@ bash benchmarks/qwen3-omni/transformers/eval_qwen3_moe_omni_transformers.sh ``` What it does: -- Runs `qwen3_omni_moe_transformers.py` over `top100.txt` with `--num_prompts 100`. +- Runs `qwen3_omni_moe_transformers.py` over `top100.txt` with `--num-prompts 100`. - Outputs to `benchmarks/qwen3-omni/transformers/benchmark_results/`: - `perf_stats.json` — aggregated & per-prompt TPS/latency (thinker/talker/code2wav/overall). - `results.json` — per-prompt outputs and audio paths. diff --git a/benchmarks/qwen3-omni/transformers/eval_qwen3_moe_omni_transformers.sh b/benchmarks/qwen3-omni/transformers/eval_qwen3_moe_omni_transformers.sh index 2679adf4f..bae514fab 100644 --- a/benchmarks/qwen3-omni/transformers/eval_qwen3_moe_omni_transformers.sh +++ b/benchmarks/qwen3-omni/transformers/eval_qwen3_moe_omni_transformers.sh @@ -16,7 +16,7 @@ if [[ ! -f "benchmarks/qwen3-omni/transformers/qwen3_omni_moe_transformers.py" ] else cd benchmarks/qwen3-omni/transformers - python qwen3_omni_moe_transformers.py --prompts_file ../../build_dataset/top100.txt --num_prompts 100 + python qwen3_omni_moe_transformers.py --prompts-file ../../build_dataset/top100.txt --num-prompts 100 echo "Logs and outputs are saved to $(pwd)/benchmark_results:" echo " - perf_stats.json Aggregated/per-prompt TPS and latency (thinker/talker/code2wav/overall)" diff --git a/benchmarks/qwen3-omni/transformers/qwen3_omni_moe_transformers.py b/benchmarks/qwen3-omni/transformers/qwen3_omni_moe_transformers.py index 68ab2a1e3..87d3de797 100644 --- a/benchmarks/qwen3-omni/transformers/qwen3_omni_moe_transformers.py +++ b/benchmarks/qwen3-omni/transformers/qwen3_omni_moe_transformers.py @@ -227,17 +227,17 @@ def print_stats(stats: dict): def main(): parser = argparse.ArgumentParser(description="Qwen3-Omni Benchmark Script") parser.add_argument( - "--prompts_file", + "--prompts-file", type=str, default="benchmark/build_dataset/top100.txt", help="Path to the prompts file (one prompt per line)", ) parser.add_argument( - "--output_dir", type=str, default="benchmark_results", help="Directory to save benchmark results" + "--output-dir", type=str, default="benchmark_results", help="Directory to save benchmark results" ) - parser.add_argument("--model_path", type=str, default=MODEL_PATH, help="Path to the model") + parser.add_argument("--model-path", type=str, default=MODEL_PATH, help="Path to the model") parser.add_argument("--speaker", type=str, default="Ethan", help="Speaker voice for audio output") - parser.add_argument("--num_prompts", type=int, default=None, help="Number of prompts to process (default: all)") + parser.add_argument("--num-prompts", type=int, default=None, help="Number of prompts to process (default: all)") args = parser.parse_args() # Load model and processor diff --git a/docs/contributing/features/cfg_parallel.md b/docs/contributing/features/cfg_parallel.md index adfe447c9..b169f13d0 100644 --- a/docs/contributing/features/cfg_parallel.md +++ b/docs/contributing/features/cfg_parallel.md @@ -188,11 +188,11 @@ cd examples/offline_inference/text_to_image python text_to_image.py \ --model Your-org/your-model \ --prompt "a cup of coffee on the table" \ - --negative_prompt "ugly, unclear" \ - --cfg_scale 4.0 \ - --num_inference_steps 50 \ + --negative-prompt "ugly, unclear" \ + --cfg-scale 4.0 \ + --num-inference-steps 50 \ --output "cfg_enabled.png" \ - --cfg_parallel_size 2 + --cfg-parallel-size 2 ``` **Verify:** @@ -246,4 +246,4 @@ Adding CFG-Parallel support: 1. ✅ **Create mixin** - Inherit from `CFGParallelMixin` and implement `diffuse()` method 2. ✅ **(Optional) Customize** - Override `predict_noise()` or `cfg_normalize_function()` for custom behavior -3. ✅ **Test** - Verify with `--cfg_parallel_size 2` and compare performance +3. ✅ **Test** - Verify with `--cfg-parallel-size 2` and compare performance diff --git a/docs/contributing/features/sequence_parallel.md b/docs/contributing/features/sequence_parallel.md index 3bcee7345..f90ac817f 100644 --- a/docs/contributing/features/sequence_parallel.md +++ b/docs/contributing/features/sequence_parallel.md @@ -277,9 +277,9 @@ cd examples/offline_inference/text_to_image python text_to_image.py \ --model Your-org/your-model \ --prompt "a cup of coffee on the table" \ - --num_inference_steps 50 \ - --ulysses_degree 2 \ - --ring_degree 2 \ + --num-inference-steps 50 \ + --ulysses-degree 2 \ + --ring-degree 2 \ --output sp_test_image_ulysses=2_ring=2.png ``` @@ -298,9 +298,9 @@ cd examples/offline_inference/text_to_image python text_to_image.py \ --model Your-org/your-model \ --prompt "a cup of coffee on the table" \ - --num_inference_steps 50 \ - --ulysses_degree 2 \ - --tensor_parallel_size 2 \ + --num-inference-steps 50 \ + --ulysses-degree 2 \ + --tensor-parallel-size 2 \ --output sp_test_image_ulysses=2_tp=2.png ``` diff --git a/docs/contributing/features/tensor_parallel.md b/docs/contributing/features/tensor_parallel.md index 6214dc783..9d25a6e2d 100644 --- a/docs/contributing/features/tensor_parallel.md +++ b/docs/contributing/features/tensor_parallel.md @@ -181,11 +181,11 @@ cd examples/offline_inference/text_to_image python text_to_image.py \ --model Your-org/your-model \ --prompt "a cup of coffee on the table" \ - --negative_prompt "ugly, unclear" \ - --cfg_scale 4.0 \ - --num_inference_steps 50 \ + --negative-prompt "ugly, unclear" \ + --cfg-scale 4.0 \ + --num-inference-steps 50 \ --output "tp_enabled.png" \ - --tensor_parallel_size 2 + --tensor-parallel-size 2 ``` **Verify:** diff --git a/docs/contributing/profiling.md b/docs/contributing/profiling.md index a7df8c322..99b07cb98 100644 --- a/docs/contributing/profiling.md +++ b/docs/contributing/profiling.md @@ -106,7 +106,7 @@ python image_to_video.py \ # Reducing frames to the absolute minimum (2) keeps the # tensor size small, ensuring the trace file doesn't become # multi-gigabytes in size. - --num_frames 2 \ + --num-frames 2 \ \ # Minimize Iteration Loop (Steps): # This is the most critical setting for profiling. @@ -114,12 +114,12 @@ python image_to_video.py \ # Profiling 2 steps gives you the exact same performance # data as 50 steps, but saves minutes of runtime and # prevents the trace viewer from freezing. - --num_inference_steps 2 \ + --num-inference-steps 2 \ \ - --guidance_scale 5.0 \ - --guidance_scale_high 6.0 \ - --boundary_ratio 0.875 \ - --flow_shift 12.0 \ + --guidance-scale 5.0 \ + --guidance-scale-high 6.0 \ + --boundary-ratio 0.875 \ + --flow-shift 12.0 \ --fps 16 \ --output i2v_output.mp4 diff --git a/docs/user_guide/diffusion/cache_dit_acceleration.md b/docs/user_guide/diffusion/cache_dit_acceleration.md index fd1bd522a..c51ecca1e 100644 --- a/docs/user_guide/diffusion/cache_dit_acceleration.md +++ b/docs/user_guide/diffusion/cache_dit_acceleration.md @@ -188,8 +188,8 @@ cd examples/offline_inference/text_to_image python text_to_image.py \ --model Qwen/Qwen-Image \ --prompt "a cup of coffee on the table" \ - --cache_backend cache_dit \ - --num_inference_steps 50 + --cache-backend cache_dit \ + --num-inference-steps 50 ``` diff --git a/docs/user_guide/diffusion/parallelism_acceleration.md b/docs/user_guide/diffusion/parallelism_acceleration.md index 7b6e9390e..118415ea8 100644 --- a/docs/user_guide/diffusion/parallelism_acceleration.md +++ b/docs/user_guide/diffusion/parallelism_acceleration.md @@ -317,10 +317,10 @@ python image_edit.py \ --model "Qwen/Qwen-Image-Edit" \ --image "qwen_image_output.png" \ --prompt "turn this cat to a dog" \ - --negative_prompt "low quality, blurry" \ - --cfg_scale 4.0 \ + --negative-prompt "low quality, blurry" \ + --cfg-scale 4.0 \ --output "edited_image.png" \ - --cfg_parallel_size 2 + --cfg-parallel-size 2 ``` #### Online Serving diff --git a/docs/user_guide/examples/offline_inference/image_to_image.md b/docs/user_guide/examples/offline_inference/image_to_image.md index 701a4f768..b066eaee3 100644 --- a/docs/user_guide/examples/offline_inference/image_to_image.md +++ b/docs/user_guide/examples/offline_inference/image_to_image.md @@ -22,8 +22,8 @@ python image_edit.py \ --image qwen-bear.png \ --prompt "Let this mascot dance under the moon, surrounded by floating stars and poetic bubbles such as 'Be Kind'" \ --output output_image_edit.png \ - --num_inference_steps 50 \ - --cfg_scale 4.0 + --num-inference-steps 50 \ + --cfg-scale 4.0 ``` ### Multiple Image Editing (Qwen-Image-Edit-2509) @@ -36,26 +36,26 @@ python image_edit.py \ --image img1.png img2.png \ --prompt "Combine these images into a single scene" \ --output output_image_edit.png \ - --num_inference_steps 50 \ - --cfg_scale 4.0 \ - --guidance_scale 1.0 + --num-inference-steps 50 \ + --cfg-scale 4.0 \ + --guidance-scale 1.0 ``` Key arguments: - `--model`: model name or path. Use `Qwen/Qwen-Image-Edit-2509` or later for multiple image support. - `--image`: path(s) to the source image(s) (PNG/JPG, converted to RGB). Can specify multiple images. -- `--prompt` / `--negative_prompt`: text description (string). -- `--cfg_scale`: true classifier-free guidance scale (default: 4.0). Classifier-free guidance is enabled by setting cfg_scale > 1 and providing a negative_prompt. Higher guidance scale encourages images closely linked to the text prompt, usually at the expense of lower image quality. -- `--guidance_scale`: guidance scale for guidance-distilled models (default: 1.0, disabled). Unlike classifier-free guidance (--cfg_scale), guidance-distilled models take the guidance scale directly as an input parameter. Enabled when guidance_scale > 1. Ignored when not using guidance-distilled models. -- `--num_inference_steps`: diffusion sampling steps (more steps = higher quality, slower). +- `--prompt` / `--negative-prompt`: text description (string). +- `--cfg-scale`: true classifier-free guidance scale (default: 4.0). Classifier-free guidance is enabled by setting cfg_scale > 1 and providing a negative_prompt. Higher guidance scale encourages images closely linked to the text prompt, usually at the expense of lower image quality. +- `--guidance-scale`: guidance scale for guidance-distilled models (default: 1.0, disabled). Unlike classifier-free guidance (--cfg-scale), guidance-distilled models take the guidance scale directly as an input parameter. Enabled when guidance_scale > 1. Ignored when not using guidance-distilled models. +- `--num-inference-steps`: diffusion sampling steps (more steps = higher quality, slower). - `--output`: path to save the generated PNG. -- `--vae_use_slicing`: enable VAE slicing for memory optimization. -- `--vae_use_tiling`: enable VAE tiling for memory optimization. -- `--cfg_parallel_size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](https://github.com/vllm-project/vllm-omni/tree/main/docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). +- `--vae-use-slicing`: enable VAE slicing for memory optimization. +- `--vae-use-tiling`: enable VAE tiling for memory optimization. +- `--cfg-parallel-size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](https://github.com/vllm-project/vllm-omni/tree/main/docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). - `--enable-cpu-offload`: enable CPU offloading for diffusion models. -> ℹ️ If you encounter OOM errors, try using `--vae_use_slicing` and `--vae_use_tiling` to reduce memory usage. +> ℹ️ If you encounter OOM errors, try using `--vae-use-slicing` and `--vae-use-tiling` to reduce memory usage. ## Example materials diff --git a/docs/user_guide/examples/offline_inference/image_to_video.md b/docs/user_guide/examples/offline_inference/image_to_video.md index c83d39435..cfcadb702 100644 --- a/docs/user_guide/examples/offline_inference/image_to_video.md +++ b/docs/user_guide/examples/offline_inference/image_to_video.md @@ -20,15 +20,15 @@ python image_to_video.py \ --model Wan-AI/Wan2.2-I2V-A14B-Diffusers \ --image cherry_blossom.jpg \ --prompt "Cherry blossoms swaying gently in the breeze, petals falling, smooth motion" \ - --negative_prompt "" \ + --negative-prompt "" \ --height 480 \ --width 832 \ - --num_frames 48 \ - --guidance_scale 5.0 \ - --guidance_scale_high 6.0 \ - --num_inference_steps 40 \ - --boundary_ratio 0.875 \ - --flow_shift 12.0 \ + --num-frames 48 \ + --guidance-scale 5.0 \ + --guidance-scale-high 6.0 \ + --num-inference-steps 40 \ + --boundary-ratio 0.875 \ + --flow-shift 12.0 \ --fps 16 \ --output i2v_output.mp4 ``` @@ -40,13 +40,13 @@ python image_to_video.py \ --model Wan-AI/Wan2.2-TI2V-5B-Diffusers \ --image cherry_blossom.jpg \ --prompt "Cherry blossoms swaying gently in the breeze, petals falling, smooth motion" \ - --negative_prompt "" \ + --negative-prompt "" \ --height 480 \ --width 832 \ - --num_frames 48 \ - --guidance_scale 4.0 \ - --num_inference_steps 40 \ - --flow_shift 12.0 \ + --num-frames 48 \ + --guidance-scale 4.0 \ + --num-inference-steps 40 \ + --flow-shift 12.0 \ --fps 16 \ --output i2v_output.mp4 ``` @@ -57,20 +57,20 @@ Key arguments: - `--image`: Path to input image (required). - `--prompt`: Text description of desired motion/animation. - `--height/--width`: Output resolution (auto-calculated from image if not set). Dimensions should be multiples of 16. -- `--num_frames`: Number of frames (default 81). -- `--guidance_scale` and `--guidance_scale_high`: CFG scale (applied to low/high-noise stages for MoE). -- `--negative_prompt`: Optional list of artifacts to suppress. -- `--boundary_ratio`: Boundary split ratio for two-stage MoE models. -- `--flow_shift`: Scheduler flow shift (5.0 for 720p, 12.0 for 480p). -- `--num_inference_steps`: Number of denoising steps (default 50). +- `--num-frames`: Number of frames (default 81). +- `--guidance-scale` and `--guidance-scale-high`: CFG scale (applied to low/high-noise stages for MoE). +- `--negative-prompt`: Optional list of artifacts to suppress. +- `--boundary-ratio`: Boundary split ratio for two-stage MoE models. +- `--flow-shift`: Scheduler flow shift (5.0 for 720p, 12.0 for 480p). +- `--num-inference-steps`: Number of denoising steps (default 50). - `--fps`: Frames per second for the saved MP4 (requires `diffusers` export_to_video). - `--output`: Path to save the generated video. -- `--vae_use_slicing`: Enable VAE slicing for memory optimization. -- `--vae_use_tiling`: Enable VAE tiling for memory optimization. -- `--cfg_parallel_size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](https://github.com/vllm-project/vllm-omni/tree/main/docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). +- `--vae-use-slicing`: Enable VAE slicing for memory optimization. +- `--vae-use-tiling`: Enable VAE tiling for memory optimization. +- `--cfg-parallel-size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](https://github.com/vllm-project/vllm-omni/tree/main/docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). - `--enable-cpu-offload`: enable CPU offloading for diffusion models. -> ℹ️ If you encounter OOM errors, try using `--vae_use_slicing` and `--vae_use_tiling` to reduce memory usage. +> ℹ️ If you encounter OOM errors, try using `--vae-use-slicing` and `--vae-use-tiling` to reduce memory usage. ## Example materials diff --git a/docs/user_guide/examples/offline_inference/lora_inference.md b/docs/user_guide/examples/offline_inference/lora_inference.md index f88fc1733..f8a961dc9 100644 --- a/docs/user_guide/examples/offline_inference/lora_inference.md +++ b/docs/user_guide/examples/offline_inference/lora_inference.md @@ -26,7 +26,7 @@ python -m examples.offline_inference.lora_inference.lora_inference \ --prompt "A piece of cheesecake" \ --lora-path /path/to/lora/ \ --lora-scale 1.0 \ - --num_inference_steps 50 \ + --num-inference-steps 50 \ --height 1024 \ --width 1024 \ --output output_preloaded.png @@ -43,7 +43,7 @@ python -m examples.offline_inference.lora_inference.lora_inference \ --prompt "A piece of cheesecake" \ --lora-request-path /path/to/lora/ \ --lora-scale 1.0 \ - --num_inference_steps 50 \ + --num-inference-steps 50 \ --height 1024 \ --width 1024 \ --output output_per_request.png @@ -56,7 +56,7 @@ If no LoRA request is provided, we will use the base model without any LoRA adap ```bash python -m examples.offline_inference.lora_inference.lora_inference \ --prompt "A piece of cheesecake" \ - --num_inference_steps 50 \ + --num-inference-steps 50 \ --height 1024 \ --width 1024 \ --output output_no_lora.png @@ -77,7 +77,7 @@ python -m examples.offline_inference.lora_inference.lora_inference \ - `--seed`: Random seed for reproducibility (default: 42) - `--height`: Image height in pixels (default: 1024) - `--width`: Image width in pixels (default: 1024) -- `--num_inference_steps`: Number of denoising steps (default: 50) +- `--num-inference-steps`: Number of denoising steps (default: 50) - `--output`: Output file path (default: `lora_output.png`) ## How LoRA Works diff --git a/docs/user_guide/examples/offline_inference/text_to_audio.md b/docs/user_guide/examples/offline_inference/text_to_audio.md index 617bb6958..62a70e525 100644 --- a/docs/user_guide/examples/offline_inference/text_to_audio.md +++ b/docs/user_guide/examples/offline_inference/text_to_audio.md @@ -21,22 +21,22 @@ If you use a gated model (e.g., `stabilityai/stable-audio-open-1.0`), ensure you python text_to_audio.py \ --model stabilityai/stable-audio-open-1.0 \ --prompt "The sound of a hammer hitting a wooden surface" \ - --negative_prompt "Low quality" \ + --negative-prompt "Low quality" \ --seed 42 \ - --guidance_scale 7.0 \ - --audio_length 10.0 \ - --num_inference_steps 100 \ + --guidance-scale 7.0 \ + --audio-length 10.0 \ + --num-inference-steps 100 \ --output stable_audio_output.wav ``` Key arguments: - `--prompt`: text description (string). -- `--negative_prompt`: negative prompt for classifier-free guidance. +- `--negative-prompt`: negative prompt for classifier-free guidance. - `--seed`: integer seed for deterministic generation. -- `--guidance_scale`: classifier-free guidance scale. -- `--audio_length`: audio duration in seconds. -- `--num_inference_steps`: diffusion sampling steps.(more steps = higher quality, slower). +- `--guidance-scale`: classifier-free guidance scale. +- `--audio-length`: audio duration in seconds. +- `--num-inference-steps`: diffusion sampling steps.(more steps = higher quality, slower). - `--output`: path to save the generated WAV file. ## Example materials diff --git a/docs/user_guide/examples/offline_inference/text_to_image.md b/docs/user_guide/examples/offline_inference/text_to_image.md index c0dbfd141..5451fe223 100644 --- a/docs/user_guide/examples/offline_inference/text_to_image.md +++ b/docs/user_guide/examples/offline_inference/text_to_image.md @@ -82,9 +82,9 @@ python text_to_image.py \ --model Tongyi-MAI/Z-Image-Turbo \ --prompt "a cup of coffee on the table" \ --seed 42 \ - --cfg_scale 4.0 \ - --num_images_per_prompt 1 \ - --num_inference_steps 50 \ + --cfg-scale 4.0 \ + --num-images-per-prompt 1 \ + --num-inference-steps 50 \ --height 1024 \ --width 1024 \ --output outputs/coffee.png @@ -94,17 +94,17 @@ Key arguments: - `--prompt`: text description (string). - `--seed`: integer seed for deterministic sampling. -- `--cfg_scale`: true CFG scale (model-specific guidance strength). -- `--num_images_per_prompt`: number of images to generate per prompt (saves as `output`, `output_1`, ...). -- `--num_inference_steps`: diffusion sampling steps (more steps = higher quality, slower). +- `--cfg-scale`: true CFG scale (model-specific guidance strength). +- `--num-images-per-prompt`: number of images to generate per prompt (saves as `output`, `output_1`, ...). +- `--num-inference-steps`: diffusion sampling steps (more steps = higher quality, slower). - `--height/--width`: output resolution (defaults 1024x1024). - `--output`: path to save the generated PNG. -- `--vae_use_slicing`: enable VAE slicing for memory optimization. -- `--vae_use_tiling`: enable VAE tiling for memory optimization. -- `--cfg_parallel_size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](https://github.com/vllm-project/vllm-omni/tree/main/docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). +- `--vae-use-slicing`: enable VAE slicing for memory optimization. +- `--vae-use-tiling`: enable VAE tiling for memory optimization. +- `--cfg-parallel-size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](https://github.com/vllm-project/vllm-omni/tree/main/docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). - `--enable-cpu-offload`: enable CPU offloading for diffusion models. -> ℹ️ If you encounter OOM errors, try using `--vae_use_slicing` and `--vae_use_tiling` to reduce memory usage. +> ℹ️ If you encounter OOM errors, try using `--vae-use-slicing` and `--vae-use-tiling` to reduce memory usage. > ℹ️ Qwen-Image currently publishes best-effort presets at `1328x1328`, `1664x928`, `928x1664`, `1472x1140`, `1140x1472`, `1584x1056`, and `1056x1584`. Adjust `--height/--width` accordingly for the most reliable outcomes. diff --git a/docs/user_guide/examples/offline_inference/text_to_video.md b/docs/user_guide/examples/offline_inference/text_to_video.md index ec1da2756..340ec6cad 100644 --- a/docs/user_guide/examples/offline_inference/text_to_video.md +++ b/docs/user_guide/examples/offline_inference/text_to_video.md @@ -10,14 +10,14 @@ The `Wan-AI/Wan2.2-T2V-A14B-Diffusers` pipeline generates short videos from text ```bash python text_to_video.py \ --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage." \ - --negative_prompt "" \ + --negative-prompt "" \ --height 480 \ --width 832 \ - --num_frames 33 \ - --guidance_scale 4.0 \ - --guidance_scale_high 3.0 \ - --flow_shift 12.0 \ - --num_inference_steps 40 \ + --num-frames 33 \ + --guidance-scale 4.0 \ + --guidance-scale-high 3.0 \ + --flow-shift 12.0 \ + --num-inference-steps 40 \ --fps 16 \ --output t2v_out.mp4 ``` @@ -26,18 +26,18 @@ Key arguments: - `--prompt`: text description (string). - `--height/--width`: output resolution (defaults 480x832, i.e. 480P). Dimensions should align with Wan VAE downsampling (multiples of 8). -- `--num_frames`: Number of frames (Wan default is 81). -- `--guidance_scale` and `--guidance_scale_high`: CFG scale (applied to low/high). -- `--negative_prompt`: optional list of artifacts to suppress (the PR demo used a long Chinese string). -- `--boundary_ratio`: Boundary split ratio for low/high DiT. Default `0.875` uses both transformers for best quality. Set to `1.0` to load only the low-noise transformer (saves noticeable memory with good quality, recommended if memory is limited). Set to `0.0` loads only the high-noise transformer (not recommended, lower quality). +- `--num-frames`: Number of frames (Wan default is 81). +- `--guidance-scale` and `--guidance-scale-high`: CFG scale (applied to low/high). +- `--negative-prompt`: optional list of artifacts to suppress (the PR demo used a long Chinese string). +- `--boundary-ratio`: Boundary split ratio for low/high DiT. Default `0.875` uses both transformers for best quality. Set to `1.0` to load only the low-noise transformer (saves noticeable memory with good quality, recommended if memory is limited). Set to `0.0` loads only the high-noise transformer (not recommended, lower quality). - `--fps`: frames per second for the saved MP4 (requires `diffusers` export_to_video). - `--output`: path to save the generated video. -- `--vae_use_slicing`: enable VAE slicing for memory optimization. -- `--vae_use_tiling`: enable VAE tiling for memory optimization. -- `--cfg_parallel_size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](https://github.com/vllm-project/vllm-omni/tree/main/docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). +- `--vae-use-slicing`: enable VAE slicing for memory optimization. +- `--vae-use-tiling`: enable VAE tiling for memory optimization. +- `--cfg-parallel-size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](https://github.com/vllm-project/vllm-omni/tree/main/docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). - `--enable-cpu-offload`: enable CPU offloading for diffusion models. -> ℹ️ If you encounter OOM errors, try using `--vae_use_slicing` and `--vae_use_tiling` to reduce memory usage. +> ℹ️ If you encounter OOM errors, try using `--vae-use-slicing` and `--vae-use-tiling` to reduce memory usage. ## Example materials diff --git a/examples/offline_inference/bagel/end2end.py b/examples/offline_inference/bagel/end2end.py index 8fa412065..0cbe7bb39 100644 --- a/examples/offline_inference/bagel/end2end.py +++ b/examples/offline_inference/bagel/end2end.py @@ -19,7 +19,7 @@ def parse_args(): default=None, help="Path to a .txt file with one prompt per line (preferred).", ) - parser.add_argument("--prompt_type", default="text", choices=["text"]) + parser.add_argument("--prompt-type", default="text", choices=["text"]) parser.add_argument( "--modality", diff --git a/examples/offline_inference/image_to_image/image_edit.py b/examples/offline_inference/image_to_image/image_edit.py index 8f330e09d..6ff7b561b 100644 --- a/examples/offline_inference/image_to_image/image_edit.py +++ b/examples/offline_inference/image_to_image/image_edit.py @@ -9,34 +9,34 @@ Usage (single image): --image input.png \ --prompt "Let this mascot dance under the moon, surrounded by floating stars and poetic bubbles such as 'Be Kind'" \ --output output_image_edit.png \ - --num_inference_steps 50 \ - --cfg_scale 4.0 \ - --guidance_scale 1.0 + --num-inference-steps 50 \ + --cfg-scale 4.0 \ + --guidance-scale 1.0 Usage (multiple images): python image_edit.py \ --image input1.png input2.png input3.png \ --prompt "Combine these images into a single scene" \ --output output_image_edit.png \ - --num_inference_steps 50 \ - --cfg_scale 4.0 \ - --guidance_scale 1.0 + --num-inference-steps 50 \ + --cfg-scale 4.0 \ + --guidance-scale 1.0 Usage (with cache-dit acceleration): python image_edit.py \ --image input.png \ --prompt "Edit description" \ - --cache_backend cache_dit \ - --cache_dit_max_continuous_cached_steps 3 \ - --cache_dit_residual_diff_threshold 0.24 \ - --cache_dit_enable_taylorseer + --cache-backend cache_dit \ + --cache-dit-max-continuous-cached-steps 3 \ + --cache-dit-residual-diff-threshold 0.24 \ + --cache-dit-enable-taylorseer Usage (with tea_cache acceleration): python image_edit.py \ --image input.png \ --prompt "Edit description" \ - --cache_backend tea_cache \ - --tea_cache_rel_l1_thresh 0.25 + --cache-backend tea_cache \ + --tea-cache-rel-l1-thresh 0.25 Usage (layered): python image_edit.py \ @@ -44,8 +44,8 @@ Usage (layered): --image input.png \ --prompt "" \ --output "layered" \ - --num_inference_steps 50 \ - --cfg_scale 4.0 \ + --num-inference-steps 50 \ + --cfg-scale 4.0 \ --layers 4 \ --color-format "RGBA" @@ -53,17 +53,17 @@ Usage (with CFG Parallel): python image_edit.py \ --image input.png \ --prompt "Edit description" \ - --cfg_parallel_size 2 \ - --num_inference_steps 50 \ - --cfg_scale 4.0 + --cfg-parallel-size 2 \ + --num-inference-steps 50 \ + --cfg-scale 4.0 Usage (disable torch.compile): python image_edit.py \ --image input.png \ --prompt "Edit description" \ - --enforce_eager \ - --num_inference_steps 50 \ - --cfg_scale 4.0 + --enforce-eager \ + --num-inference-steps 50 \ + --cfg-scale 4.0 For more options, run: python image_edit.py --help @@ -109,7 +109,7 @@ def parse_args() -> argparse.Namespace: help="Text prompt describing the edit to make to the image.", ) parser.add_argument( - "--negative_prompt", + "--negative-prompt", type=str, default=None, required=False, @@ -121,7 +121,7 @@ def parse_args() -> argparse.Namespace: help="Random seed for deterministic results.", ) parser.add_argument( - "--cfg_scale", + "--cfg-scale", type=float, default=4.0, help=( @@ -132,12 +132,12 @@ def parse_args() -> argparse.Namespace: ), ) parser.add_argument( - "--guidance_scale", + "--guidance-scale", type=float, default=1.0, help=( "Guidance scale for guidance-distilled models (default: 1.0, disabled). " - "Unlike classifier-free guidance (--cfg_scale), guidance-distilled models take the guidance scale " + "Unlike classifier-free guidance (--cfg-scale), guidance-distilled models take the guidance scale " "directly as an input parameter. Enabled when guidance_scale > 1. Ignored when not using guidance-distilled models." ), ) @@ -148,19 +148,19 @@ def parse_args() -> argparse.Namespace: help=("Path to save the edited image (PNG). Or prefix for Qwen-Image-Layered model save images(PNG)."), ) parser.add_argument( - "--num_outputs_per_prompt", + "--num-outputs-per-prompt", type=int, default=1, help="Number of images to generate for the given prompt.", ) parser.add_argument( - "--num_inference_steps", + "--num-inference-steps", type=int, default=50, help="Number of denoising steps for the diffusion sampler.", ) parser.add_argument( - "--cache_backend", + "--cache-backend", type=str, default=None, choices=["cache_dit", "tea_cache"], @@ -171,19 +171,19 @@ def parse_args() -> argparse.Namespace: ), ) parser.add_argument( - "--ulysses_degree", + "--ulysses-degree", type=int, default=1, help="Number of GPUs used for ulysses sequence parallelism.", ) parser.add_argument( - "--ring_degree", + "--ring-degree", type=int, default=1, help="Number of GPUs used for ring sequence parallelism.", ) parser.add_argument( - "--tensor_parallel_size", + "--tensor-parallel-size", type=int, default=1, help="Number of GPUs used for tensor parallelism (TP) inside the DiT.", @@ -205,56 +205,56 @@ def parse_args() -> argparse.Namespace: # Cache-DiT specific parameters parser.add_argument( - "--cache_dit_fn_compute_blocks", + "--cache-dit-fn-compute-blocks", type=int, default=1, help="[cache-dit] Number of forward compute blocks. Optimized for single-transformer models.", ) parser.add_argument( - "--cache_dit_bn_compute_blocks", + "--cache-dit-bn-compute-blocks", type=int, default=0, help="[cache-dit] Number of backward compute blocks.", ) parser.add_argument( - "--cache_dit_max_warmup_steps", + "--cache-dit-max-warmup-steps", type=int, default=4, help="[cache-dit] Maximum warmup steps (works for few-step models).", ) parser.add_argument( - "--cache_dit_residual_diff_threshold", + "--cache-dit-residual-diff-threshold", type=float, default=0.24, help="[cache-dit] Residual diff threshold. Higher values enable more aggressive caching.", ) parser.add_argument( - "--cache_dit_max_continuous_cached_steps", + "--cache-dit-max-continuous-cached-steps", type=int, default=3, help="[cache-dit] Maximum continuous cached steps to prevent precision degradation.", ) parser.add_argument( - "--cache_dit_enable_taylorseer", + "--cache-dit-enable-taylorseer", action="store_true", default=False, help="[cache-dit] Enable TaylorSeer acceleration (not suitable for few-step models).", ) parser.add_argument( - "--cache_dit_taylorseer_order", + "--cache-dit-taylorseer-order", type=int, default=1, help="[cache-dit] TaylorSeer polynomial order.", ) parser.add_argument( - "--cache_dit_scm_steps_mask_policy", + "--cache-dit-scm-steps-mask-policy", type=str, default=None, choices=[None, "slow", "medium", "fast", "ultra"], help="[cache-dit] SCM mask policy: None (disabled), slow, medium, fast, ultra.", ) parser.add_argument( - "--cache_dit_scm_steps_policy", + "--cache-dit-scm-steps-policy", type=str, default="dynamic", choices=["dynamic", "static"], @@ -263,30 +263,30 @@ def parse_args() -> argparse.Namespace: # TeaCache specific parameters parser.add_argument( - "--tea_cache_rel_l1_thresh", + "--tea-cache-rel-l1-thresh", type=float, default=0.2, help="[tea_cache] Threshold for accumulated relative L1 distance.", ) parser.add_argument( - "--cfg_parallel_size", + "--cfg-parallel-size", type=int, default=1, choices=[1, 2], help="Number of GPUs used for classifier free guidance parallel size.", ) parser.add_argument( - "--enforce_eager", + "--enforce-eager", action="store_true", help="Disable torch.compile and force eager execution.", ) parser.add_argument( - "--vae_use_slicing", + "--vae-use-slicing", action="store_true", help="Enable VAE slicing for memory optimization.", ) parser.add_argument( - "--vae_use_tiling", + "--vae-use-tiling", action="store_true", help="Enable VAE tiling for memory optimization.", ) diff --git a/examples/offline_inference/image_to_image/image_to_image.md b/examples/offline_inference/image_to_image/image_to_image.md index d0986d6ee..2df248e03 100644 --- a/examples/offline_inference/image_to_image/image_to_image.md +++ b/examples/offline_inference/image_to_image/image_to_image.md @@ -19,8 +19,8 @@ python image_edit.py \ --image qwen-bear.png \ --prompt "Let this mascot dance under the moon, surrounded by floating stars and poetic bubbles such as 'Be Kind'" \ --output output_image_edit.png \ - --num_inference_steps 50 \ - --cfg_scale 4.0 + --num-inference-steps 50 \ + --cfg-scale 4.0 ``` ### Multiple Image Editing (Qwen-Image-Edit-2509) @@ -33,23 +33,23 @@ python image_edit.py \ --image img1.png img2.png \ --prompt "Combine these images into a single scene" \ --output output_image_edit.png \ - --num_inference_steps 50 \ - --cfg_scale 4.0 \ - --guidance_scale 1.0 + --num-inference-steps 50 \ + --cfg-scale 4.0 \ + --guidance-scale 1.0 ``` Key arguments: - `--model`: model name or path. Use `Qwen/Qwen-Image-Edit-2509` or later for multiple image support. - `--image`: path(s) to the source image(s) (PNG/JPG, converted to RGB). Can specify multiple images. -- `--prompt` / `--negative_prompt`: text description (string). -- `--cfg_scale`: true classifier-free guidance scale (default: 4.0). Classifier-free guidance is enabled by setting cfg_scale > 1 and providing a negative_prompt. Higher guidance scale encourages images closely linked to the text prompt, usually at the expense of lower image quality. -- `--guidance_scale`: guidance scale for guidance-distilled models (default: 1.0, disabled). Unlike classifier-free guidance (--cfg_scale), guidance-distilled models take the guidance scale directly as an input parameter. Enabled when guidance_scale > 1. Ignored when not using guidance-distilled models. -- `--num_inference_steps`: diffusion sampling steps (more steps = higher quality, slower). +- `--prompt` / `--negative-prompt`: text description (string). +- `--cfg-scale`: true classifier-free guidance scale (default: 4.0). Classifier-free guidance is enabled by setting cfg_scale > 1 and providing a negative_prompt. Higher guidance scale encourages images closely linked to the text prompt, usually at the expense of lower image quality. +- `--guidance-scale`: guidance scale for guidance-distilled models (default: 1.0, disabled). Unlike classifier-free guidance (--cfg-scale), guidance-distilled models take the guidance scale directly as an input parameter. Enabled when guidance_scale > 1. Ignored when not using guidance-distilled models. +- `--num-inference-steps`: diffusion sampling steps (more steps = higher quality, slower). - `--output`: path to save the generated PNG. -- `--vae_use_slicing`: enable VAE slicing for memory optimization. -- `--vae_use_tiling`: enable VAE tiling for memory optimization. -- `--cfg_parallel_size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](../../../docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). +- `--vae-use-slicing`: enable VAE slicing for memory optimization. +- `--vae-use-tiling`: enable VAE tiling for memory optimization. +- `--cfg-parallel-size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](../../../docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). - `--enable-cpu-offload`: enable CPU offloading for diffusion models. -> ℹ️ If you encounter OOM errors, try using `--vae_use_slicing` and `--vae_use_tiling` to reduce memory usage. +> ℹ️ If you encounter OOM errors, try using `--vae-use-slicing` and `--vae-use-tiling` to reduce memory usage. diff --git a/examples/offline_inference/image_to_image/run_qwen_image_edit_2511.sh b/examples/offline_inference/image_to_image/run_qwen_image_edit_2511.sh index ac230ed8a..d6e66ec7d 100644 --- a/examples/offline_inference/image_to_image/run_qwen_image_edit_2511.sh +++ b/examples/offline_inference/image_to_image/run_qwen_image_edit_2511.sh @@ -3,6 +3,6 @@ python image_edit.py \ --image qwen_bear.png \ --prompt "Add a white art board written with colorful text 'vLLM-Omni' on grassland. Add a paintbrush in the bear's hands. position the bear standing in front of the art board as if painting" \ --output output_image_edit.png \ - --num_inference_steps 50 \ - --cfg_scale 4.0 \ - --cache_backend cache_dit \ + --num-inference-steps 50 \ + --cfg-scale 4.0 \ + --cache-backend cache_dit \ diff --git a/examples/offline_inference/image_to_video/README.md b/examples/offline_inference/image_to_video/README.md index 2d8b33d0d..6a547df9d 100644 --- a/examples/offline_inference/image_to_video/README.md +++ b/examples/offline_inference/image_to_video/README.md @@ -17,15 +17,15 @@ python image_to_video.py \ --model Wan-AI/Wan2.2-I2V-A14B-Diffusers \ --image cherry_blossom.jpg \ --prompt "Cherry blossoms swaying gently in the breeze, petals falling, smooth motion" \ - --negative_prompt "" \ + --negative-prompt "" \ --height 480 \ --width 832 \ - --num_frames 48 \ - --guidance_scale 5.0 \ - --guidance_scale_high 6.0 \ - --num_inference_steps 40 \ - --boundary_ratio 0.875 \ - --flow_shift 12.0 \ + --num-frames 48 \ + --guidance-scale 5.0 \ + --guidance-scale-high 6.0 \ + --num-inference-steps 40 \ + --boundary-ratio 0.875 \ + --flow-shift 12.0 \ --fps 16 \ --output i2v_output.mp4 ``` @@ -37,13 +37,13 @@ python image_to_video.py \ --model Wan-AI/Wan2.2-TI2V-5B-Diffusers \ --image cherry_blossom.jpg \ --prompt "Cherry blossoms swaying gently in the breeze, petals falling, smooth motion" \ - --negative_prompt "" \ + --negative-prompt "" \ --height 480 \ --width 832 \ - --num_frames 48 \ - --guidance_scale 4.0 \ - --num_inference_steps 40 \ - --flow_shift 12.0 \ + --num-frames 48 \ + --guidance-scale 4.0 \ + --num-inference-steps 40 \ + --flow-shift 12.0 \ --fps 16 \ --output i2v_output.mp4 ``` @@ -54,17 +54,17 @@ Key arguments: - `--image`: Path to input image (required). - `--prompt`: Text description of desired motion/animation. - `--height/--width`: Output resolution (auto-calculated from image if not set). Dimensions should be multiples of 16. -- `--num_frames`: Number of frames (default 81). -- `--guidance_scale` and `--guidance_scale_high`: CFG scale (applied to low/high-noise stages for MoE). -- `--negative_prompt`: Optional list of artifacts to suppress. -- `--boundary_ratio`: Boundary split ratio for two-stage MoE models. -- `--flow_shift`: Scheduler flow shift (5.0 for 720p, 12.0 for 480p). -- `--num_inference_steps`: Number of denoising steps (default 50). +- `--num-frames`: Number of frames (default 81). +- `--guidance-scale` and `--guidance-scale-high`: CFG scale (applied to low/high-noise stages for MoE). +- `--negative-prompt`: Optional list of artifacts to suppress. +- `--boundary-ratio`: Boundary split ratio for two-stage MoE models. +- `--flow-shift`: Scheduler flow shift (5.0 for 720p, 12.0 for 480p). +- `--num-inference-steps`: Number of denoising steps (default 50). - `--fps`: Frames per second for the saved MP4 (requires `diffusers` export_to_video). - `--output`: Path to save the generated video. -- `--vae_use_slicing`: Enable VAE slicing for memory optimization. -- `--vae_use_tiling`: Enable VAE tiling for memory optimization. -- `--cfg_parallel_size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](../../../docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). +- `--vae-use-slicing`: Enable VAE slicing for memory optimization. +- `--vae-use-tiling`: Enable VAE tiling for memory optimization. +- `--cfg-parallel-size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](../../../docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). - `--enable-cpu-offload`: enable CPU offloading for diffusion models. -> ℹ️ If you encounter OOM errors, try using `--vae_use_slicing` and `--vae_use_tiling` to reduce memory usage. +> ℹ️ If you encounter OOM errors, try using `--vae-use-slicing` and `--vae-use-tiling` to reduce memory usage. diff --git a/examples/offline_inference/image_to_video/image_to_video.py b/examples/offline_inference/image_to_video/image_to_video.py index 8e8d39915..e57f54819 100644 --- a/examples/offline_inference/image_to_video/image_to_video.py +++ b/examples/offline_inference/image_to_video/image_to_video.py @@ -42,31 +42,31 @@ def parse_args() -> argparse.Namespace: ) parser.add_argument("--image", required=True, help="Path to input image.") parser.add_argument("--prompt", default="", help="Text prompt describing the desired motion.") - parser.add_argument("--negative_prompt", default="", help="Negative prompt.") + parser.add_argument("--negative-prompt", default="", help="Negative prompt.") parser.add_argument("--seed", type=int, default=42, help="Random seed.") - parser.add_argument("--guidance_scale", type=float, default=5.0, help="CFG scale.") + parser.add_argument("--guidance-scale", type=float, default=5.0, help="CFG scale.") parser.add_argument( - "--guidance_scale_high", type=float, default=None, help="Optional separate CFG for high-noise (MoE only)." + "--guidance-scale-high", type=float, default=None, help="Optional separate CFG for high-noise (MoE only)." ) parser.add_argument( "--height", type=int, default=None, help="Video height (auto-calculated from image if not set)." ) parser.add_argument("--width", type=int, default=None, help="Video width (auto-calculated from image if not set).") - parser.add_argument("--num_frames", type=int, default=81, help="Number of frames.") - parser.add_argument("--num_inference_steps", type=int, default=50, help="Sampling steps.") - parser.add_argument("--boundary_ratio", type=float, default=0.875, help="Boundary split ratio for MoE models.") + parser.add_argument("--num-frames", type=int, default=81, help="Number of frames.") + parser.add_argument("--num-inference-steps", type=int, default=50, help="Sampling steps.") + parser.add_argument("--boundary-ratio", type=float, default=0.875, help="Boundary split ratio for MoE models.") parser.add_argument( - "--flow_shift", type=float, default=5.0, help="Scheduler flow_shift (5.0 for 720p, 12.0 for 480p)." + "--flow-shift", type=float, default=5.0, help="Scheduler flow_shift (5.0 for 720p, 12.0 for 480p)." ) parser.add_argument("--output", type=str, default="i2v_output.mp4", help="Path to save the video (mp4).") parser.add_argument("--fps", type=int, default=16, help="Frames per second for the output video.") parser.add_argument( - "--vae_use_slicing", + "--vae-use-slicing", action="store_true", help="Enable VAE slicing for memory optimization.", ) parser.add_argument( - "--vae_use_tiling", + "--vae-use-tiling", action="store_true", help="Enable VAE tiling for memory optimization.", ) @@ -87,14 +87,14 @@ def parse_args() -> argparse.Namespace: help="Number of ready layers (blocks) to keep on GPU during generation.", ) parser.add_argument( - "--cfg_parallel_size", + "--cfg-parallel-size", type=int, default=1, choices=[1, 2], help="Number of GPUs used for classifier free guidance parallel size.", ) parser.add_argument( - "--enforce_eager", + "--enforce-eager", action="store_true", help="Disable torch.compile and force eager execution.", ) diff --git a/examples/offline_inference/lora_inference/README.md b/examples/offline_inference/lora_inference/README.md index c081ea512..d53b45196 100644 --- a/examples/offline_inference/lora_inference/README.md +++ b/examples/offline_inference/lora_inference/README.md @@ -23,7 +23,7 @@ python -m examples.offline_inference.lora_inference.lora_inference \ --prompt "A piece of cheesecake" \ --lora-path /path/to/lora/ \ --lora-scale 1.0 \ - --num_inference_steps 50 \ + --num-inference-steps 50 \ --height 1024 \ --width 1024 \ --output output_preloaded.png @@ -40,7 +40,7 @@ python -m examples.offline_inference.lora_inference.lora_inference \ --prompt "A piece of cheesecake" \ --lora-request-path /path/to/lora/ \ --lora-scale 1.0 \ - --num_inference_steps 50 \ + --num-inference-steps 50 \ --height 1024 \ --width 1024 \ --output output_per_request.png @@ -53,7 +53,7 @@ If no LoRA request is provided, we will use the base model without any LoRA adap ```bash python -m examples.offline_inference.lora_inference.lora_inference \ --prompt "A piece of cheesecake" \ - --num_inference_steps 50 \ + --num-inference-steps 50 \ --height 1024 \ --width 1024 \ --output output_no_lora.png @@ -74,7 +74,7 @@ python -m examples.offline_inference.lora_inference.lora_inference \ - `--seed`: Random seed for reproducibility (default: 42) - `--height`: Image height in pixels (default: 1024) - `--width`: Image width in pixels (default: 1024) -- `--num_inference_steps`: Number of denoising steps (default: 50) +- `--num-inference-steps`: Number of denoising steps (default: 50) - `--output`: Output file path (default: `lora_output.png`) ## How LoRA Works diff --git a/examples/offline_inference/lora_inference/lora_inference.py b/examples/offline_inference/lora_inference/lora_inference.py index 5e4299edb..a7803598b 100644 --- a/examples/offline_inference/lora_inference/lora_inference.py +++ b/examples/offline_inference/lora_inference/lora_inference.py @@ -18,7 +18,7 @@ def parse_args() -> argparse.Namespace: parser.add_argument("--height", type=int, default=1024, help="Height of generated image.") parser.add_argument("--width", type=int, default=1024, help="Width of generated image.") parser.add_argument( - "--num_inference_steps", + "--num-inference-steps", type=int, default=50, help="Number of denoising steps for the diffusion sampler.", diff --git a/examples/offline_inference/text_to_audio/README.md b/examples/offline_inference/text_to_audio/README.md index 8ec1eafe5..7edc38092 100644 --- a/examples/offline_inference/text_to_audio/README.md +++ b/examples/offline_inference/text_to_audio/README.md @@ -18,20 +18,20 @@ If you use a gated model (e.g., `stabilityai/stable-audio-open-1.0`), ensure you python text_to_audio.py \ --model stabilityai/stable-audio-open-1.0 \ --prompt "The sound of a hammer hitting a wooden surface" \ - --negative_prompt "Low quality" \ + --negative-prompt "Low quality" \ --seed 42 \ - --guidance_scale 7.0 \ - --audio_length 10.0 \ - --num_inference_steps 100 \ + --guidance-scale 7.0 \ + --audio-length 10.0 \ + --num-inference-steps 100 \ --output stable_audio_output.wav ``` Key arguments: - `--prompt`: text description (string). -- `--negative_prompt`: negative prompt for classifier-free guidance. +- `--negative-prompt`: negative prompt for classifier-free guidance. - `--seed`: integer seed for deterministic generation. -- `--guidance_scale`: classifier-free guidance scale. -- `--audio_length`: audio duration in seconds. -- `--num_inference_steps`: diffusion sampling steps.(more steps = higher quality, slower). +- `--guidance-scale`: classifier-free guidance scale. +- `--audio-length`: audio duration in seconds. +- `--num-inference-steps`: diffusion sampling steps.(more steps = higher quality, slower). - `--output`: path to save the generated WAV file. diff --git a/examples/offline_inference/text_to_audio/text_to_audio.py b/examples/offline_inference/text_to_audio/text_to_audio.py index 0a9efcca5..d8f4e7829 100644 --- a/examples/offline_inference/text_to_audio/text_to_audio.py +++ b/examples/offline_inference/text_to_audio/text_to_audio.py @@ -9,8 +9,8 @@ the Stable Audio Open model with vLLM-Omni. Usage: python text_to_audio.py --prompt "The sound of a dog barking" - python text_to_audio.py --prompt "A piano playing a gentle melody" --audio_length 10.0 - python text_to_audio.py --prompt "Thunder and rain sounds" --negative_prompt "Low quality" + python text_to_audio.py --prompt "A piano playing a gentle melody" --audio-length 10.0 + python text_to_audio.py --prompt "Thunder and rain sounds" --negative-prompt "Low quality" """ import argparse @@ -38,7 +38,7 @@ def parse_args() -> argparse.Namespace: help="Text prompt for audio generation.", ) parser.add_argument( - "--negative_prompt", + "--negative-prompt", default="Low quality.", help="Negative prompt for classifier-free guidance.", ) @@ -49,31 +49,31 @@ def parse_args() -> argparse.Namespace: help="Random seed for deterministic results.", ) parser.add_argument( - "--guidance_scale", + "--guidance-scale", type=float, default=7.0, help="Classifier-free guidance scale.", ) parser.add_argument( - "--audio_start", + "--audio-start", type=float, default=0.0, help="Audio start time in seconds.", ) parser.add_argument( - "--audio_length", + "--audio-length", type=float, default=10.0, help="Audio length in seconds (max ~47s for stable-audio-open-1.0).", ) parser.add_argument( - "--num_inference_steps", + "--num-inference-steps", type=int, default=100, help="Number of denoising steps for the diffusion sampler.", ) parser.add_argument( - "--num_waveforms", + "--num-waveforms", type=int, default=1, help="Number of audio waveforms to generate for the given prompt.", @@ -85,7 +85,7 @@ def parse_args() -> argparse.Namespace: help="Path to save the generated audio (WAV format).", ) parser.add_argument( - "--sample_rate", + "--sample-rate", type=int, default=44100, help="Sample rate for output audio (Stable Audio uses 44100 Hz).", diff --git a/examples/offline_inference/text_to_image/README.md b/examples/offline_inference/text_to_image/README.md index 9c57a621c..9c5ceb927 100644 --- a/examples/offline_inference/text_to_image/README.md +++ b/examples/offline_inference/text_to_image/README.md @@ -79,9 +79,9 @@ python text_to_image.py \ --model Tongyi-MAI/Z-Image-Turbo \ --prompt "a cup of coffee on the table" \ --seed 42 \ - --cfg_scale 4.0 \ - --num_images_per_prompt 1 \ - --num_inference_steps 50 \ + --cfg-scale 4.0 \ + --num-images-per-prompt 1 \ + --num-inference-steps 50 \ --height 1024 \ --width 1024 \ --output outputs/coffee.png @@ -91,17 +91,17 @@ Key arguments: - `--prompt`: text description (string). - `--seed`: integer seed for deterministic sampling. -- `--cfg_scale`: true CFG scale (model-specific guidance strength). -- `--num_images_per_prompt`: number of images to generate per prompt (saves as `output`, `output_1`, ...). -- `--num_inference_steps`: diffusion sampling steps (more steps = higher quality, slower). +- `--cfg-scale`: true CFG scale (model-specific guidance strength). +- `--num-images-per-prompt`: number of images to generate per prompt (saves as `output`, `output_1`, ...). +- `--num-inference-steps`: diffusion sampling steps (more steps = higher quality, slower). - `--height/--width`: output resolution (defaults 1024x1024). - `--output`: path to save the generated PNG. -- `--vae_use_slicing`: enable VAE slicing for memory optimization. -- `--vae_use_tiling`: enable VAE tiling for memory optimization. -- `--cfg_parallel_size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](../../../docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). +- `--vae-use-slicing`: enable VAE slicing for memory optimization. +- `--vae-use-tiling`: enable VAE tiling for memory optimization. +- `--cfg-parallel-size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](../../../docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). - `--enable-cpu-offload`: enable CPU offloading for diffusion models. -> ℹ️ If you encounter OOM errors, try using `--vae_use_slicing` and `--vae_use_tiling` to reduce memory usage. +> ℹ️ If you encounter OOM errors, try using `--vae-use-slicing` and `--vae-use-tiling` to reduce memory usage. > ℹ️ Qwen-Image currently publishes best-effort presets at `1328x1328`, `1664x928`, `928x1664`, `1472x1140`, `1140x1472`, `1584x1056`, and `1056x1584`. Adjust `--height/--width` accordingly for the most reliable outcomes. diff --git a/examples/offline_inference/text_to_image/gradio_demo.py b/examples/offline_inference/text_to_image/gradio_demo.py index 614e40903..bde6bb0e7 100644 --- a/examples/offline_inference/text_to_image/gradio_demo.py +++ b/examples/offline_inference/text_to_image/gradio_demo.py @@ -40,7 +40,7 @@ def parse_args() -> argparse.Namespace: parser.add_argument("--default-seed", type=int, default=42, help="Initial seed shown in UI.") parser.add_argument("--default-cfg-scale", type=float, default=4.0, help="Initial CFG scale shown in UI.") parser.add_argument( - "--num_inference_steps", + "--num-inference-steps", type=int, default=50, help="Default number of denoising steps shown in the UI.", diff --git a/examples/offline_inference/text_to_image/text_to_image.py b/examples/offline_inference/text_to_image/text_to_image.py index 4b2817f8d..66ae9c102 100644 --- a/examples/offline_inference/text_to_image/text_to_image.py +++ b/examples/offline_inference/text_to_image/text_to_image.py @@ -25,19 +25,19 @@ def parse_args() -> argparse.Namespace: ) parser.add_argument("--prompt", default="a cup of coffee on the table", help="Text prompt for image generation.") parser.add_argument( - "--negative_prompt", + "--negative-prompt", default=None, help="negative prompt for classifier-free conditional guidance.", ) parser.add_argument("--seed", type=int, default=142, help="Random seed for deterministic results.") parser.add_argument( - "--cfg_scale", + "--cfg-scale", type=float, default=4.0, help="True classifier-free guidance scale specific to Qwen-Image.", ) parser.add_argument( - "--guidance_scale", + "--guidance-scale", type=float, default=1.0, help="Classifier-free guidance scale.", @@ -51,19 +51,19 @@ def parse_args() -> argparse.Namespace: help="Path to save the generated image (PNG).", ) parser.add_argument( - "--num_images_per_prompt", + "--num-images-per-prompt", type=int, default=1, help="Number of images to generate for the given prompt.", ) parser.add_argument( - "--num_inference_steps", + "--num-inference-steps", type=int, default=50, help="Number of denoising steps for the diffusion sampler.", ) parser.add_argument( - "--cache_backend", + "--cache-backend", type=str, default=None, choices=["cache_dit", "tea_cache"], @@ -79,26 +79,26 @@ def parse_args() -> argparse.Namespace: help="Enable cache-dit summary logging after diffusion forward passes.", ) parser.add_argument( - "--ulysses_degree", + "--ulysses-degree", type=int, default=1, help="Number of GPUs used for ulysses sequence parallelism.", ) parser.add_argument( - "--ring_degree", + "--ring-degree", type=int, default=1, help="Number of GPUs used for ring sequence parallelism.", ) parser.add_argument( - "--cfg_parallel_size", + "--cfg-parallel-size", type=int, default=1, choices=[1, 2], help="Number of GPUs used for classifier free guidance parallel size.", ) parser.add_argument( - "--enforce_eager", + "--enforce-eager", action="store_true", help="Disable torch.compile and force eager execution.", ) @@ -119,23 +119,23 @@ def parse_args() -> argparse.Namespace: help="Number of ready layers (blocks) to keep on GPU during generation.", ) parser.add_argument( - "--vae_use_slicing", + "--vae-use-slicing", action="store_true", help="Enable VAE slicing for memory optimization.", ) parser.add_argument( - "--vae_use_tiling", + "--vae-use-tiling", action="store_true", help="Enable VAE tiling for memory optimization.", ) parser.add_argument( - "--tensor_parallel_size", + "--tensor-parallel-size", type=int, default=1, help="Number of GPUs used for tensor parallelism (TP) inside the DiT.", ) parser.add_argument( - "--vae_patch_parallel_size", + "--vae-patch-parallel-size", type=int, default=1, help="Number of ranks used for VAE patch/tile parallelism (decode/encode).", diff --git a/examples/offline_inference/text_to_video/text_to_video.md b/examples/offline_inference/text_to_video/text_to_video.md index 04f1a2653..4e34ff8ba 100644 --- a/examples/offline_inference/text_to_video/text_to_video.md +++ b/examples/offline_inference/text_to_video/text_to_video.md @@ -7,14 +7,14 @@ The `Wan-AI/Wan2.2-T2V-A14B-Diffusers` pipeline generates short videos from text ```bash python text_to_video.py \ --prompt "Two anthropomorphic cats in comfy boxing gear and bright gloves fight intensely on a spotlighted stage." \ - --negative_prompt "" \ + --negative-prompt "" \ --height 480 \ --width 832 \ - --num_frames 33 \ - --guidance_scale 4.0 \ - --guidance_scale_high 3.0 \ - --flow_shift 12.0 \ - --num_inference_steps 40 \ + --num-frames 33 \ + --guidance-scale 4.0 \ + --guidance-scale-high 3.0 \ + --flow-shift 12.0 \ + --num-inference-steps 40 \ --fps 16 \ --output t2v_out.mp4 ``` @@ -23,15 +23,15 @@ Key arguments: - `--prompt`: text description (string). - `--height/--width`: output resolution (defaults 480x832, i.e. 480P). Dimensions should align with Wan VAE downsampling (multiples of 8). -- `--num_frames`: Number of frames (Wan default is 81). -- `--guidance_scale` and `--guidance_scale_high`: CFG scale (applied to low/high). -- `--negative_prompt`: optional list of artifacts to suppress (the PR demo used a long Chinese string). -- `--boundary_ratio`: Boundary split ratio for low/high DiT. Default `0.875` uses both transformers for best quality. Set to `1.0` to load only the low-noise transformer (saves noticeable memory with good quality, recommended if memory is limited). Set to `0.0` loads only the high-noise transformer (not recommended, lower quality). +- `--num-frames`: Number of frames (Wan default is 81). +- `--guidance-scale` and `--guidance-scale-high`: CFG scale (applied to low/high). +- `--negative-prompt`: optional list of artifacts to suppress (the PR demo used a long Chinese string). +- `--boundary-ratio`: Boundary split ratio for low/high DiT. Default `0.875` uses both transformers for best quality. Set to `1.0` to load only the low-noise transformer (saves noticeable memory with good quality, recommended if memory is limited). Set to `0.0` loads only the high-noise transformer (not recommended, lower quality). - `--fps`: frames per second for the saved MP4 (requires `diffusers` export_to_video). - `--output`: path to save the generated video. -- `--vae_use_slicing`: enable VAE slicing for memory optimization. -- `--vae_use_tiling`: enable VAE tiling for memory optimization. -- `--cfg_parallel_size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](../../../docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). +- `--vae-use-slicing`: enable VAE slicing for memory optimization. +- `--vae-use-tiling`: enable VAE tiling for memory optimization. +- `--cfg-parallel-size`: set it to 2 to enable CFG Parallel. See more examples in [`user_guide`](../../../docs/user_guide/diffusion/parallelism_acceleration.md#cfg-parallel). - `--enable-cpu-offload`: enable CPU offloading for diffusion models. -> ℹ️ If you encounter OOM errors, try using `--vae_use_slicing` and `--vae_use_tiling` to reduce memory usage. +> ℹ️ If you encounter OOM errors, try using `--vae-use-slicing` and `--vae-use-tiling` to reduce memory usage. diff --git a/examples/offline_inference/text_to_video/text_to_video.py b/examples/offline_inference/text_to_video/text_to_video.py index 903fc001f..f645a47c0 100644 --- a/examples/offline_inference/text_to_video/text_to_video.py +++ b/examples/offline_inference/text_to_video/text_to_video.py @@ -24,25 +24,25 @@ def parse_args() -> argparse.Namespace: help="Diffusers Wan2.2 model ID or local path.", ) parser.add_argument("--prompt", default="A serene lakeside sunrise with mist over the water.", help="Text prompt.") - parser.add_argument("--negative_prompt", default="", help="Negative prompt.") + parser.add_argument("--negative-prompt", default="", help="Negative prompt.") parser.add_argument("--seed", type=int, default=42, help="Random seed.") - parser.add_argument("--guidance_scale", type=float, default=4.0, help="CFG scale (applied to low/high).") - parser.add_argument("--guidance_scale_high", type=float, default=None, help="Optional separate CFG for high-noise.") + parser.add_argument("--guidance-scale", type=float, default=4.0, help="CFG scale (applied to low/high).") + parser.add_argument("--guidance-scale-high", type=float, default=None, help="Optional separate CFG for high-noise.") parser.add_argument("--height", type=int, default=720, help="Video height.") parser.add_argument("--width", type=int, default=1280, help="Video width.") - parser.add_argument("--num_frames", type=int, default=81, help="Number of frames (Wan default is 81).") - parser.add_argument("--num_inference_steps", type=int, default=40, help="Sampling steps.") + parser.add_argument("--num-frames", type=int, default=81, help="Number of frames (Wan default is 81).") + parser.add_argument("--num-inference-steps", type=int, default=40, help="Sampling steps.") parser.add_argument( - "--boundary_ratio", + "--boundary-ratio", type=float, default=0.875, help="Boundary split ratio for low/high DiT. Default 0.875 uses both transformers for best quality. Set to 1.0 to load only the low-noise transformer (saves noticeable memory with good quality, recommended if memory is limited).", ) parser.add_argument( - "--flow_shift", type=float, default=5.0, help="Scheduler flow_shift (5.0 for 720p, 12.0 for 480p)." + "--flow-shift", type=float, default=5.0, help="Scheduler flow_shift (5.0 for 720p, 12.0 for 480p)." ) parser.add_argument( - "--cache_backend", + "--cache-backend", type=str, default=None, choices=["cache_dit"], @@ -60,17 +60,17 @@ def parse_args() -> argparse.Namespace: parser.add_argument("--output", type=str, default="wan22_output.mp4", help="Path to save the video (mp4).") parser.add_argument("--fps", type=int, default=24, help="Frames per second for the output video.") parser.add_argument( - "--vae_use_slicing", + "--vae-use-slicing", action="store_true", help="Enable VAE slicing for memory optimization.", ) parser.add_argument( - "--vae_use_tiling", + "--vae-use-tiling", action="store_true", help="Enable VAE tiling for memory optimization.", ) parser.add_argument( - "--enforce_eager", + "--enforce-eager", action="store_true", help="Disable torch.compile and force eager execution.", ) @@ -91,26 +91,26 @@ def parse_args() -> argparse.Namespace: help="Number of ready layers (blocks) to keep on GPU during generation.", ) parser.add_argument( - "--ulysses_degree", + "--ulysses-degree", type=int, default=1, help="Number of GPUs used for ulysses sequence parallelism.", ) parser.add_argument( - "--ring_degree", + "--ring-degree", type=int, default=1, help="Number of GPUs used for ring sequence parallelism.", ) parser.add_argument( - "--cfg_parallel_size", + "--cfg-parallel-size", type=int, default=1, choices=[1, 2], help="Number of GPUs used for classifier free guidance parallel size.", ) parser.add_argument( - "--tensor_parallel_size", + "--tensor-parallel-size", type=int, default=1, help="Number of GPUs used for tensor parallelism (TP) inside the DiT.",