🚀 SVDQuant - 文本到图像量化模型
SVDQuant 是一种针对 4 位权重和激活的训练后量化技术,能很好地保持视觉保真度。在 12B 的 FLUX.1 - dev 模型上,与 BF16 模型相比,它实现了 3.6 倍的内存缩减。在 16GB 笔记本 4090 GPU 上,通过消除 CPU 卸载,它比 16 位模型快 8.7 倍,比 NF4 W4A16 基线快 3 倍。在 PixArt - ∑ 上,它展示了比其他 W4A4 甚至 W4A8 基线显著更优的视觉质量。

🚀 快速开始
环境准备
请按照 mit - han - lab/nunchaku 中的说明设置环境。
运行模型
以下是使用 Diffusers
库运行模型的示例代码:
import torch
from diffusers import FluxPipeline
from nunchaku.models.transformer_flux import NunchakuFluxTransformer2dModel
transformer = NunchakuFluxTransformer2dModel.from_pretrained("mit-han-lab/svdq-int4-flux.1-dev")
pipeline = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev", transformer=transformer, torch_dtype=torch.bfloat16
).to("cuda")
image = pipeline("A cat holding a sign that says hello world", num_inference_steps=50, guidance_scale=3.5).images[0]
image.save("example.png")
Comfy UI 使用方法
请查看 comfyui/README.md 了解具体使用方法。
✨ 主要特性
量化方法 -- SVDQuant
SVDQuant 的概述:
- 阶段 1:最初,激活 X 和权重 W 都包含离群值,这使得 4 位量化具有挑战性。
- 阶段 2:将离群值从激活迁移到权重,得到更新后的激活和权重。此时激活更易于量化,而权重的量化难度增加。
- 阶段 3:SVDQuant 进一步使用 SVD 将权重分解为低秩分量和残差。这样,低秩分支以 16 位精度运行,减轻了量化难度。
Nunchaku 引擎设计

- (a) 朴素运行的问题:天真地以秩 32 运行低秩分支,由于 Down Projection 中额外读取 16 位输入和 Up Projection 中额外写入 16 位输出,将引入 57% 的延迟开销。Nunchaku 通过内核融合优化了此开销。
- (b) 内核融合优化:Down Projection 和 Quantize 内核使用相同的输入,而 Up Projection 和 4 - Bit Compute 内核共享相同的输出。为减少数据移动开销,将前两个和后两个内核分别融合在一起。
📦 模型信息
属性 |
详情 |
开发者 |
MIT、NVIDIA、CMU、普林斯顿大学、加州大学伯克利分校、上海交通大学和 Pika Labs |
模型类型 |
INT W4A4 模型 |
模型大小 |
6.64GB |
模型分辨率 |
像素数量需为 65,536 的倍数 |
许可证 |
Apache - 2.0 |
⚠️ 限制说明
- 硬件限制:该模型仅可在具有 sm_86(安培架构:RTX 3090、A6000)、sm_89(阿达架构:RTX 4090)和 sm_80(A100)架构的 NVIDIA GPU 上运行。更多详细信息请参阅此 问题。
- 细节差异:与 BF16 模型相比,在细节上可能会观察到一些细微差异。
📄 引用说明
如果您发现此模型对您的研究有用或相关,请引用以下 BibTeX:
@inproceedings{
li2024svdquant,
title={SVDQuant: Absorbing Outliers by Low-Rank Components for 4-Bit Diffusion Models},
author={Li*, Muyang and Lin*, Yujun and Zhang*, Zhekai and Cai, Tianle and Li, Xiuyu and Guo, Junxian and Xie, Enze and Meng, Chenlin and Zhu, Jun-Yan and Han, Song},
booktitle={The Thirteenth International Conference on Learning Representations},
year={2025}
}