Купили RTX 5090 или RTX Pro 6000 (Blackwell), скачали свежую NVFP4-версию Qwen3.5 397B, запустили через vLLM и... получили на выходе идеальный словесный салат? Поздравляю, вы столкнулись с классической проблемой сломанных ядер CUTLASS на новой архитектуре SM120. Хорошая новость: фикс проще, чем кажется. Плохая: об этом почти нигде не пишут.
На 08.03.2026 проблема актуальна для vLLM версий 0.5.0–0.5.3 при использовании NVFP4-квантованных Mixture of Experts моделей на графических процессорах Blackwell. Стандартный бэкенд CUTLASS выдает некорректные вычисления для FP4 формата в экспертных слоях.
Почему ваша дорогая видеокарта генерирует мусор?
Корень зла — в оптимизированных ядрах CUTLASS (NVIDIA's CUDA Templates for Linear Algebra Subroutines). Они не были должным образом адаптированы для комбинации FP4-квантования и sparse MoE-архитектуры на новых SM120 блоках Blackwell. В теории vLLM автоматически выбирает лучший бэкенд. На практике для вашего кейса он выбирает сломанный.
Решение? Принудительно переключить бэкенд для MoE-слоев с CUTLASS на Marlin. Это специализированное ядро для 4-битных весов, которое в vLLM 0.5.3 стабильно работает с NVFP4.
Пошаговый фикс: от ошибки к работающей модели
Забудьте про полную переустановку CUDA или откат драйверов. Все решается одним флагом в командной строке.
1 Проверка окружения (08.03.2026)
Убедитесь, что у вас стоит актуальное ПО. На момент написания это критично.
- GPU: NVIDIA RTX 5090 или RTX Pro 6000 (архитектура Blackwell, SM120).
- Драйвер NVIDIA: версия 560.xx или новее.
- CUDA Toolkit: 12.5 или 12.6.
- Python: 3.10–3.12.
- vLLM: версия 0.5.3. Установите или обновите:
pip install vllm==0.5.3. Более ранние версии могут не иметь полноценной поддержки Marlin для NVFP4.
2 Магический флаг: --moe-backend marlin
Вот как выглядит рабочая команда запуска для модели Qwen3.5 397B в NVFP4 на двух GPU (Tensor Parallelism).
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen3.5-397B-Instruct-NVFP4 \
--tensor-parallel-size 2 \
--moe-backend marlin \
--served-model-name qwen-397b \
--api-key your-key \
--port 8000
Ключевой параметр здесь — --moe-backend marlin. Он заставляет vLLM использовать ядра Marlin для обработки экспертных слоев. Без этого флага используется дефолтный (и сломанный для вашего железа) бэкенд.
Флаг --tensor-parallel-size должен соответствовать количеству физических GPU. Для RTX 5090 (24 ГБ) потребуется минимум 2 карты для модели 397B. Если у вас 3 или 4 карты, как в сборках на Threadripper, укажите соответствующее число.
3 Что делать, если Marlin не сработал?
Такое бывает, если модель использует нестандартную конфигурацию экспертов. Тогда можно попробовать fallback-опцию:
--moe-backend "marlin,cutlass"
Это предпишет vLLM сначала пробовать Marlin, а в случае ошибки — откатываться на CUTLASS (но тогда возможен мусор на выходе). Альтернатива — использовать кастомные ядра AdaLLM, но для Blackwell их нужно пересобирать.
Сравнение с альтернативами: почему не llama.cpp или LM Studio?
Вы могли слышать, что для MoE-моделей советуют llama.cpp. Но для NVFP4 это пока не вариант. На 08.03.2026 llama.cpp имеет экспериментальную поддержку FP4, но не оптимизирована для MoE на Blackwell. LM Studio еще медленнее из-за накладных расходов.
| Инструмент | Поддержка NVFP4 MoE | Скорость на Blackwell | Сложность настройки |
|---|---|---|---|
| vLLM с --moe-backend marlin | ✅ Полная (v0.5.3+) | Высокая | Низкая |
| llama.cpp | ⚠️ Экспериментальная | Средняя | Высокая |
| Hugging Face Transformers | ❌ Нет | Низкая | Средняя |
| TensorRT-LLM | ✅ Есть | Очень высокая | Очень высокая |
TensorRT-LLM быстрее, но его настройка — это отдельный квест на несколько часов. vLLM с флагом marlin — золотая середина.
Кому этот фикс критически необходим?
- Владельцам RTX 5090/Pro 6000, которые хотят запускать модели типа Qwen3.5 397B, DeepSeek-V3 или Mixtral 2 47B в NVFP4. Без фикса вы просто сожжете электричество.
- Разработчикам, тестирующим большие MoE на Blackwell. Это ваш bypass для бага в CUTLASS.
- Энтузиастам с многопроцессорными стендами, где каждая карта — Blackwell. Если собрали систему для 120GB VRAM, этот флаг разблокирует ее потенциал для самых тяжелых моделей.
Если же у вас старая карта (например, RTX 4090) или вы запускаете небольшие MoE-модели вроде Granite 4 Small, проблема может не проявляться. Вам повезло.
Что в будущем? Прогноз на 2026-2027
NVIDIA уже знает о баге. В следующих драйверах (после 560.xx) или в vLLM 0.6.0 дефолтный бэкенд CUTLASS, скорее всего, починят. Но до тех пор --moe-backend marlin — ваш мантра.
Совет на перспективу: когда будете обновлять vLLM, всегда проверяйте, не сломался ли снова бэкенд для MoE. История с оверфлоу VRAM на RTX 5070 Ti учит, что новые архитектуры и софт — всегда лотерея.
А пока — запускайте. Только не забудьте про охлаждение: Blackwell греется нешуточно.