🚀 低秩量化模型 svdq-int4-flux.1-canny-dev
svdq-int4-flux.1-canny-dev
是一个图像生成模型,它是对 FLUX.1-Canny-dev
进行 INT4 量化后的版本。该模型可以根据文本描述生成图像,同时遵循输入图像的 Canny 边缘信息。与原始的 BF16 模型相比,它能节省约 4 倍的内存,并且推理速度快 2 - 3 倍。

✨ 主要特性
- 基于低秩量化技术,在保持模型性能的同时,显著减少内存占用和推理时间。
- 能够根据文本描述和输入图像的 Canny 边缘信息生成高质量的图像。
- 支持多种图像生成任务,如文本到图像、图像到图像、深度到图像等。
📦 安装指南
请按照 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")
Comfy UI
开发中,敬请期待!
📚 详细文档
模型信息
属性 |
详情 |
开发团队 |
MIT、NVIDIA、CMU、Princeton、UC Berkeley、SJTU 和 Pika Labs |
模型类型 |
INT W4A4 模型 |
模型大小 |
6.64GB |
模型分辨率 |
像素数量需为 65,536 的倍数 |
许可证 |
Apache-2.0 |
基础模型 |
black-forest-labs/FLUX.1-Canny-dev |
基础模型关系 |
量化版本 |
数据集 |
mit-han-lab/svdquant-datasets |
库名称 |
diffusers |
量化方法 -- SVDQuant
SVDQuant 概述:
- 阶段 1:最初,激活值 X 和权重 W 都包含离群值,这使得 4 位量化变得困难。
- 阶段 2:将离群值从激活值迁移到权重,得到更新后的激活值和权重。此时,激活值更易于量化,而权重的量化难度增加。
- 阶段 3:SVDQuant 进一步使用奇异值分解(SVD)将权重分解为低秩分量和残差。这样,低秩分支以 16 位精度运行,从而减轻了量化难度。
Nunchaku 引擎设计

- (a)由于在 Down Projection 中额外读取 16 位输入以及在 Up Projection 中额外写入 16 位输出,简单地以秩 32 运行低秩分支会引入 57% 的延迟开销。Nunchaku 通过内核融合优化了这一开销。
- (b)Down Projection 和 Quantize 内核使用相同的输入,而 Up Projection 和 4-Bit Compute 内核共享相同的输出。为了减少数据移动开销,将前两个内核和后两个内核分别融合在一起。
🔧 技术细节
- 模型量化:使用 SVDQuant 方法对
FLUX.1-Canny-dev
模型进行 INT4 量化,通过将离群值迁移和低秩分解来减轻量化难度。
- 推理引擎:采用 Nunchaku 推理引擎,通过内核融合优化低秩分支的运行,减少延迟开销。
📄 许可证
本模型使用 flux-1-dev-non-commercial-license
许可证。
限制
- 该模型仅可在具有 sm_86(安培架构:RTX 3090、A6000)、sm_89(Ada 架构:RTX 4090)和 sm_80(A100)架构的 NVIDIA GPU 上运行。更多详情请参阅此 问题。
- 与 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}
}