doanh25032004's picture
Backup source tree of video_gen_physics (2026-07-31T14:21:08Z)
ec0a9aa verified
|
Raw
History Blame Contribute Delete
9.69 kB
<div align="center" id="sglangtop">
<img src="assets/Minimal_dark_white_background.png" alt="logo" width="400" margin="10px"></img>
</div>
<h3 align="center">
Accelerate Video Generation with High Pixel-level Fidelity
</h3>
<p align="center">
| <a href="https://svg-project.github.io/"><b>Website</b></a> | <a href="https://arxiv.org/abs/2502.01776"><b>SVG 1 Paper</b></a> | <a href="https://arxiv.org/abs/2505.18875"><b>SVG2 Paper</b></a> | <a href="https://x.com/HaochengXiUCB/status/1899953252327927911"><b>SVG 1 Twitter/X</b></a> | <a href="https://x.com/HaochengXiUCB/status/1971219731140182423"><b>SVG 2 Twitter/X</b></a> |
</p>
## 🔥News🔥
- [2025/09] We release [Flash k-Means](https://github.com/svg-project/flash-kmeans), a batched K-Means clustering algorithm implemented with Triton that offers >10x speedup!
- [2025/09] [Sparse VideoGen2](https://arxiv.org/abs/2505.18875) is open-sourced! HunyuanVideo, Wan 2.1 and Cosmos can be accelerated by 2×
- [2025/09] Sparse VideoGen2 is accepted by NeurIPS 2025 as a **spotlight**!
- [2025/05] [Sparse VideoGen](https://arxiv.org/abs/2502.01776) is accepted by ICML 2025!
- [2025/04] Wan 2.1 is supported! Both T2V and I2V are accelerated.
- [2025/03] Sparse VideoGen is open-sourced! HunyuanVideo and CogVideoX v1.5 can be accelerated by 2×
## 📚 About
Sparse VideoGen 1 & 2 are **training-free frameworks** that leverage **inherent sparsity** in the 3D Full Attention operations to accelerate video generation.
Sparse VideoGen 1's core contributions:
- Identifying the **spatial and temporal sparsity patterns** in video diffusion models.
- Proposing an **Online Profiling Strategy** to dynamically identify these patterns.
- Implementing an end-to-end generation framework through **efficient algorithm-system co-design**, with **hardware-efficient layout transformation** and **customized kernels**.
Sparse VideoGen 2's core contributions:
- Tackles **inaccurate token identification** and **computation waste** in video diffusion.
- Introduces **semantic-aware** sparse attention with efficient **token permutation**.
- Provides an end-to-end system design with a **dynamic attention** kernel and **flash k-means** kernel.
## 🎥 Demo of SVG1
<div style="display: flex; gap: 10px;">
<img src="assets/video/SparseVideoGenDemo.gif" style="width: 100%;"/>
<img src="assets/video/Algorithm.gif" style="width: 100%;"/>
</div>
## 🎥 Demo of SVG2
<table border="0" style="width: 100%; text-align: center;">
<tr>
<td>
<video src="https://github.com/user-attachments/assets/ca4801bb-a94a-4f34-8c67-f63d080536b7"
width="100%" autoplay loop muted playsinline controls></video>
</td>
<td>
<video src="https://github.com/user-attachments/assets/a030f7f2-6048-4268-b984-ef5027c577d8"
width="100%" autoplay loop muted playsinline controls></video>
</td>
<td>
<video src="https://github.com/user-attachments/assets/acd186f3-828d-40af-a635-9abbe9fb7962"
width="100%" autoplay loop muted playsinline controls></video>
</td>
</tr>
</table>
## 🛠️ Installation
Begin by cloning the repository:
```bash
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/svg-project/Sparse-VideoGen.git # Do not clone the demo, otherwise is too large
cd Sparse-VideoGen
```
We recommend using CUDA versions 12.4 / 12.8 + PyTorch versions 2.5.1 / 2.6.0
```bash
# 1. Create and activate conda environment
conda create -n SVG python==3.12.9 # or 3.11.9 if have error when installing kernels
conda activate SVG
# 2. Install uv, then install other packages
pip install uv
uv pip install -e .
pip install flash-attn --no-build-isolation
# 4. Install customized kernels. (You might need to upgrade your cmake and CUDA version.)
pip install -U setuptools # Require at least version 77.0.0
git submodule update --init --recursive
cd svg/kernels
pip install -U cmake
bash setup.sh
# 5. Install FlashInfer (standard) and cuVS
cd 3rdparty/flashinfer
pip install --no-build-isolation --verbose --editable .
pip install cuvs-cu12 --extra-index-url=https://pypi.nvidia.com
# Optional: If the FlashInfer monkey patch fails in your environment,
# install the manually patched FlashInfer (block sparse with varied block sizes).
cd 3rdparty/flashinfer
cp ../../../../assets/patches/modifications.patch ./
git apply modifications.patch
pip install --no-build-isolation --verbose --editable . # Block Sparse Attention with varied block sizes
```
You don’t need to install [flash-kmeans](https://github.com/svg-project/flash-kmeans) separately. A copy of flash-kmeans is included in Sparse VideoGen and is used by default.
## 🚀 Inference Examples
### Wan 2.1
We support Text-to-Video and Image-to-Video inference of Wan 2.1 model. The running scripts are:
```bash
# Text-to-Video
# bash scripts/wan/wan_t2v_720p_svg.sh # SVG
bash scripts/wan/wan_t2v_720p_sap.sh # SVG2
# Image-to-Video
# bash scripts/wan/wan_i2v_720p_svg.sh # SVG
bash scripts/wan/wan_i2v_720p_sap.sh # SVG2
```
### HunyuanVideo
The running scripts are:
```bash
# bash scripts/hyvideo/hyvideo_t2v_720p_svg.sh # SVG
bash scripts/hyvideo/hyvideo_t2v_720p_sap.sh # SVG2
```
## 📑 Open-source Plan
- [ ] Support FP8 attention
- [x] Support [Wan 2.1](https://github.com/Wan-Video/Wan2.1)
- [x] Support [Cosmos](https://github.com/NVIDIA/Cosmos)
## Efficiency Benchmark
<!-- ### End-to-End Speedup
| Model | Task | Hardware | Resolution | Baseline (min) | SVG (min) | Speedup |
|-------|------|----------|------------|---------------|-----------|---------|
| HunyuanVideo | Text-to-Video | H100 | 720P | 29:57 | 15:38 | 1.91× |
| Wan 2.1 | Text-to-Video | H100 | 720P | 31:35 | 20:51 | 1.51× |
| Wan 2.1 | Text-to-Video | H100 | 480P | 8:05 | 6:11 | 1.32× |
| Wan 2.1 | Image-to-Video | H100 | 720P | 24:05 | 16:03 | 1.50× |
| HunyuanVideo | Text-to-Video | A100 | 720P | 50:48 | 30:14 | 1.68× |
| Wan 2.1 | Text-to-Video | A100 | 720P | 57:57 | 42:59 | 1.35× |
| Wan 2.1 | Text-to-Video | A100 | 480P | 15:41 | 13:00 | 1.20× |
| Wan 2.1 | Image-to-Video | A100 | 720P | 45:19 | 34:27 | 1.32× | -->
### Customized Kernels Performance
We evaluate the performance of our customized kernels against the baseline implementations. The following tables show the memory bandwidth (GB/s) comparison for different batch sizes and hidden dimensions:
#### RMSNorm Performance
| Batch Size | Hidden Dim | Diffusers (GB/s) | SVG Customized (GB/s) | Speedup |
|------------|------------|------------------|----------------------|----------|
| 2,097,152 | 32 | 151.36 | 809.69 | 5.35× |
| 1,048,576 | 64 | 196.54 | 810.61 | 4.12× |
| 524,288 | 128 | 232.66 | 810.21 | 3.48× |
| 262,144 | 256 | 252.67 | 810.41 | 3.21× |
#### LayerNorm Performance
| Batch Size | Hidden Dim | Diffusers (GB/s) | SVG Customized (GB/s) | Speedup |
|------------|------------|------------------|----------------------|----------|
| 2,097,152 | 32 | 45.82 | 808.28 | 17.64× |
| 1,048,576 | 64 | 91.18 | 805.22 | 8.83× |
| 524,288 | 128 | 197.89 | 804.29 | 4.06× |
| 262,144 | 256 | 350.87 | 804.43 | 2.29× |
Our customized kernels achieve significantly higher memory bandwidth across all configurations, with speedups ranging from 2.29× to 17.64×. The performance improvement is particularly notable for smaller hidden dimensions and larger batch sizes.
### RoPE (Rotary Position Embedding) Performance
| Batch Size | Num Heads | Seq Length | Head Dim | Diffusers (GB/s) | SVG Customized (GB/s) | Speedup |
|------------|-----------|------------|----------|------------------|----------------------|----------|
| 1 | 32 | 1024 | 64 | 17.25 | 158.81 | 9.21× |
| 1 | 32 | 4096 | 64 | 27.74 | 405.75 | 14.63× |
| 1 | 32 | 16384 | 64 | 30.86 | 605.89 | 19.63× |
| 4 | 32 | 1024 | 64 | 27.60 | 475.94 | 17.24× |
| 4 | 32 | 4096 | 64 | 30.93 | 614.11 | 19.85× |
| 4 | 32 | 16384 | 64 | 32.41 | 648.36 | 20.00× |
The RoPE implementation in SVG shows substantial performance improvements over the Diffusers baseline, with speedups ranging from 9.21× to 20.00×. The performance gain is particularly significant for longer sequence lengths and larger batch sizes, demonstrating excellent scaling characteristics.
## 🔗 BibTeX
If you find Sparse VideoGen useful for your research and applications or interesting, please cite our work using BibTeX:
```bibtex
@article{xi2025sparse,
title={Sparse VideoGen: Accelerating Video Diffusion Transformers with Spatial-Temporal Sparsity},
author={Xi, Haocheng and Yang, Shuo and Zhao, Yilong and Xu, Chenfeng and Li, Muyang and Li, Xiuyu and Lin, Yujun and Cai, Han and Zhang, Jintao and Li, Dacheng and others},
journal={arXiv preprint arXiv:2502.01776},
year={2025}
}
@article{yang2025sparse,
title={Sparse VideoGen2: Accelerate Video Generation with Sparse Attention via Semantic-Aware Permutation},
author={Yang, Shuo and Xi, Haocheng and Zhao, Yilong and Li, Muyang and Zhang, Jintao and Cai, Han and Lin, Yujun and Li, Xiuyu and Xu, Chenfeng and Peng, Kelly and others},
journal={arXiv preprint arXiv:2505.18875},
year={2025}
}
```