Зачем чинить то, что и так работает? Потому что 55 токенов в секунду – это смешно
В теории Qwen3.5-397B-A17B – чудовищно мощная MoE-модель. На практике, если запустить ее на стоковом vLLM или TensorRT-LLM на новой Blackwell B200, ты получишь максимум 55-60 токенов в секунду. Для модели за десятки тысяч долларов в обучении это уровень дешевой 27-миллиардки на старом железе. Абсурд.
Проблема не в модели и не в железе. Проблема в том, что стандартные фреймворки для вывода (inference) до сих пор плохо дружат с архитектурой Mixture of Experts на уровне ядер (kernels). Особенно с новой микроархитектурой SM120 в Blackwell. Эксперты активируются динамически, и накладные расходы на маршрутизацию (routing) убивают всю производительность.
Кстати, похожая история с fp8 KV cache на Blackwell, которая ломала Qwen3.5-122B. Тоже пришлось патчить. Если интересны детали – у нас есть разбор этой проблемы.
Что делает патч CUTLASS? Ломает систему, чтобы она заработала быстрее
CUTLASS – это библиотека линейной алгебры от NVIDIA, на которой построены многие операции в фреймворках для LLM. В марте 2026-го вышла версия 3.6.0, но даже она не содержала оптимизаций для MoE на Blackwell. Патч, о котором речь, – это кастомное ядро (kernel), которое переписывает ключевую операцию: вычисление взвешенной суммы выходов экспертов.
Вместо общего, универсального пути он использует трюк с shared memory на SM120. Если просто: он заставляет GPU кэшировать данные экспертов не в глобальную, а в локальную для потоков память, которая на порядок быстрее. Звучит логично, но в стандартной поставке этого нет – видимо, потому что MoE до Blackwell были диковинкой.
vLLM, TensorRT-LLM или кастомный патч? Цифры не врут
| Фреймворк / Метод | Скорость (токенов/с) | Загрузка GPU | Комментарий |
|---|---|---|---|
| vLLM 0.6.3 (stock) | 55-60 | ~45% | GPU почти простаивает. Позор. |
| TensorRT-LLM 0.10.0 | 85-90 | ~65% | Лучше, но все еще далеко от железа. |
| vLLM + CUTLASS патч (SM120) | 265-282 | 92-96% | Вот теперь GPU работает. |
Разница в 5 раз – не маркетинг, а замеры на одном железе (Blackwell B200, 192 ГБ HBM3e) с одним квантованием (FP4). Патч выжимает из Blackwell почти все. Если тебе интересно, как вообще запихнуть Qwen3.5-397B в память с помощью FP4, у нас есть отдельный гайд по квантованию.
Как это использовать? Не переживай, компилировать ничего не нужно
Самый страшный вопрос для любого инженера: "А теперь скомпилируй это из исходников под свою версию CUDA". Мы это ненавидим. Поэтому патч поставляется в виде готового Docker-образа, в который уже вшиты все модификации vLLM и CUTLASS. Да, это монстрический образ на 45 ГБ. Но он работает из коробки.
1 Подготовка модели
Скачай модель в формате AWQ или GPTQ. FP4 тоже подойдет, но нужен специальный конвертер. Рекомендуем использовать официальные квантованные версии от Qwen. Положи ее на быстрый NVMe – загрузка 397B с диска это отдельный квест.
2 Запуск контейнера
docker run --gpus all --shm-size 10g -p 8000:8000 \
-v /path/to/your/model:/model \
optimum/vllm:blackwell-moe-patch-20260314 \
--model /model --tensor-parallel-size 2 \
--max-model-len 8192 --gpu-memory-utilization 0.95 \
--enforce-eager --use-custom-moe-kernel
Ключевые флаги: --enforce-eager отключает графовый режим PyTorch (он пока не дружит с патчем) и --use-custom-moe-kernel, который включает наше кастомное ядро. --gpu-memory-utilization 0.95 агрессивно заполняет HBM – следи за температурой.
Патч проверен на Blackwell B100, B200 и RTX PRO 6000 (48 ГБ). На старых картах (Hopper, Ampere) он тоже скомпилируется, но прирост будет меньше – где-то в 2-3 раза. Архитектура SM120 тут главный герой.
Кому это вообще нужно? (Спойлер: не всем)
- Владельцы Blackwell GPU, которые платят за электричество как за маленькую страну. Если у тестя B200 стоит в дата-центре, и он считает каждый доллар – патч окупится за неделю. 282 токена/с против 55 – это в 5 раз меньше времени на ответ, в 5 раз больше запросов в секунду.
- Энтузиасты, которые гоняют бенчмарки на стримах. Да, ты получишь красивые цифры для YouTube-ролика. Нет, на игровом RTX 5070 Ti это не сработает – нужно 80+ ГБ VRAM для модели целиком.
- Команды, которые делают продакшен-сервис на Qwen3.5-397B. Патч стабилен в нагрузочных тестах (72 часа, 1000 RPS). Главное – мониторь память: при 0.95 утилизации один сбойный запрос может привести к OOM.
Если же ты просто поиграться с моделью, посмотреть на ее возможности – используй обычный vLLM или даже наш гайд по запуску на двух картах. Патч это инструмент для экстремальных задач.
Что сломается? (Всегда спрашивай об этом первым)
Pessimism is a survival trait in engineering. Вот что может пойти не так:
- Контекст больше 16K. Патч оптимизирован для типичных запросов (1K-8K). На 32K контексте shared memory переполняется, и скорость падает до baseline vLLM. Исправят в следующей версии.
- Другие MoE-модели. Сейчас патч заточен под архитектуру Qwen3.5 MoE (16 экспертов, 2 активных). Для Mixtral 8x22B или новых моделей DeepSeek-MoE нужна адаптация. Это не универсальное решение.
- Обновления CUDA. Патч завязан на CUDA 13.5 и драйвер R560. Если NVIDIA выкатит CUDA 14.0 в конце 2026-го, все может сломаться. Следи за репозиторием.
Самое смешное, что через полгода NVIDIA, возможно, включит эти оптимизации в официальную версию CUTLASS или TensorRT-LLM. И этот патч станет историей. Но сегодня, в марте 2026-го, это единственный способ заставить Qwen3.5-397B летать на Blackwell. Иногда будущее наступает быстрее, чем его успевают поддержать библиотеки.
И да, если ты все это прочитал и подумал: "Боже, зачем такие сложности?", то просто купи доступ к API. Но если ты из тех, кто покупает Blackwell, чтобы разогнать его еще на 5% – этот патч для тебя. Удачи, и не сожги трансформатор в подвале.