2026-03-30 14:28:04 +08:00
# Diffusion Advanced Features
## Table of Contents
- [Overview ](#overview )
- [Supported Features ](#supported-features )
- [Supported Models ](#supported-models )
- [Feature Compatibility ](#feature-compatibility )
- [Learn More ](#learn-more )
## Overview
vLLM-Omni supports various advanced features for diffusion models:
2026-04-09 15:54:23 +08:00
- Acceleration: **cache methods** , **parallelism methods** , **startup optimizations**
2026-03-30 14:28:04 +08:00
- Memory optimization: **cpu offloading** , **quantization**
2026-04-15 11:52:20 +08:00
- Extensions: **LoRA inference** , **frame interpolation**
2026-04-01 17:25:02 +08:00
- Execution modes: **step execution**
2026-03-30 14:28:04 +08:00
## Supported Features
### Acceleration
#### Lossy Acceleration
Cache methods trade minimal quality for significant speedup. Quality loss is typically imperceptible with proper tuning.
| Method | Description | Best For |
|--------|-------------|----------|
| ** [TeaCache ](diffusion/cache_acceleration/teacache.md )** | Adaptive caching using modulated inputs | Quick setup, balanced quality/speed on single GPU |
| ** [Cache-DiT ](diffusion/cache_acceleration/cache_dit.md )** | Multiple caching techniques: DBCache, TaylorSeer, SCM | Fine-grained control, tunable quality-speed tradeoff |
#### Lossless Acceleration
Parallelism methods distribute computation across GPUs without quality loss (mathematically equivalent to single-GPU).
| Method | Description | Best For |
|--------|-------------|----------|
| ** [Ulysses-SP ](diffusion/parallelism/sequence_parallel.md )** | Sequence parallelism via all-to-all communication | High-resolution images (>1536px) or long videos with 2-8 GPUs |
| ** [Ring-Attention ](diffusion/parallelism/sequence_parallel.md )** | Sequence parallelism via ring-based communication | Videos, very long sequences, memory-constrained, with 2-8 GPUs |
| ** [CFG-Parallel ](diffusion/parallelism/cfg_parallel.md )** | Splits CFG positive/negative branches across devices | Image editing with CFG guidance (true_cfg_scale > 1) on 2 GPUs |
| ** [Tensor Parallelism ](diffusion/parallelism/tensor_parallel.md )** | Shards model weights across devices | Large models that don't fit in single GPU, with 2+ GPUs |
| ** [HSDP ](diffusion/parallelism/hsdp.md )** | Weight sharding via FSDP2, redistributed on-demand at runtime | Very large models (14B+) on limited VRAM, combinable with SP |
| ** [Expert Parallelism ](diffusion/parallelism/expert_parallel.md )** | Shards MoE expert MLP blocks across devices | MoE diffusion models (e.g., HunyuanImage3.0) |
2026-04-09 15:54:23 +08:00
#### Startup Optimization
| Method | Description | Best For |
|--------|-------------|----------|
| ** [Multi-Thread Weight Loading ](#multi-thread-weight-loading )** | Loads safetensors shards in parallel using a thread pool | All diffusion models; reduces startup from minutes to seconds |
2026-03-30 14:28:04 +08:00
**Note:** Some acceleration methods can be combined together for optimized performance. See [Feature Compatibility Table ](#feature-compatibility ) and [Feature Compatibility Tutorial ](feature_compatibility.md ) for detailed configuration examples.
### Memory Optimization
Memory optimization methods help reduce GPU memory usage, enabling inference on resource-constrained hardware or larger models.
| Method | Description | Best For |
|--------|-------------|----------|
| ** [CPU Offload ](diffusion/cpu_offload_diffusion.md )** | Offloads model components to CPU memory | Limited VRAM, large models on consumer GPUs |
| ** [Quantization ](diffusion/quantization/overview.md )** | Reduces DiT layers from BF16 to FP8/INT8/etc. | Limited VRAM, minimal accuracy loss |
| ** [VAE Patch Parallelism ](diffusion/parallelism/vae_patch_parallel.md )** | Distributes VAE decode tiling across GPUs | High-resolution generation with reduced VAE memory peak |
### Extensions
Extension methods add specialized capabilities to diffusion models beyond standard inference.
| Method | Description | Best For |
|--------|-------------|----------|
| ** [LoRA Inference ](diffusion/lora.md )** | Enables inference with Low-Rank Adaptation (LoRA) adapters weights | Reinforcement learning extensions |
2026-04-15 11:52:20 +08:00
| ** [Frame Interpolation ](diffusion/frame_interpolation.md )** | Inserts intermediate video frames after generation for smoother motion | Video generation pipelines that need higher temporal smoothness |
2026-03-30 14:28:04 +08:00
2026-04-01 17:25:02 +08:00
### Execution Modes
Execution modes control how the diffusion pipeline processes denoise steps.
| Method | Description | Best For |
|--------|-------------|----------|
| ** [Step Execution ](diffusion/step_execution.md )** | Per-step denoise execution with mid-request abort support | Request cancellation between denoise steps, fine-grained execution control |
**Note:** Step execution is currently supported by QwenImagePipeline only. See [Supported Models ](#supported-models ) for details.
2026-03-30 14:28:04 +08:00
### Quantization Methods
| Method | Configuration | Description | Best For |
|--------|--------------|-------------|----------|
| ** [FP8 ](diffusion/quantization/fp8.md )** | `quantization="fp8"` | FP8 W8A8 on Ada/Hopper, weight-only on older GPUs | Memory reduction, inference speedup |
| ** [INT8 ](diffusion/quantization/int8.md )** | `quantization="int8"` | INT8 weight-only, no calibration or pre-quantized checkpoint needed | Memory reduction, broad GPU compatibility |
| ** [GGUF ](diffusion/quantization/gguf.md )** | `quantization="gguf"` | Native GGUF transformer-only weights (Q4, Q8, etc.) | Memory reduction on consumer GPUs |
## Supported Models
The following tables show which models support each feature:
- **🔀SP (Ulysses & Ring)**: Includes both Ulysses-SP and Ring-Attention methods
- ✅ = Fully supported
- ❌ = Not supported
> Notes:
> 1. CPU Offload has two methods: Module-wise (default for models with DiT + text encoder) and Layerwise. The tables below show **Layerwise support** only.
> 2. The **💾Quantization** column is collapsed for readability. See [Quantization Overview](diffusion/quantization/overview.md) for per-method (FP8, GGUF, …) and per-model support details.
### ImageGen
2026-04-01 17:25:02 +08:00
| Model | ⚡TeaCache | ⚡Cache-DiT | 🔀SP (Ulysses & Ring) | 🔀CFG-Parallel | 🔀Tensor-Parallel | 🔀HSDP | 💾CPU Offload (Layerwise) | 💾VAE-Patch-Parallel | 💾Quantization | 🔄Step Execution |
|-------|:----------:|:-----------:|:---------------------:|:--------------:|:-----------------:|:------:|:------------------------:|:--------------------:|:--------------:|:----------------:|
2026-04-25 15:44:56 +08:00
| **Bagel** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
2026-04-26 23:55:16 +08:00
| **FLUX.1-dev** | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
2026-04-17 02:02:30 -06:00
| **FLUX.1-schnell** | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
2026-04-01 17:25:02 +08:00
| **FLUX.2-klein** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
| **FLUX.1-Kontext-dev** | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
2026-04-13 17:51:48 +08:00
| **FLUX.2-dev** | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
2026-04-01 20:01:09 +08:00
| **GLM-Image** | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
2026-04-02 10:08:58 +08:00
| **HunyuanImage3** | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
2026-04-17 17:52:35 -06:00
| **LongCat-Image** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| **LongCat-Image-Edit** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
2026-04-04 17:29:09 +08:00
| **MagiHuman** | ❌ | ❌ | ❌ | ❓ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
2026-04-01 17:25:02 +08:00
| **MammothModa2(T2I)** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
2026-04-08 09:55:09 +08:00
| **Nextstep_1(T2I)** | ❓ | ❓ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
2026-04-12 22:06:49 +08:00
| **OmniGen2** | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
2026-04-08 09:55:09 +08:00
| **Ovis-Image** | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
2026-04-06 22:47:45 +08:00
| **Qwen-Image** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (decode) | ✅ | ✅ |
| **Qwen-Image-2512** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (decode) | ✅ | ✅ |
| **Qwen-Image-Edit** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (decode) | ❌ | ❌ |
| **Qwen-Image-Edit-2509** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (decode) | ✅ | ❌ | ❌ |
| **Qwen-Image-Layered** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (decode) | ❌ | ❌ |
2026-04-08 09:55:09 +08:00
| **Stable-Diffusion3.5** | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ (decode) | ❌ | ❌ |
2026-04-06 22:47:45 +08:00
| **Z-Image** | ✅ | ✅ | ✅ | ❓ | ✅ (TP=2 only) | ✅ | ❌ | ✅ (decode) | ✅ | ❌ |
2026-03-30 14:28:04 +08:00
> Notes:
> 1. Nextstep_1(T2I) does not support cache acceleration methods such as TeaCache or Cache-DiT.
2026-04-07 17:16:12 +08:00
> 2. `Tongyi-MAI/Z-Image-Turbo` and `SII-GAIR/daVinci-MagiHuman-Base-1080p` are distilled models with minimal NFEs; CFG-Parallel is not necessary.
2026-03-30 14:28:04 +08:00
### VideoGen
2026-04-01 17:25:02 +08:00
| Model | ⚡TeaCache | ⚡Cache-DiT | 🔀SP (Ulysses & Ring) | 🔀CFG-Parallel | 🔀Tensor-Parallel | 🔀HSDP | 💾CPU Offload (Layerwise) | 💾VAE-Patch-Parallel | 💾Quantization | 🔄Step Execution |
|-------|:----------:|:-----------:|:---------------------:|:--------------:|:-----------------:|:------:|:------------------------:|:--------------------:|:--------------:|:----------------:|
2026-04-06 22:47:45 +08:00
| **Wan2.2** | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (encode/decode) | ❌ | ❌ |
| **Wan2.1-VACE** | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (decode) | ❌ | ❌ |
2026-04-20 18:51:16 +08:00
| **LTX-2** | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
2026-04-23 10:51:51 +02:00
| **LTX-2.3** | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
2026-04-01 17:25:02 +08:00
| **Helios** | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
2026-04-06 22:47:45 +08:00
| **HunyuanVideo-1.5 T2V I2V** | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ (decode) | ✅ | ❌ |
2026-04-20 00:43:53 +08:00
| **DreamID-Omni** | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
2026-03-30 14:28:04 +08:00
2026-04-15 11:52:20 +08:00
**Frame Interpolation Support**
- **Supported**: Wan2.2 text-to-video, image-to-video, and TI2V pipelines
2026-04-23 10:51:51 +02:00
- **Not supported**: Wan2.1-VACE, LTX-2, LTX-2.3, Helios, HunyuanVideo-1.5, DreamID-Omni
2026-04-15 11:52:20 +08:00
2026-03-30 14:28:04 +08:00
### AudioGen
2026-04-01 17:25:02 +08:00
| Model | ⚡TeaCache | ⚡Cache-DiT | 🔀SP (Ulysses & Ring) | 🔀CFG-Parallel | 🔀Tensor-Parallel | 🔀HSDP | 💾CPU Offload (Layerwise) | 💾VAE-Patch-Parallel | 💾Quantization | 🔄Step Execution |
|-------|:----------:|:-----------:|:---------------------:|:--------------:|:-----------------:|:------:|:------------------------:|:--------------------:|:--------------:|:----------------:|
2026-04-21 18:13:20 +08:00
| **Stable-Audio-Open** | ✅ | ❌ | ❓ | ❓ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ |
2026-03-30 14:28:04 +08:00
## Feature Compatibility
**Legend:**
- ✅: Functionality is supported
- ❌: No support plan
- ❓: Not verified yet and Not Recommended
2026-04-01 17:25:02 +08:00
| | ⚡TeaCache | ⚡Cache-DiT | 🔀Ulysses-SP | 🔀Ring-Attn | 🔀CFG-Parallel | 🔀Tensor Parallel | 🔀HSDP | 🔀Expert Parallel | 💾CPU Offloading (Layerwise) | 💾CPU Offloading (Module-wise) | 💾VAE Patch Parallel | 💾FP8 Quant | 🔧LoRA Inference | 🔄Step Execution |
|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| ** ⚡TeaCache** | | | | | | | | | | | | | | |
| ** ⚡Cache-DiT** | ❌ | | | | | | | | | | | | | |
| ** 🔀Ulysses-SP** | ✅ | ✅ | | | | | | | | | | | | |
| ** 🔀Ring-Attn** | ✅ | ✅ | ✅ | | | | | | | | | | | |
| ** 🔀CFG-Parallel** | ✅ | ✅ | ✅ | ✅ | | | | | | | | | | |
| ** 🔀Tensor Parallel** | ✅ | ✅ | ✅ | ✅ | ✅ | | | | | | | | | |
| ** 🔀HSDP** | ❓ | ❓ | ❓ | ❓ | ❓ | ❌ | | | | | | | | |
| ** 🔀Expert Parallel** | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | | | | | | | |
| ** 💾CPU Offloading (Layerwise)** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | | | | | |
| ** 💾CPU Offloading (Module-wise)** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❓ | ❓ | ❌ | | | | | |
| ** 💾VAE Patch Parallel** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | | | | |
| ** 💾FP8 Quant** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❓ | ❓ | ✅ | ✅ | ✅ | | | |
| ** 🔧LoRA Inference** | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | ❓ | | |
| ** 🔄Step Execution** | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❓ | ❓ | ✅ | ❓ | ✅ | ✅ | ❌ | |
2026-03-30 14:28:04 +08:00
!!! info
1. Tensor Parallel and HSDP are not compatible.
2. TeaCache and Cache-DiT are not compatible.
3. CPU Offloading (Layerwise) and CPU Offloading (Module-wise) are not compatible.
4. CPU Offloading (Layerwise) supports single-card for now.
5. Using FP8-Quant as an example of qunatization methods.
2026-04-01 17:25:02 +08:00
6. Step Execution is not compatible with cache backends (TeaCache, Cache-DiT) or LoRA.
2026-03-30 14:28:04 +08:00
2026-04-09 15:54:23 +08:00
## Multi-Thread Weight Loading
Large diffusion models can take several minutes to load weights at startup (e.g., ~3 min for Qwen-Image, ~5 min for Wan2.2 I2V 14B). Multi-thread weight loading speeds up this process by loading safetensors shards in parallel using a thread pool instead of sequentially.
This optimization is **enabled by default** with 4 threads. No configuration is needed for the default behavior.
### Configuration
| Parameter | CLI Flag | Default | Description |
|-----------|----------|---------|-------------|
| `enable_multithread_weight_load` | `--disable-multithread-weight-load` | `True` (enabled) | Pass the flag to disable multi-thread loading |
| `num_weight_load_threads` | `--num-weight-load-threads` | `4` | Number of threads for parallel weight loading |
!!! tip
The default of 4 threads balances speed and disk I/O contention. On fast NVMe storage you may benefit from more threads (e.g., 8). On HDD or network storage, the default of 4 avoids saturating I/O bandwidth.
### Online Serving
```bash
# Default (multi-thread enabled, 4 threads)
vllm serve Qwen/Qwen-Image --omni --port 8091
# Custom thread count
vllm serve Wan-AI/Wan2.2-I2V-A14B-Diffusers --omni --num-weight-load-threads 8
# Disable multi-thread loading
vllm serve Qwen/Qwen-Image --omni --disable-multithread-weight-load
```
### Offline Inference
```python
from vllm_omni import Omni
# Default (multi-thread enabled, 4 threads)
omni = Omni ( model = "Qwen/Qwen-Image" )
# Custom thread count
omni = Omni (
model = "Wan-AI/Wan2.2-I2V-A14B-Diffusers" ,
num_weight_load_threads = 8 ,
)
```
### Benchmarks
Measured on NVIDIA H800:
| Model | Before | After | Speedup |
|-------|--------|-------|---------|
| **Qwen/Qwen-Image** (53.7 GiB) | 168s | 27s | **6.2x** |
| **Wan-AI/Wan2.2-I2V-A14B-Diffusers** (64.5 GiB) | 283s | 56s | **5.1x** |
2026-03-30 14:28:04 +08:00
## Learn More
**Cache Acceleration:**
- **[TeaCache Configuration Guide ](diffusion/cache_acceleration/teacache.md )** - Parameter tuning, performance tips, troubleshooting
- **[Cache-DiT Advanced Guide ](diffusion/cache_acceleration/cache_dit.md )** - DBCache, TaylorSeer, SCM techniques and optimization
**Parallelism Methods:**
- **[Parallelism Overview ](diffusion/parallelism/overview.md )** - Tensor Parallelism, Sequence Parallelism, CFG Parallelism, HSDP, and Expert Parallelism
**Memory Optimization:**
- **[CPU Offload Guide ](diffusion/cpu_offload_diffusion.md )** - Offload model components to CPU, reduce GPU memory usage
- **[VAE Patch Parallelism Guide ](diffusion/parallelism/vae_patch_parallel.md )** - Distribute VAE decode tiling across GPUs for high-resolution images
- **[Quantization Overview ](diffusion/quantization/overview.md )** - Overview of quantization methods for diffusion models
**Extensions:**
- **[LoRA Inference Guide ](diffusion/lora.md )** - Low-Rank Adaptation for style customization and fine-tuning
2026-04-15 11:52:20 +08:00
- **[Frame Interpolation Guide ](diffusion/frame_interpolation.md )** - Worker-side post-generation video frame interpolation for smoother motion
2026-03-30 14:28:04 +08:00
2026-04-01 17:25:02 +08:00
**Execution Modes:**
- **[Step Execution Guide ](diffusion/step_execution.md )** - Per-step denoise execution with mid-request abort support
2026-04-09 15:54:23 +08:00
**Startup Optimization:**
- **[Multi-Thread Weight Loading ](#multi-thread-weight-loading )** - Speed up model startup by loading safetensors shards in parallel
2026-03-30 14:28:04 +08:00
**Advanced Topics:**
- **[Feature Compatibility ](feature_compatibility.md )** - How to combine multiple features for maximum performance