🚀 SVDQuant
SVDQuantは、4ビットの重みとアクティベーションに対する学習後量子化技術で、視覚的な忠実度を維持します。12BのFLUX.1-devでは、BF16モデルと比較して3.6倍のメモリ削減を達成します。CPUオフロードを排除することで、16GBのラップトップ4090 GPU上で16ビットモデルよりも8.7倍の高速化を実現し、NF4 W4A16ベースラインよりも3倍高速です。PixArt-∑では、他のW4A4またはW4A8ベースラインよりも著しく優れた視覚品質を示します。

🚀 クイックスタート
SVDQuantは、4ビットの重みとアクティベーションに対する学習後量子化技術で、視覚的な忠実度を維持します。12BのFLUX.1-devでは、BF16モデルと比較して3.6倍のメモリ削減を達成します。
✨ 主な機能
- 4ビットの重みとアクティベーションに対する学習後量子化技術
- 視覚的な忠実度を維持しつつ、メモリ削減と高速化を実現
- PixArt-∑で他のベースラインよりも優れた視覚品質を示す
📦 インストール
Diffusers
mit-han-lab/nunchakuの指示に従って環境をセットアップしてください。その後、以下のコードでモデルを実行できます。
import torch
from diffusers import FluxPipeline
from nunchaku.models.transformer_flux import NunchakuFluxTransformer2dModel
transformer = NunchakuFluxTransformer2dModel.from_pretrained("mit-han-lab/svdq-int4-flux.1-schnell")
pipeline = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell", transformer=transformer, torch_dtype=torch.bfloat16
).to("cuda")
image = pipeline(
"A cat holding a sign that says hello world", width=1024, height=1024, num_inference_steps=4, guidance_scale=0
).images[0]
image.save("flux.1-schnell-int4.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 カーネルは同じ出力を共有します。データ移動のオーバーヘッドを削減するために、最初の2つと後の2つのカーネルを融合します。
モデルの説明
属性 |
詳情 |
開発元 |
MIT、NVIDIA、CMU、Princeton、UC Berkeley、SJTU、Pika Labs |
モデルタイプ |
INT W4A4モデル |
モデルサイズ |
6.64GB |
モデル解像度 |
ピクセル数は65,536の倍数である必要があります。 |
ライセンス |
Apache-2.0 |
🔧 技術詳細
SVDQuantは、4ビットの重みとアクティベーションに対する学習後量子化技術です。この技術は、視覚的な忠実度を維持しつつ、メモリ削減と高速化を実現します。具体的には、アクティベーションと重みの外れ値を処理し、低ランク成分と残差に分解することで量子化の難易度を軽減します。
📄 ライセンス
このモデルはApache-2.0ライセンスの下で提供されています。
制限事項
- このモデルは、アーキテクチャがsm_86 (Ampere: RTX 3090、A6000)、sm_89 (Ada: RTX 4090)、およびsm_80 (A100) のNVIDIA GPU上でのみ実行可能です。詳細はこのissueを参照してください。
- BF16モデルと比較して、細部に若干の違いが見られる場合があります。
引用
このモデルが有用であったり、あなたの研究に関連している場合、以下のように引用してください。
@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}
}