4-битный Nunchaku теперь грузится в Diffusers как обычный пайплайн

Квантизация только весов в bitsandbytes или GGUF снимает часть VRAM, но денойзинг обычно не ускоряется — иногда даже чуть тормозит. SVDQuant в Nunchaku считает и веса, и активации в 4 бита (W4A4), и Hugging Face встроила этот путь в Diffusers как Nunchaku Lite — без отдельного inference-движка и локальной сборки CUDA.
Загрузка как обычный пайплайн
Чекпоинт подхватывается через from_pretrained(), ядра скачиваются с Hub пакетом kernels. Кастомный pipeline не нужен. Репозиторий — обычный Diffusers: в config.json трансформера лежит блок quantization_config с методом nunchaku_lite, schedulers, LoRA и torch.compile работают как с плотной моделью.
Два типа слоёв
Перед загрузкой весов Nunchaku Lite подменяет нужные nn.Linear на рантайм-слои:
- svdq_w4a4 — 4-битные веса и активации с низкоранговой поправкой SVDQuant для attention и MLP;
- awq_w4a16 — 4-битные веса и 16-битные активации для нормализации и модуляции (FLUX adanorm, Qwen-Image).
Без архитектурных fused-ядер оригинального Nunchaku ускорение скромнее — около 30%, зато VRAM падает на том же уровне.
Бенчмарки и железо
На RTX PRO 6000 при 1024×1024 BF16-базовая линия даёт 3,00 с и 31,1 ГБ пиковой VRAM. Nunchaku Lite NVFP4 — 2,27 с и 20,6 ГБ, ускорение 1,35×.
С torch.compile на трансформере пайплайн уходит до 1,68 с — 1,8× к базе. На RTX 5090 готовый ERNIE-Image-Turbo выдаёт 1024×1024 за 1,7 с при 12 ГБ вместо 24 ГБ у BF16. NVFP4 требует Blackwell (RTX 50, RTX PRO 6000, B200); для RTX 30/40 и A100 — INT4-варианты.
Свой чекпоинт
Тулкит diffuse-compressor проводит калибровку, квантизацию и упаковку в репозиторий Diffusers. На примере FLUX.2 Klein 4B сканер находит 100 SVDQ-целей и 3 AWQ-цели — результат публикуется на Hub как обычный пайплайн.
Источник: Bringing Nunchaku 4-bit Diffusion Inference to Diffusers.