Почему «быстрая» модель может оказаться медленной
Вы скачали StepFun 3.5 Flash, прочитали в описании «оптимизирована для скорости», запустили через llama.cpp и... ждете. Долго ждете. Первый токен появляется через 5 секунд, следующие — с интервалом в полсекунды. А MiniMax 2.1, который должен быть тяжелее, работает быстрее. Знакомо?
Я провел неделю, тестируя обе модели на AMD Ryzen 9 7950X с 128 ГБ DDR5 и RTX 4090 (24 ГБ VRAM). Стенд максимально приближен к реальному рабочему компьютеру — не серверному монстру, а тому, что стоит у большинства разработчиков. Результаты оказались неожиданными.
Стенд и методика: как мы обманываем сами себя
Прежде чем смотреть на цифры, нужно понять, как их получают. Большинство бенчмарков измеряют скорость генерации после первого токена — то есть, когда модель уже «разогналась». Это все равно что мерить скорость Ferrari на автобане, забыв упомянуть, что она час прогревалась в гараже.
Я измерял три метрики:
- Time to First Token (TTFT) — время от отправки промпта до первого символа ответа
- Tokens per Second (t/s) — средняя скорость после 100 сгенерированных токенов
- Peak VRAM Usage — максимальное потребление видеопамяти
Тестовый промпт: «Напиши подробное объяснение квантования GGUF для llama.cpp, сравни подходы IQ4_XS и Q3_K_XL». Длина — примерно 35 токенов. Генерация — 512 токенов.
Квантование: выбор между точностью и скоростью, которого нет
Обе модели тестировались в двух вариантах квантования:
| Квант | Размер файла | Теоретическая точность | Особенность |
|---|---|---|---|
| IQ4_XS | ~28 ГБ | 4 бита, группами | Новый алгоритм, лучше сохраняет качество при сильном сжатии |
| Q3_K_XL | ~25 ГБ | 3 бита, с компенсацией | Более агрессивное сжатие, может терять детали в сложных задачах |
В теории IQ4_XS должен быть медленнее из-за более сложных вычислений при деквантовании. На практике разница оказалась меньше 5%. Почему? Потому что основное время уходит не на математику, а на перемещение данных между RAM и VRAM.
Важно: Если у вас 24 ГБ VRAM (как у RTX 4090), обе модели в этих квантах не поместятся целиком. Придется использовать оффлоадинг на CPU. А это сразу минус 30-40% к скорости. Подробнее об этом в статье про MiniMax 2.1 на чистом CPU.
Цифры, которые заставят пересмотреть выбор модели
| Модель / Квант | TTFT (сек) | Скорость (t/s) | Peak VRAM | Качество ответа |
|---|---|---|---|---|
| StepFun 3.5 Flash (IQ4_XS) | 4.8 | 9.2 | 107 ГБ | Хорошее, но иногда «залипает» |
| StepFun 3.5 Flash (Q3_K_XL) | 4.5 | 10.1 | 98 ГБ | Немного хуже в сложных логических задачах |
| MiniMax 2.1 (IQ4_XS) | 2.1 | 14.7 | 112 ГБ | Отличное, стабильное |
| MiniMax 2.1 (Q3_K_XL) | 1.9 | 16.3 | 104 ГБ | Хорошее, иногда упрощает |
Обратите внимание на три вещи:
- MiniMax 2.1 почти в два раза быстрее по TTFT
- StepFun 3.5 Flash потребляет чуть меньше VRAM, но разница не критична
- Скорость генерации у MiniMax выше на 40-60%
Откуда такие цифры? StepFun 3.5 Flash действительно оптимизирована под инференс, но эта оптимизация работает только при идеальных условиях — когда вся модель помещается в VRAM. В реальности, с 24 ГБ видеопамяти, приходится постоянно грузить слои из RAM. А здесь уже вступают в силу другие ограничения.
Феномен «передумывания»: когда модель слишком умная для своих же мозгов
Я заметил странную закономерность. StepFun 3.5 Flash иногда «зависает» на 2-3 секунды в середине генерации. Не всегда, но достаточно часто, чтобы это раздражало. Сначала думал, что это проблема оффлоадинга или фрагментации памяти. Но потом посмотрел логи llama.cpp и увидел паттерн.
Модель генерирует токен, затем как бы «перепроверяет» его, и только потом выдает следующий. Особенно это заметно в технических объяснениях или когда нужно выбрать между несколькими вариантами формулировки.
Проверил на задаче генерации кода. Даю промпт: «Напиши функцию на Python, которая считает факториал с мемоизацией». StepFun думает 5 секунд, выдает первые два токена, потом пауза на секунду, еще три токена, снова пауза... MiniMax выдает ответ потоком, почти без пауз.
Это критично? Зависит от задачи. Если вам нужен чат-бот для общения — терпимо. Если вы генерируете код или длинные тексты — раздражает.
VRAM: 107 ГБ против 112 ГБ — почему это важно
Цифры потребления VRAM выглядят абсурдно. У кого вообще есть 107 ГБ видеопамяти? Ни у кого. Эти цифры — пиковое потребление при полной загрузке модели в VRAM. В реальности вы никогда не увидите таких значений, потому что будете использовать оффлоадинг.
Но они важны для понимания структуры модели. StepFun 3.5 Flash действительно «легче» на 5 ГБ. На бумаге это преимущество. На практике — при оффлоадинге разница стирается. Потому что bottleneck не в объеме VRAM, а в скорости обмена между RAM и видеопамятью.
Предупреждение: Не пытайтесь запускать эти модели без оффлоадинга на RTX 4090. Они просто не поместятся. Используйте флаг --ngl 20-30 в llama.cpp, чтобы оставить на GPU только часть слоев. Остальное будет работать на CPU, медленно, но работать. Подробнее о настройках оффлоадинга в статье про Epyc 9175F для CPU-инференса.
Команды запуска: что скрывается за флагами
Вот команды, которые я использовал для тестов. Обратите внимание на --mlock и --no-mmap — они критичны для стабильности при работе с большими моделями.
# StepFun 3.5 Flash с IQ4_XS
./main -m ./stepfun-3.5-flash-IQ4_XS.gguf \
-p "Напиши подробное объяснение квантования GGUF" \
-n 512 \
--temp 0.7 \
--top-p 0.9 \
--repeat-penalty 1.1 \
--mlock \
--no-mmap \
--n-gpu-layers 28 \
--ctx-size 4096
# MiniMax 2.1 с Q3_K_XL
./main -m ./minimax-2.1-Q3_K_XL.gguf \
-p "Напиши подробное объяснение квантования GGUF" \
-n 512 \
--temp 0.7 \
--top-p 0.9 \
--repeat-penalty 1.1 \
--mlock \
--no-mmap \
--n-gpu-layers 32 \
--ctx-size 4096
--n-gpu-layers подбирается экспериментально. Начните с 20, увеличивайте, пока не увидите ошибку out of memory. Для RTX 4090 оптимально 28-32 слоя.
Качество ответов: когда скорость не главное
Производительность — это хорошо. Но если модель генерирует бред, хоть со скоростью света. Я протестировал обе модели на четырех типах задач:
- Техническое объяснение (квантование GGUF) — MiniMax дал более структурированный ответ с примерами кода
- Генерация кода (факториал с мемоизацией) — оба справились, но StepFun добавила лишние проверки, которые не просили
- Логическая задача (загадка с волком, козой и капустой) — MiniMax решил быстрее и без дополнительных вопросов
- Творческое письмо (рассказ в стиле хоррора) — StepFun показала больше вариативности, но иногда теряла нить повествования
MiniMax 2.1 оказался более предсказуемым. Если нужно получить рабочий код или четкий ответ — он надежнее. StepFun 3.5 Flash иногда выдает неожиданные повороты, что может быть плюсом для творческих задач.
Что в итоге выбрать для daily driver?
Если у вас:
- RTX 4090 или аналоги с 24 ГБ VRAM — MiniMax 2.1 с Q3_K_XL. Быстрее, стабильнее, предсказуемее.
- Меньше 24 ГБ VRAM — рассмотрите более легкие модели вроде Nemotron-3-nano:30b. Эти гиганты будут мучительно медленными.
- Нужна креативность, а не скорость — StepFun 3.5 Flash может удивить нестандартными решениями, но готовьтесь к паузам.
Лично я остановился на MiniMax 2.1 с Q3_K_XL для рабочих задач и кодинга. StepFun 3.5 Flash оставил для экспериментов, когда нужно получить необычный ответ.
Три ошибки, которые совершают все при тестировании
-
Тестирование на коротких промптах
Первые 50 токенов модель генерирует в особом режиме. Реальная скорость видна после 100-150 токенов. Если тестируете для длинных ответов — делайте генерацию хотя бы на 300 токенов.
-
Игнорирование Time to First Token
В интерактивном режиме TTFT важнее, чем средняя скорость. Пользователь не будет ждать 5 секунд начала ответа, даже если потом модель выдает 100 токенов в секунду.
-
Тестирование без оффлоадинга
99% пользователей не могут загрузить 70-миллиардную модель целиком в VRAM. Тестируйте с тем же количеством слоев на GPU, которое будете использовать в работе.
Что будет дальше с большими моделями?
Тренд ясен: модели растут быстрее, чем видеопамять в потребительских видеокартах. RTX 5090 обещает 32 ГБ VRAM, но модели к тому времени будут требовать 150 ГБ. Оффлоадинг станет не опцией, а необходимостью.
Производители железа это понимают. PCIe 6.0, CXL, ускоренные межсоединения — все это попытки решить проблему bottleneck между RAM и VRAM. Пока что мы в ситуации, когда быстрая видеокарта простаивает в ожидании данных из оперативки.
Мой прогноз: следующие два года мы увидим бум специализированных AI-ускорителей с HBM-памятью объемом 64-128 ГБ. Они будут дорогими, но для серьезной работы станут must-have. А потребительские видеокарты останутся для игр и легких моделей вроде Gemma 3 270M.
А пока — тестируйте, измеряйте, не верьте рекламным заголовкам. И помните: самая быстрая модель та, которая решает вашу задачу, а не та, у которой больше всего параметров.