Бенчмарки LLM с 16 ГБ VRAM с помощью llama.cpp (скорость и контекст)
Скорость обработки токенов в llama.cpp на видеокарте с 16 ГБ видеопамяти (таблицы).
Здесь я сравниваю скорость нескольких LLM, работающих на GPU с 16 ГБ видеопамяти (VRAM), и выбираю лучшую из них для локального развертывания.
Я прогонял эти LLM через llama.cpp с размерами контекстного окна 19K, 32K и 64K токенов.
Стилизованное изображение GPU с блоками VRAM и диаграммами в стиле бенчмарков
В этой статье я фиксирую свои попытки выжать максимум производительности в части скорости.
Таблица сравнения скорости LLM (токены в секунду и VRAM)
| Модель | Размер | 19K VRAM | 19K GPU/CPU | 19K T/s | 32K VRAM | 32K Загрузка | 32K T/s | 64K VRAM | 64K Загрузка | 64K: T/s |
|---|---|---|---|---|---|---|---|---|---|---|
| Qwen3.6-35B-A3B-UD-IQ3_XXS | 13.2 | 13.8 ГБ | 96%/100% | 147.5 | 14.0 ГБ | 96%/101% | 149.1 | 14.7 ГБ | 96%/101% | 145.8 |
| Qwen3.6-35B-A3B-UD-IQ4_XS | 17.7 | 14.3 ГБ | 62%/266% | 95.0 | 14.9 ГБ | 58%/279% | 92.3 | 14.9 ГБ | 57%/293% | 86.4 |
| Qwen3.5-35B-A3B-UD-IQ3_S | 13.6 | 14.3 ГБ | 93%/100% | 136.4 | 14.6 ГБ | 93%/100% | 138.5 | 14.9 ГБ | 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.
Если в этом столбце вы видите низкое значение — это означает, что модель работает преимущественно на CPU и не может обеспечить приличную скорость на этом оборудовании. Эта закономерность соответствует тому, что пользователи видят, когда на GPU помещается слишком мало модели или когда увеличение контекста вытесняет работу на системную память (host).
О 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 с 16 ГБ VRAM.
Если вы запускаете Qwen 3.6 27B или 35B через llama.cpp и хотите еще больше повысить скорость генерации, см. Qwen 3.6 MTP против стандартного декодирования на GPU с 16 ГБ — MTP спекулятивное декодирование увеличивает пропускную способность генерации до 67 % для 27B-модели dense-типа, с таблицами, показывающими стоимость по VRAM и компромисс размера контекста на каждом уровне --spec-draft-n-max.
Почему длина контекста влияет на количество токенов в секунду
По мере перехода от 19K к 32K или 64K токенам KV-кэш растет, и нагрузка на VRAM увеличивается. В некоторых строках наблюдается значительное падение скорости в токенах в секунду при 64K, в то время как другие остаются на прежнем уровне. Это сигнал для пересмотра квантования, ограничений контекста или выгрузки слоев на CPU, а не для того, чтобы полагать, что модель «медленная» в целом. Для бухгалтерии ресурсов за этими цифрами — точной формулой расчета байтов KV на токен, таблицами типов кэша на 32K/64K/128K и того, как рассчитать собственный запас прочности, — см. KV-кэш на GPU с 16 ГБ: как реально уместить длинный контекст.
Модели и кванты, которые я выбрал для тестирования, — это те, которые я запускаю сам, чтобы проверить, дают ли они хороший прирост с точки зрения соотношения цена/польза на этом оборудовании или нет. Так что здесь нет q8-квантов с контекстом 200k :) …
Столбец GPU/CPU — это нагрузка, измеренная с помощью nvitop.
Когда llama.cpp автоматически настраивает выгрузку слоев на GPU, он пытается оставить 1 ГБ свободным.
Мы можем вручную указать этот параметр через командную строку -ngl, но здесь я его не настраиваю,
мне просто нужно понимать, что, если при увеличении размера контекстного окна с 32k до 64k происходит значительное падение производительности, мы можем попробовать увеличить скорость на 64k, отрегулировав количество выгруженных слоев.
Тестовое оборудование и настройка llama.cpp
Я тестировал скорость LLM на ПК со следующей конфигурацией:
- CPU i-14700
- RAM 64GB 6000Гц (2x32GB)
- GPU RTX-4080
- Ubuntu с драйверами NVidia
- llama.cpp/llama-cli, количество выгруженных слоев не задано
- Использованная VRAM до запуска llama-cli: 300MB
Дополнительные прогоны с контекстом 128K (Qwen3.5 27B и 122B)
| Модель | 128K Загрузка | 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 | Скорость |
|---|---|---|---|---|
| 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 ГБ 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? Я сомневаюсь, но все же, возможно, стоит протестировать, чтобы подтвердить подозрения.