[Diffusion] Optimize Qwen-Image TP collectives and attention (#36680)
Co-authored-by: Mick <mickjagger19@icloud.com> Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Mick
Cursor
parent
562b661e0e
commit
71cee04ebe
@@ -55,7 +55,45 @@ sglang generate \
|
||||
--save-output
|
||||
```
|
||||
|
||||
### 3.2 Configuration Tips
|
||||
### 3.2 Fixed-resolution latency on two H200 GPUs
|
||||
|
||||
For `Qwen/Qwen-Image-2512` at 1024x1024, use breakable CUDA graph (BCG) to
|
||||
reduce launch overhead across graph-safe DiT segments while retaining explicit
|
||||
breakpoints around unsupported operations. This recipe was validated on two
|
||||
NVIDIA H200 GPUs with 50 denoising steps and no classifier-free guidance:
|
||||
|
||||
```bash Command
|
||||
sglang serve \
|
||||
--model-path Qwen/Qwen-Image-2512 \
|
||||
--model-type diffusion \
|
||||
--num-gpus 2 \
|
||||
--tp-size 2 \
|
||||
--performance-mode speed \
|
||||
--dit-layerwise-offload false \
|
||||
--enable-torch-compile false \
|
||||
--enable-breakable-cuda-graph \
|
||||
--warmup-mode server \
|
||||
--warmup-resolutions 1024x1024
|
||||
```
|
||||
|
||||
Declare every production resolution in `--warmup-resolutions`. A request at an
|
||||
uncaptured resolution runs eagerly, so omitting `1024x1024` removes the gain
|
||||
from this recipe. Graph capture used about 5 GB more peak memory per GPU in the
|
||||
validation run.
|
||||
|
||||
On CUDA, the TP path dispatches supported collectives through SRT
|
||||
CustomAllReduceV2. At 1024x1024, Qwen-Image reduces 24 MiB row-parallel
|
||||
outputs; the diffusion runtime reserves a 32 MiB V2 workspace so these
|
||||
collectives do not fall back to NCCL. If profiling shows large NCCL all-reduce
|
||||
kernels again, first confirm that V2 is enabled and the requested shape fits
|
||||
the workspace.
|
||||
|
||||
BCG changed floating-point execution order but not the sampling algorithm. The
|
||||
fixed-seed output measured 0.984 SSIM and 39.7 dB PSNR against eager output; use
|
||||
eager execution when you require bit-exact output. Regional `torch.compile` was
|
||||
also tested on this profile and did not improve steady-state latency.
|
||||
|
||||
### 3.3 Configuration Tips
|
||||
|
||||
Currently supported optimizations are listed [here](/docs/sglang-diffusion/compatibility_matrix).
|
||||
|
||||
|
||||
@@ -41,6 +41,11 @@ These settings should preserve model behavior while changing residency, parallel
|
||||
<td style={{padding: "9px 12px"}}>You want a safe preset for speed or memory without overriding explicit flags.</td>
|
||||
<td style={{padding: "9px 12px"}}><a href="./deployment_cookbook">Deployment and Performance Modes</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style={{padding: "9px 12px", fontWeight: 500}}>Breakable CUDA graph</td>
|
||||
<td style={{padding: "9px 12px"}}>A supported pipeline serves a fixed set of shapes and eager execution is launch-bound.</td>
|
||||
<td style={{padding: "9px 12px"}}><a href="./api/cli">CLI reference</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style={{padding: "9px 12px", fontWeight: 500}}>Offload, FSDP, CFG parallelism</td>
|
||||
<td style={{padding: "9px 12px"}}>GPU memory, multi-GPU residency, or CFG branch splitting is the main bottleneck.</td>
|
||||
@@ -119,9 +124,10 @@ These techniques can change the denoising path, numerical representation, or gen
|
||||
|
||||
1. Establish a baseline with the target model, resolution, frame count, step count, and GPU type.
|
||||
2. Select `--performance-mode` and explicit residency or parallelism flags.
|
||||
3. Tune attention backend and batching for the deployment pattern.
|
||||
4. Profile if the bottleneck is unclear.
|
||||
5. Add caching, progressive resolution, or quantization only after comparing output quality against your acceptance target.
|
||||
3. Compare breakable CUDA graph against eager execution for supported fixed-shape pipelines. Pass every served resolution to `--warmup-resolutions` and confirm capture in the server log.
|
||||
4. Tune attention backend and batching for the deployment pattern.
|
||||
5. Profile if the bottleneck is unclear.
|
||||
6. Add caching, progressive resolution, or quantization only after comparing output quality against your acceptance target.
|
||||
|
||||
## Diagnostics
|
||||
|
||||
|
||||
Reference in New Issue
Block a user