🚀 svdq-int4-flux.1-canny-dev
svdq-int4-flux.1-canny-dev
は、FLUX.1-Canny-dev
のINT4量子化バージョンです。このモデルは、与えられたテキスト記述に基づき、入力画像のキャニーエッジに沿って画像を生成することができます。元のBF16モデルと比較して、約4倍のメモリ節約が可能で、2 - 3倍高速に動作します。

✨ 主な機能
- テキスト記述に基づき、入力画像のキャニーエッジに沿って画像を生成することができます。
- INT4量子化により、メモリ使用量を削減し、推論速度を向上させます。
📦 インストール
環境設定
mit-han-lab/nunchaku の指示に従って環境を設定し、ControlNetの依存関係をインストールします。
pip install git+https://github.com/asomoza/image_gen_aux.git
pip install controlnet_aux mediapipe
💻 使用例
基本的な使用法
import torch
from controlnet_aux import CannyDetector
from diffusers import FluxControlPipeline
from diffusers.utils import load_image
from nunchaku.models.transformer_flux import NunchakuFluxTransformer2dModel
transformer = NunchakuFluxTransformer2dModel.from_pretrained("mit-han-lab/svdq-int4-flux.1-canny-dev")
pipe = FluxControlPipeline.from_pretrained(
"black-forest-labs/FLUX.1-Canny-dev", transformer=transformer, torch_dtype=torch.bfloat16
).to("cuda")
prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")
processor = CannyDetector()
control_image = processor(
control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024
)
image = pipe(
prompt=prompt, control_image=control_image, height=1024, width=1024, num_inference_steps=50, guidance_scale=30.0
).images[0]
image.save("flux.1-canny-dev.png")
📚 ドキュメント
モデル情報
属性 |
詳情 |
開発元 |
MIT、NVIDIA、CMU、Princeton、UC Berkeley、SJTU、Pika Labs |
モデルタイプ |
INT W4A4モデル |
モデルサイズ |
6.64GB |
モデル解像度 |
ピクセル数は65,536の倍数である必要があります。 |
ライセンス |
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}
}
🔧 技術詳細
量子化手法 -- 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つのカーネルを融合します。
📄 ライセンス
このモデルは flux-1-dev-non-commercial-license
ライセンスの下で提供されています。