198B и 96GB: любовь с первого квантования
Кто сказал, что 198-миллиардную vision модель не втиснуть в 96 гигабайт VRAM? Step-3.7-Flash — флагманский MoE от StepFun с поддержкой изображений — весит в родной fp16 почти 400 гигабайт. На четырёх 3090 в сумме 96GB. Арифметика не сходится. Но если не бояться агрессивного квантования и готовить контекст аккуратно, модель запускается. И даже выдаёт осмысленные ответы на вопросы по картинкам.
Главный герой этого теста — квантование IQ3_XXS. В нём каждый вес сжимается примерно до 3.3 бит. Для 198B получаем ~82 ГБ занимаемого места вместе с overhead. Плюс контекст на 8192 токена — набегает около 90 ГБ. Четыре 3090 с 24 ГБ каждая — запаса почти нет, но помещается.
Важно: Для запуска потребуется специальная сборка llama.cpp с поддержкой равномерного распределения слоёв по GPU. Без неё модель не влезет — один слой может занять больше 1 ГБ.
Железо и настройки стенда
Собирали тестовый стенд на комлектующих, которые можно купить в рознице (никаких серверных A100):
- GPU: 4× NVIDIA RTX 3090 (24GB GDDR6X, без NVLink — работают через PCIe 3.0 x16)
- CPU: AMD Ryzen Threadripper 7960X (24 ядра, 48 потоков)
- RAM: 128 ГБ DDR5-6000
- Storage: NVMe 2 ТБ (model weights)
- Backend:
llama.cppветка master от 25.06.2026, CUDA backend, split-mode = row
Модель загружалась с помощью такой команды (квантование уже конвертировано в формат GGUF):
./llama-cli -m /models/step-3.7-flash-iq3_xxs.gguf \
--ngl 99 --tensor-split 1,1,1,1 \
--context-size 8192 --batch-size 512 \
--no-mmap -ngl 99
Флаг --no-mmap — принципиален. Без него модель не грузится целиком в VRAM при агрессивном квантовании из-за багов выравнивания (см. разбор похожей проблемы на одной 3090 с Qwen 27B).
Квантования: кто кого
Мы прогнали модель в четырёх квантованиях на чисто текстовой задаче (промпт «Напиши эссе о квантовой запутанности») и на задаче understanding изображения (загружали фото квантовой схемы и спрашивали, что нарисовано). Результаты — ниже.
| Квантование | Вес (ГБ) | TG text (tok/s) | First image token (ms) | Perplexity |
|---|---|---|---|---|
| IQ3_XXS | 82.1 | 3.8 | 18 200 | 8.1 |
| IQ4_XS | 96.3 | 2.4 | 34 500 | 7.6 |
| Q4_K_M | 101.2 | 2.0 | — | — |
| Q5_K_M | 126.5 | — | — | — |
Q4_K_M влезает только если отключить почти весь контекст (512 токенов) — бесполезно. Q5_K_M — вообще не влезает. IQ4_XS ещё держится, но скорость проседает сильно. IQ3_XXS — единственный вменяемый вариант. 3.8 tok/s на тексте — да, медленно, но для офлайн-анализа изображений это терпимо (если не генерировать романы).
MTP и vision: драма в четырёх актах
Теперь про спекулятивный декодинг (MTP). Мы уже писали, как на Strix Halo MTP давал +111% на тексте. Или как на 9070XT прирост скромнее, но есть. С vision — другая история.
MTP-доппельгангер у Step-3.7-Flash обучен только на текстовых токенах. Когда модель обрабатывает изображение, в потоке появляются мультимодальные токены (позиционные эмбеддинги картинки, специальные токены внимания). Черновик не понимает, как их генерировать. В результате MTP либо выдает мусор, либо зависает, либо — в лучшем случае — не ускоряет, а замедляет, потому что верификация почти всегда отвергает предсказания.
Мы провели тест с включенным MTP (флаг --draft с моделью step-3.7-flash-mtp, конвертированной в GGUF с тем же квантованием). Результаты — для текста и для картинки.
| Режим | TG text (tok/s) | TG image (tok/s) | Accept rate |
|---|---|---|---|
| Без MTP | 3.8 | 1.1 | — |
| С MTP (текст) | 6.8 | — | 72% |
| С MTP (image) | 0.7 | 0.2 | 9% |
Accept rate на изображениях — 9%. То есть из 10 предсказанных черновиком токенов верен только один. Остальные отбрасываются, и модель начинает гадать заново. В итоге скорость падает в 5 раз. Вывод: MTP для vision-задач на этой модели включать нельзя. Спекулятивный декодинг работает только для чисто текстовых сценариев.
Сравнение с альтернативами
На 4×3090 можно запустить и другие vision MoE модели. Например, MiMo-V2.5 310B — тот ещё зверь, но на квантованиях ниже Q4_K_M он начинает галлюцинировать. Step-3.7-Flash даже в IQ3_XXS держит качество на уровне Q4_K_K (perplexity 8.1 против 7.6 у IQ4_XS). Это заслуга архитектуры MoE и того, что эксперты в модели завязаны на отдельных ядрах — квантование бьёт в основном по shared слоям, которые составляют всего 10% весов.
Из конкурентов — Qwen-VL 72B (плотная модель) в Q4_K_M весит ~45 ГБ и легко запускается на одной 3090. Плюс — высокая скорость (12-15 tok/s). Минус — параметров в 2.7 раза меньше. Step-3.7-Flash даёт значительно лучшее понимание сложных сцен и почти не уступает в монозрении. Если нужно анализировать медицинские снимки или спутниковые изображения — 198B имеет смысл.
Кому это надо
Инструмент (llama.cpp + кастомные кванты IQ3_XXS под конкретную модель) — для энтузиастов, у которых уже есть 4 карты 3090/4090, и очень хочется запустить самую мощную vision модель без облачных тарифов. Это офлайн-альтернатива GPT-4V с уровнем понимания, близким к топовым API-моделям, но медленнее в разы.
Не подойдёт тем, кому нужен реальный time (чат-боты, интерактивный анализ). Для продакшена с latency ниже 5 секунд лучше взять облачные GPU или дождаться выхода специализированных ASIC. Но как исследовательский инструмент или для пакетной обработки — вариант рабочий.
Берите на заметку: MTP на Step-3.7-Flash используйте только при текстовых задачах (перевод, рерайт). На vision — отключайте без сожаления. И обязательно ставьте --no-mmap, иначе получите ошибку OOM на контексте больше 4096 токенов.
convert-hf-to-gguf.py и патчей для поддержки imatrix. Скачать готовый файл пока невозможно — придётся компилировать самому. Инструкцию по сборке дадим в следующем материале.Теперь вы знаете: 198B vision MoE на consumer GPU — реальность. Пусть медленная, пусть без MTP, но работающая. И это только начало. К концу 2026 года, с появлением llama.cpp с поддержкой гибридного контекста и более агрессивных квантований, возможно, мы увидим 300B+ модели на 4×3090 с нормальной скоростью. А пока — экспериментируйте, ломайте границы VRAM и не забудьте отключить спекулятивный декодинг на картинках.