Бенчмарки LLM с 16 ГБ VRAM в llama.cpp (скорость и контекст)
Скорость генерации токенов llama.cpp на 16 ГБ VRAM (таблицы).
Здесь я сравниваю скорость нескольких LLM, работающих на GPU с 16 ГБ видеопамяти, и выбираю лучшую для самохостинга.
Я запускал эти LLM в llama.cpp с окнами контекста в 19K, 32K и 64K токенов.
Стилизованное изображение GPU с блоками VRAM и графиками в стиле бенчмарков
В этой статье я документирую свои попытки выжать как можно больше производительности в плане скорости.
Таблица сравнения скорости LLM (токенов в секунду и VRAM)
| Модель | Размер | 19K VRAM | 19K GPU/CPU | 19K T/s | 32K VRAM | 32K Load | 32K T/s | 64K VRAM | 64K Load | 64K: T/s |
|---|---|---|---|---|---|---|---|---|---|---|
| Qwen3.6-35B-A3B-UD-IQ3_XXS | 13.2 | 13.8GB | 96%/100% | 147.5 | 14.0GB | 96%/101% | 149.1 | 14.7GB | 96%/101% | 145.8 |
| Qwen3.6-35B-A3B-UD-IQ4_XS | 17.7 | 14.3GB | 62%/266% | 95.0 | 14.9GB | 58%/279% | 92.3 | 14.9GB | 57%/293% | 86.4 |
| Qwen3.5-35B-A3B-UD-IQ3_S | 13.6 | 14.3GB | 93%/100% | 136.4 | 14.6GB | 93%/100% | 138.5 | 14.9GB | 88%/115% | 136.8 |
| Qwen3.5-27B-IQ3_XXS-bartowsky | 11.3 | 12.8 | 98/100 | 44.9 | 13.5 | 98/100 | 44.9 | 14.5 | 45/415 | 23.6 |
| Qwen3.5-27B-UD-IQ3_XXS | 11.5 | 12.9 | 98/100 | 45.3 | 13.7 | 98/100 | 45.1 | 14.7 | 45/410 | 22.7 |
| Qwen3.5-27B-IQ4_XS.gguf | 15.0 | 14.6 | 49/406 | 20.5 | 14.7 | 37/465 | 17.4 | 14.7 | 23/533 | 13.3 |
| Qwen3.5-122B-A10B-UD-IQ3_XXS | 44.7 | 14.7 | 30/470 | 22.3 | 14.7 | 30/480 | 21.8 | 14.7 | 28/490 | 21.5 |
| Qwen3.5-122B-A10B-UD-IQ3_S | 46.5 | 14.7 | 25/516 | 19.4 | 14.7 | 24/516 | 19.5 | 14.7 | 24/516 | 19.6 |
| Mistral-Small-4-119B UD-IQ3_XXS | 42.8 | 14.8 | 28/585 | 30.4 | 14.7 | 27/574 | 28.5 | 14.9 | 20/590 | 31.5 |
| Qwen3-Coder-Next-UD-IQ4_XS | 38.4 | 14.6 | 32/460 | 41.1 | 14.7 | 29/440 | 41.3 | 14.8 | 32/460 | 38.3 |
| Nemotron Super 120b IQ3_XXS | 56.2 | 15.0 | 26/517 | 17.5 | 14.6 | 26/531 | 17.4 | 14.6 | 26/535 | 17.6 |
| gemma-4-26B-A4B-it-UD-IQ4_XS | 13.4 | 14.7 | 95/100 | 121.7 | 14.9 | 95/115 | 114.9 | 14.9 | 75/190 | 96.1 |
| gemma-4-31B-it-UD-IQ3_XXS | 11.8 | 14.8 | 68/287 | 29.2 | 14.8 | 41/480 | 18.4 | 14.8 | 18/634 | 8.1 |
| GLM-4.7-Flash-IQ4_XS | 16.3 | 15.0 | 66/240 | 91.8 | 14.9 | 62/262 | 86.1 | 14.9 | 53/313 | 72.5 |
| GLM-4.7-Flash-REAP-23B IQ4_XS | 12.6 | 13.7 | 92/100 | 122.0 | 14.4 | 95/102 | 123.2 | 14.9 | 71/196 | 97.1 |
19K, 32K и 64K — это размеры контекста.
load выше означает GPU Load (нагрузку GPU).
Если в этом столбце вы видите низкое значение — это значит, что модель работает преимущественно на CPU и не может обеспечить приемлемую скорость на этом оборудовании. Такая закономерность характерна для случаев, когда на GPU помещается слишком малая часть модели или когда контекст вытесняет вычисления на хост (CPU).
О llama.cpp, производительности LLM, OpenCode и других сравнениях
Если вам нужны пути установки, примеры llama-cli и llama-server, а также флаги, влияющие на VRAM и количество токенов в секунду (размер контекста, батчинг, -ngl), начните со статьи Быстрый старт llama.cpp с CLI и Server.
Для более общей картины производительности (пропускная способность против задержки, лимиты VRAM, параллельные запросы и то, как бенчмарки соотносятся между собой на разных аппаратных платформах и рантаймах), см. Производительность LLM в 2026 году: бенчмарки, узкие места и оптимизация.
Качество ответов анализируется в других статьях, например:
- Лучшие LLM для OpenCode — протестировано локально. Вы можете прочитать больше об Opencode в Быстрый старт OpenCode: установка, настройка и использование терминального AI-агента для кодинга.
- Сравнение качества перевода страниц Hugo — LLM на Ollama
Я также проводил похожие тесты для LLM на Ollama: Лучшие LLM для Ollama на GPU с 16GB VRAM.
Если вы запускаете Qwen 3.6 27B или 35B через llama.cpp и хотите увеличить скорость генерации, см. Qwen 3.6 MTP против стандартной декодировки на GPU с 16GB — MTP спекулятивное декодирование добавляет до 67 % к пропускной способности генерации для 27B плотной модели, с таблицами, показывающими затраты VRAM и компромисс с окном контекста на каждом уровне --spec-draft-n-max.
Почему длина контекста меняет количество токенов в секунду
По мере перехода с 19K на 32K или 64K токенов кэш KV растет, и давление на VRAM увеличивается. В некоторых строках наблюдается значительное падение количества токенов в секунду при 64K, тогда как в других оно остается стабильным, что является сигналом пересмотреть квантование, лимиты контекста или оффлоад слоев, а не считать модель «медленной» в целом. За формулами за этими цифрами — точной формулой для байт KV на токен, таблицами типов кэша на 32K/64K/128K и тем, как рассчитать свой запас прочности, — см. KV Cache на GPU с 16 ГБ: как действительно уместить длинный контекст.
Модели и квантование, которые я выбрал для тестирования, — это то, что я запускаю сам, чтобы увидеть, дают ли они хороший прирост в смысле соотношения цена/качество на этом оборудовании или нет. Так что здесь нет k8 квантов с контекстом 200k :) …
GPU/CPU — это нагрузка, измеряемая nvitop.
llama.cpp при автоматической конфигурации выгрузки слоев на GPU пытается держать 1 ГБ свободными.
Мы вручную задаем этот параметр с помощью параметра командной строки -ngl, но я не тюнинг его здесь,
просто нужно понять, что если есть значительное падение производительности при увеличении размера окна контекста с 32k до 64k — мы можем попробовать увеличить скорость на 64k, тюнингуя количество выгруженных слоев.
Тестовое оборудование и настройка llama.cpp
Я тестировал скорость LLM на ПК с такой конфигурацией:
- CPU i-14700
- RAM 64GB 6000Hz (2x32GB)
- GPU RTX-4080
- Ubuntu с драйверами NVidia
- llama.cpp/llama-cli, без указания выгруженных слоев
- Используемая VRAM изначально, перед запуском llama-cli: 300MB
Дополнительные прогоны с контекстом 128K (Qwen3.5 27B и 122B)
| Модель | 128K Load | 128K: T/s |
|---|---|---|
| Qwen3.5-27B-UD-IQ3_XXS | 16/625 | 9.6 |
| Qwen3.5-122B-A10B-UD-IQ3_XXS | 27/496 | 19.2 |
Прогоны с ручной настройкой
Для некоторых интересных моделей и квантования я пытался найти специальные параметры командной строки llama-cpp для более эффективного использования VRAM. Вот что мне удалось достичь:
| Модель | Контекст | Слои на GPU | CPU/CPU load | Скорость |
|---|---|---|---|---|
| Qwen3.5-27B-IQ4_XS.gguf | 18k | 65 | 98%/100% | 38.0 |
| Qwen3.5-27B-IQ4_XS.gguf | 64k | 53 | 33%/488% | 15.7 |
Выводы для конфигураций с 16 GB VRAM
- Мой текущий фаворит Qwen3.5-27B-UD-IQ3_XXS выглядит хорошо в своей «сладкой точке» — контексте 50k (я получаю примерно 36t/s)
- Qwen3.5-122B-A10B-UD-IQ3_XXS обгоняет Qwen3.5 27B по производительности на контекстах выше 64K.
- Я могу заставить Qwen3.5-35B-A3B-UD-IQ3_S обрабатывать контекст в 100k токенов, и он помещается в VRAM, поэтому падения производительности нет
- Я не буду использовать gemma-4-31B на 16GB VRAM, но gemma-4-26B может быть средне… нужно протестировать.
- Нужно протестировать, насколько хорошо работают Nemotron cascade 2 и GLM-4.7 Flash REAP 23B. Будут ли они лучше, чем Qwen3.5-35B q3? Я сомневаюсь, но все равно, стоит протестировать, чтобы подтвердить подозрения.
- О том, почему диапазон 25–34B становится стандартом де-факто в 2026 году, когда у вас есть 24 ГБ, и почему Qwen3.8-27B в формате Q4 не подходит для этой карты на 16 ГБ, см. Эффективная граница открытых моделей в 2026 году.