Почему ваш LLM задыхается, хотя GPU стоит бешеных денег?
Вы купили RTX 5090. Или, если вы серьезный энтузиаст, RTX PRO 6000. Запускаете Llama 3.1 70B, ждете ответа — а он ползет как черепаха. Знакомо? Дело не в битых тензорных ядрах. Проблема в том, что вы используете старые методы квантования, которые не умеют дружить с архитектурой Blackwell. NVIDIA втихую внедрила новый формат точности — NVFP4 (он же MXFP4), и это не просто очередной хайп. Это аппаратный люк, который удваивает производительность LLM на новом железе. Давайте разберемся, как он работает и почему без него вы оставляете половину производительности на столе.
NVFP4 vs FP16 vs INT4: что происходит под капотом
Большие языковые модели жрут память как не в себя. В FP16 модель 70B весит ~140 ГБ — не влезает даже в дорогой RTX PRO 6000 (96 ГБ). Квантование решает проблему: INT4 сжимает веса в 4 раза, но с дикой потерей точности. NVFP4 — это гибрид. Он использует 4-битное представление с плавающей точкой: 1 бит знака, 1 бит экспоненты, 2 бита мантиссы. Звучит как урезанный FP8? Да, но с твиком: для каждой группы параметров подбирается свой масштаб (microscaling).
В отличие от INT4, который просто отрубает дробную часть чисел, NVFP4 сохраняет порядок величин. Малые веса не зануляются, большие не схлопываются в потолок. На практике это дает perplexity всего на 2-5% хуже FP16 — против 15-30% у INT4.
Аппаратный ускоритель: тензорные ядра 5-го поколения
Blackwell — это не просто очередной чип. В нем стоят тензорные ядра пятого поколения, которые умеют выполнять операции над NVFP4 на аппаратном уровне. Без лишней возни с софтовыми эмуляциями. Это значит, что скорости матричных умножений (heart и soul любого LLM) взлетают в 2-2.5 раза по сравнению с INT4 на той же карте. Подробнее об этом мы писали в сравнении NVFP4 против INT4, там же графики и тесты.
Более того, NVFP4 отлично ложится на KV Cache. При контексте в 32К токенов кэш занимает ~8 ГБ вместо 32 ГБ в FP16. Это позволяет запускать модели с длинным контекстом без даунгрейда до смешных 4K токенов.
Как это выглядит в реальных бенчмарках
Цифры из тестов llama.cpp на RTX 5090 (эталонные замеры с нашего бенчмарка):
| Формат | Скорость (токенов/сек) | Размер модели (70B) | Perplexity (LAMBADA) |
|---|---|---|---|
| FP16 (база) | 12 | 140 ГБ (не влезает) | 3.25 |
| Q4_K_M (INT4) | 28 | ~40 ГБ | 3.85 |
| NVFP4 | 55 | ~35 ГБ | 3.32 |
NVFP4 почти догоняет FP16 по качеству, но быстрее в 4.5 раза. При этом модель помещается даже в 48 ГБ (RTX 6000 Ada). Конечно, показатели разнятся в зависимости от модели и контекста, но общая картина ясна: NVFP4 — это новый стандарт для инференса на Blackwell.
Как включить NVFP4 в llama.cpp: пошаговая инструкция без боли
Важно: NVFP4 — экспериментальная фича. Стабильной она станет только с релизом CUDA 13 (2027?), но уже сейчас можно получить драматический прирост. Вот как заставить всё работать.
- Обновите CUDA до 12.8 (требуется для тензорных ядер Blackwell).
- Соберите llama.cpp из мастер-ветки с флагом
LLAMA_CUDA_NVFP4=ON. Без него NVFP4 не активируется. Подробная инструкция — в нашей статье Запуск llama.cpp с поддержкой NVFP4. - Сконвертируйте модель в формат GGUF с типом NVFP4. Используйте
convert.pyс ключом--output-type f32? Нет, проще скачать уже готовый NVFP4 GGUF (например, от TheBloke). Или конвертнуть черезconvert-hf-to-gguf.pyс патчем для NVFP4. - Запустите с параметром
--type k(k-квантование не нужно!). Вместо этого используйте--model your_model_nvfp4.ggufи убедитесь, что в логах естьnvfp4.
Грабли: Не пытайтесь использовать NVFP4 на GPU серии Ada (RTX 4090) — там нет аппаратной поддержки, будет эмуляция через FP16, и скорость упадет. Также не работает с моделями, которые не поддерживают NVIDIA специфичные форматы (например, GPTQ).
Кому это реально нужно?
NVFP4 — не для всех. Если вы запускаете маленькие модели (7B-8B) на RTX 3060, разницы не заметите. Но если у вас:
- RTX 5090/5090 Ti и вы хотите запускать 70B-120B модели с комфортной скоростью;
- RTX PRO 6000 (96 ГБ) и цель — полная DeepSeek-V3.2 (671B в MoE);
- вы строите продакшн-сервис на vLLM или TensorRT-LLM и хотите снизить задержки в 2 раза;
...тогда NVFP4 — ваш выбор. Формат уже поддерживается в llama.cpp, vLLM (экспериментально) и TensorRT-LLM. Не хватает только Hugging Face Transformers — там пока тишина.
А что насчёт MXFP4 и других альтернатив?
В ранних статьях NVFP4 называли MXFP4. Это один и тот же формат, просто NVIDIA в итоге остановилась на бренде NVFP4. Не путайте с FP8 (8 бит) или NF4 (4-битный нормализованный float из QLoRA). NVFP4 — отдельная зверушка, заточенная под Blackwell. Единственная альтернатива среди 4-битных форматов с плавающей точкой — это FP4 E2M1 (экспериментальный), но он не имеет аппаратной поддержки.
Любопытно, что французы из Mistral уже выпустили Mistral-Small-4-119B в NVFP4 — и это работает восхитительно. Видимо, NVIDIA плотно работает с разработчиками моделей, чтобы формат получил широкое распространение.
Будущее: станет ли NVFP4 стандартом?
Сейчас это нишевая технология, но у нее все шансы стать стандартом де-факто для локального инференса на старших картах. Если NVIDIA выкатит поддержку NVFP4 в CUDA 13 с полным бэкендом для PyTorch, то мы увидим лавину оптимизированных моделей. А пока — только хардкор: ручная сборка, бета-версии, но зато 2x скорости бесплатно. Если у вас есть Blackwell — не ждите, пробуйте. Если нет — присмотритесь к RTX 5090: благодаря NVFP4 она становится королём локального LLM.