Инструменты25 июля 2026 г., 09:17 МСК🤖 Auto

Nunchaku Lite: 4-bit диффузия в Diffusers без компиляции

Hugging Face представил Nunchaku Lite — интеграцию 4-битного инференса SVDQuant в Diffusers. Теперь модели типа FLUX и Ernie работают на RTX 4090/5090 с расходом VRAM ~12 ГБ и ускорением на 30% без ручного написания CUDA-ядер.

Баннер новости 4363

Проблема памяти и решение SVDQuant

Загрузка современных текстовых моделей в точности BF16 требует 20–30 ГБ VRAM, что недоступно для большинства потребительских видеокарт. Стандартные бэкенды квантования (bitsandbytes, GGUF) используют только квантование весов (weight-only), что снижает память, но не ускоряет инференс. Nunchaku использует метод SVDQuant, применяя квантование до 4 бит как для весов, так и для активаций (W4A4). Это не только экономит память, но и ускоряет цикл денoising за счет специализированных CUDA-ядер.

Что такое Nunchaku Lite

Оригинальный Nunchaku требовал специфичных для архитектуры слиянных ядер (fused kernels), что усложняло поддержку новых моделей. Nunchaku Lite решает эту проблему, патчая стандартные модули nn.Linear в Diffusers во время выполнения. Пользователю достаточно вызвать from_pretrained() — локальная компиляция CUDA не требуется, ядра загружаются через пакет kernels с Hugging Face Hub.

Технические детали и поддержка железа

Интеграция использует два типа слоев для баланса между скоростью и точностью:

  • svdq_w4a4: 4-битные веса и активации с коррекцией SVDQuant. Используется для attention и MLP (основная нагрузка). Поддерживает форматы NVFP4 (для Blackwell) и INT4 (для Turing/Ampere/Ada).
  • awq_w4a16: 4-битные веса и 16-битные активации. Используется для слоев нормализации (например, adanorm в FLUX), где важна точность.
Схема Точность Поддерживаемые GPU
svdq_w4a4 NVFP4 Blackwell (RTX 50 series, RTX PRO 6000, B200)
svdq_w4a4 INT4 Turing / Ampere / Ada (RTX 30/40 series, A100, L40S)
awq_w4a16 INT4 (весы) / FP16 (активации) Turing / Ampere / Ada (RTX 30/40 series, A100, L40S)

Производительность и бенчмарки

На примере модели Ernie-Image-Turbo на GPU RTX 5090:

  • Потребление VRAM: ~12 ГБ (против ~24 ГБ в BF16).
  • Время генерации: ~1.7 секунды для изображения 1024x1024.
  • Ускорение: ~30% по сравнению с неоптимизированным бэкендом.

При использовании torch.compile ускорение возрастает до 1.8x. Дополнительное квантование текстового кодировщика (например, T5 или Qwen3) через bitsandbytes NF4 снижает пиковое потребление VRAM еще на 22%.

Как начать

Для работы требуется установка последних версий библиотек:

pip install -U diffusers transformers accelerate kernels bitsandbytes

Загрузка модели происходит стандартно:

from diffusers import ErnieImagePipeline
pipe = ErnieImagePipeline.from_pretrained(
    "lite-infer/ERNIE-Image-Turbo-nunchaku-lite-nvfp4_r32-bnb4-text-encoder",
    torch_dtype=torch.bfloat16
).to("cuda")

Это решение делает передовые диффузионные модели доступными на более широком спектре оборудования, сохраняя совместимость с существующими инструментами Diffusers, такими как LoRA и schedulers.

Источник: Hugging Face blog ↗