爆速!Nunchaku 4-bit推論でDiffusersモデルが爆速&省メモリに!

消費者GPUでも動く!Diffusersで4-bit推論が可能に
大規模な拡散トランスフォーマーは素晴らしい画像を生成しますが、最新のテキストから画像へのモデルをBF16精度で読み込むには、20~30GBのVRAMが必要となることが多く、ほとんどの消費者向けGPUでは手が届きませんでした。この問題を解決する強力な手段が量子化です。Diffusersはすでに、bitsandbytes、GGUF、torchao、Quantoといった複数の量子化バックエンドを統合しています。
これらのバックエンドのほとんどは「重みのみ」の量子化です。つまり、重みを低精度で保存し、計算時に高精度に戻すことで、メモリ使用量を大幅に削減します。しかし、通常は推論速度が向上することはなく、わずかな遅延が発生することもあります。
SVDQuantは、人気のNunchaku推論エンジンを支える量子化手法で、異なるアプローチを採用しています。主要なトランスフォーマー層を4ビットの重みとアクティベーション(W4A4)で実行することで、メモリを削減しながら、デノイズループの速度も向上させます。
NunchakuがDiffusersに統合!手軽に高速化を体験
これまで、Nunchakuのチェックポイントを使用するには別途推論ライブラリが必要でした。しかし、現在のDiffusersでは、from_pretrained()を呼び出すだけでNunchakuのチェックポイントを読み込めるようになりました。Hugging Faceのkernelsパッケージのおかげで、ローカルでのCUDAコンパイルも不要です。
さらに、付属のdiffuse-compressorツールキットを使えば、新しいアーキテクチャを自分で量子化し、通常のDiffusersリポジトリとして公開することも可能です。
具体例:ErnieImagePipelineをNunchaku Liteで動かす
Nunchaku Liteを使って、ErnieImagePipelineを高速かつ省メモリで動かす具体的なコードを見てみましょう。特別なパイプラインクラスや推論エンジンは不要で、ローカルでのコンパイルも一切必要ありません。
まず、必要なパッケージをインストールします。
pip install -U diffusers transformers accelerate kernels bitsandbytes
次に、事前に量子化されたパイプラインを他のDiffusersモデルと同様に読み込みます。
import torch
from diffusers import ErnieImagePipeline
pipe = ErnieImagePipeline.from_pretrained(
"lite-infer/ERNIE-Image-Turbo-nunchaku-lite-nvfp4_r32-bnb4-text-encoder

