Зачем нужна эта махинация?
Представьте, что вы нашли в интернете модель, которая объединяет две самые модные архитектуры 2026 года: Mamba (с ее линейной сложностью) и MoE (Mixture of Experts, с ее экономией памяти). Это Nemotron-Cascade-2 30B. Вы скачиваете ее, сгорая от нетерпения, пытаетесь запустить на своей RTX 3090... и получаете CUDA out of memory на первом же токене. Знакомая история?
Проблема в том, что 30 миллиардов параметров в FP16 — это примерно 60 ГБ. Ваши 24 ГБ VRAM — просто детская песочница. Стандартный выход — квантизация в GGUF и запуск через llama.cpp. Но тогда вы теряете главные козыри модели: скорость инференса и поддержку длинного контекста. Особенно, если вам нужны те самые 256 тысяч токенов, которые она обещает.
На 28 марта 2026 года Nemotron-Cascade-2 30B остается одной из немногих гибридных моделей с открытыми весами, сочетающих Mamba-2 и MoE. Это не просто очередной finetune Llama. Это архитектурный эксперимент, который на практике показывает, как можно обрабатывать длинные документы без квадратичного взрыва внимания.
Почему vLLM и FP8, а не старый добрый GGUF?
Потому что скорость. Llama.cpp с GGUF — это как ехать на тракторе. Надежно, но медленно. VLLM — это спорткар. Он использует PagedAttention и оптимизированное ядро для квантованных моделей. А FP8 для кэша ключей и значений (KV cache) — это секретное оружие для длинного контекста.
Смотрите математику. Для контекста в 256K токенов кэш KV в FP16 съест гигабайты. В FP8 — вдвое меньше. На RTX 3090 с ее 24 ГБ это разница между жизнью и смертью. При этом потери в точности минимальны — модели NVIDIA третьего поколения (к которым относится Nemotron-Cascade) обучены с учетом низкоточных форматов.
--kv-cache-dtype fp8. Это не хака, а официальная фича.Что нужно подготовить
Железо: RTX 3090 с 24 ГБ VRAM. Системная память: минимум 32 ГБ DDR4/5 (лучше 64). Процессор не так важен, но ядро Linux 6.10+ даст преимущество в драйверах NVIDIA (версия 560.xx на март 2026).
Софт:
- Python 3.11 или 3.12 (на 3.13 могут быть проблемы, проверяйте).
- CUDA Toolkit 12.6 (совместим с драйверами 560).
- vLLM версии 0.5.3 или новее (именно в ней починили баг с MoE бэкендом для Mamba).
- Модель в формате AWQ:
stelterlab/Nemotron-Cascade-2-30B-AWQ-4bit. Не берите сырые веса — квантизация на лету съест всю память.
1 Устанавливаем vLLM с поддержкой MoE и FP8
Не используйте pip install vllm. Соберите из исходников с нужными флагами, иначе MoE-слои могут не заработать.
# Клонируем репозиторий
git clone https://github.com/vllm-project/vllm.git
cd vllm
# Переключаемся на стабильную ветку (на 28.03.2026 это v0.5.3)
git checkout v0.5.3
# Устанавливаем с поддержкой MoE и CUDA 12.6
pip install -e . --extra-index-url https://download.pytorch.org/whl/cu126
# Проверяем, что собралось с поддержкой MoE
python -c "from vllm.model_executor.models import mamba; print('Mamba support OK')"
Если вылезет ошибка про mamba_ssm, установите этот пакет отдельно: pip install mamba-ssm. Убедитесь, что версия совместима с вашим CUDA.
2 Скачиваем и проверяем модель
Используем модель в формате AWQ 4-bit. Она уже оптимизирована для vLLM и занимает около 16 ГБ.
# Скачиваем через huggingface-hub
pip install huggingface-hub
huggingface-cli download stelterlab/Nemotron-Cascade-2-30B-AWQ-4bit --local-dir ./nemotron-cascade-2-30b-awq
Проверьте структуру папки. Должны быть файлы model.safetensors, config.json и quantization_config.json. Если нет последнего — что-то пошло не так.
3 Запускаем сервер vLLM с ключевыми настройками
Вот команда, которая запустит модель с FP8 кэшем и поддержкой длинного контекста.
python -m vllm.entrypoints.openai.api_server \
--model ./nemotron-cascade-2-30b-awq \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.95 \
--max-model-len 262144 \
--kv-cache-dtype fp8 \
--enforce-eager \
--moe-backend marlin \
--port 8000
Разберем каждый флаг:
--tensor-parallel-size 1: одна карта, без распараллеливания.--gpu-memory-utilization 0.95: использовать 95% VRAM, оставив место для системы.--max-model-len 262144: максимум 256K токенов (реально 262144).--kv-cache-dtype fp8: волшебный флаг, который включает FP8 для кэша. Без него контекст в 256K не влезет.--enforce-eager: отключает графовые оптимизации PyTorch для стабильности с MoE.--moe-backend marlin: использует оптимизированный бэкенд для MoE-слоев (добавлен в vLLM 0.5.2).
Сервер запустится и будет слушать порт 8000. Первый запуск займет минуту-две — модель компилируется.
4 Тестируем скорость и логику
Отправляем запрос через curl или Python. Вот простой тест на понимание длинного контекста.
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "./nemotron-cascade-2-30b-awq",
"prompt": "Вы будете действовать как эксперт по квантовым вычислениям. Объясните простыми словами принцип квантовой телепортации. Ответ должен быть не длиннее 100 слов.",
"max_tokens": 150,
"temperature": 0.3
}'
А теперь тест на длинный контекст. Создайте файл с текстом (например, глава из «Войны и мира») и отправьте его. Но сначала проверьте потребление памяти.
# Мониторим VRAM
nvidia-smi --query-gpu=memory.used --format=csv -l 1
Сравнение с альтернативами: GGUF vs vLLM+AWQ
| Метод | Скорость (токенов/с) | Макс. контекст на RTX 3090 | Качество |
|---|---|---|---|
| GGUF Q4_K_M + llama.cpp | 12-15 | ~64K (с оффлоадингом) | Хорошее, но теряется в сложных задачах |
| vLLM + AWQ + FP8 кэш | 45-60 | 256K (стабильно) | Близко к оригиналу, особенно в логике |
Почему такая разница? Llama.cpp тратит время на переключение между CPU и GPU, особенно с длинным контекстом. VLLM держит все в VRAM, используя FP8 кэш. И да, MoE-слои в llama.cpp обрабатываются не так эффективно (на март 2026 года).
Где можно споткнуться: частые ошибки и фиксы
- Ошибка: "FP8 not supported for this model". Убедитесь, что используете vLLM 0.5.2+. Проверьте
config.jsonмодели: там должна быть строка"quantization": "awq". - Ошибка: "Mamba kernel not found". Пересоберите vLLm с флагом
VLLM_BUILD_MAMBA=1или установитеmamba-ssmвручную. - Сервер падает при длинном контексте. Уменьшите
--gpu-memory-utilizationдо 0.85. Убедитесь, что в системе включен swap (хотя бы 32 ГБ). - Модель генерирует бессмыслицу. Возможно, скачалась битая квантизация. Проверьте хеши файлов. Или попробуйте другую версию AWQ, например, от сообщества на Hugging Face (партнерская ссылка).
Как проверить, что модель действительно умная
Не доверяйте бенчмаркам. Задайте ей каскадные вопросы. Например:
prompt = """
Шаг 1: Решите уравнение: 2x + 5 = 13.
Шаг 2: Используя найденный x, вычислите значение выражения x² - 4.
Шаг 3: Если результат шага 2 положительный, напишите 'Плюс', иначе 'Минус'.
Ответ дайте строго в формате: 'Шаг1: ... Шаг2: ... Шаг3: ...'.
"""
Nemotron-Cascade-2 с архитектурой Mamba должна хорошо справляться с такими последовательными рассуждениями. Если она путает шаги — что-то не так с загрузкой весов.
А что насчет Nvidia NIM или TensorRT-LLM?
NIM (Nvidia Inference Microservice) — проприетарное решение. Оно быстрее, но требует лицензии и не поддерживает все open-source модели на март 2026. TensorRT-LLM сложно настраивать для гибридных архитектур. VLLM — золотая середина: open-source, быстро развивается и уже обогнал по удобству многие аналоги.
Если вы хотите еще больше скорости, посмотрите статью про AdaLLM и кастомные ядра. Но для RTX 3090 vLLM с FP8 — оптимальный выбор.
Итог: что вы получите
Рабочую Nemotron-Cascade-2 30B на RTX 3090 со скоростью ~50 токенов в секунде на коротких промптах и поддержкой контекста до 256K. Модель будет использовать около 22 ГБ VRAM при полной загрузке, оставляя немного места для системы.
Этот подход обгоняет традиционные методы в 3-4 раза по скорости и в 4 раза по максимальному контексту. И да, вы сможете подавать ей целые технические мануалы или длинные переписки, не теряя нити.
--tensor-parallel-size 2. Но учтите, что для MoE-моделей это не всегда дает линейный прирост. Подробности в статье про NVLink для двух RTX 3090.Ответы на вопросы, которые вы еще не успели задать
Можно ли использовать FP8 для весов модели, а не только для кэша?
На март 2026 года vLLM не поддерживает FP8 для весов AWQ-моделей. Только для KV cache. Для весов используется 4-bit AWQ. Но в будущем обещают полную поддержку FP8 (как в Trion-3).
Почему именно AWQ, а не GPTQ?
AWQ (Activation-aware Weight Quantization) лучше сохраняет точность для моделей с активациями, которые имеют большие выбросы. Для Mamba и MoE это критично. GPTQ может дать небольшой выигрыш в скорости, но чаще ломает логику модели.
Хватит ли этого для production?
Для одного пользователя — да. Для десятков параллельных запросов — нет. RTX 3090 не справится. Но вы можете использовать этот гайд как базовый конфиг для более мощных систем. Например, для кластера из нескольких карт, как в статье про mixed-vendor кластер.
Модель умеет в Russian?
Да, но не идеально. Nemotron-Cascade-2 обучалась на мультиязычных данных, включая русский. Для задач на понимание и генерацию русского текста показывает результаты выше среднего, но может путаться в сложных грамматических конструкциях. Для чистого русского лучше поискать специализированные модели.
Последний совет: не зацикливайтесь на одной модели. Архитектуры меняются каждый месяц. Но принцип — vLLM + FP8 кэш + правильное квантование — будет актуален еще как минимум год.