# llama.cpp benchmark: измерить скорость своей модели через llama-bench

Источник: https://modelium.tech/zhurnal/llama-cpp-benchmark/

`llama-bench` измеряет две разные скорости локальной модели: обработку входного текста и выдачу новых фрагментов ответа. Для сравнения сохраните версию программы, конкретный файл модели, оборудование и параметры теста, затем повторите прогон при тех же условиях. Это синтетический замер, а не проверка качества ответа или реальной переписки.

**Проверено по документации 8 октября 2026 года, не на реальном стенде Modelium.** Команды ниже сверены с llama.cpp на Git-ревизии `06cad0b` и карточкой Qwen на ревизии `91cad51`. Мы не собирали программу, не скачивали веса и не получали собственных показателей скорости. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3)

## Что покажет этот тест?

Представьте, что локальная нейросеть долго «думает» над вашим вопросом. `llama-bench` поможет разделить задержку на два этапа: **pp** — обработку входного текста и **tg** — выдачу новых частей ответа. Единица измерения — токены в секунду; токен здесь означает небольшой фрагмент текста, а не целое слово. Инструмент считает среднее по повторам и разброс значений, но не оценивает, насколько полезен ответ. [s1](#src-s1)

Результат этой инструкции — **две строки замера для одной модели на вашем компьютере**, которые можно сохранить и повторить после изменения настройки. `llama-bench` создаёт синтетическую нагрузку: реального письма или вопроса в тест вводить не нужно. Время разбиения текста на токены и выбора следующего токена в цифры инструмента не входит; не называйте эти цифры общей скоростью приложения. [s1](#src-s1)

## Что понадобится до запуска?

Основной путь ниже — для **Linux с обычным процессором, без обязательной видеокарты**. Нужны Git, CMake, компилятор C/C++, `curl`, доступ к сети для загрузки исходников и файла модели, а также место на диске. На Ubuntu эти инструменты можно установить командой `sudo apt update && sudo apt install -y git cmake build-essential curl`. Сборка CPU документирована разработчиками llama.cpp; конкретный минимум оперативной памяти для предложенной пары «компьютер + файл GGUF» мы не подтверждали, поэтому **не обещаем**, что модель запустится на любом устройстве. Проверьте свободное место и память до загрузки; размер GGUF не равен требованию к RAM. [s2](#src-s2)

Модель примера — **Qwen2.5-1.5B-Instruct, файл Q4_K_M в формате GGUF** из официального репозитория Qwen. GGUF — формат файла, который читает llama.cpp; Q4_K_M — конкретный вариант сжатия весов. В закреплённой ревизии файл присутствует; карточка репозитория помечена Apache-2.0. Если у вас уже есть совместимый локальный GGUF, можно использовать его путь вместо скачивания, сохранив точное название и ревизию в заметках. [s3](#src-s3) [s5](#src-s5)

После подготовки исходников и файла модели сам CPU-тест выполняется **на этом компьютере без обращения к облачному API**. Загрузка и установка требуют сети; не считайте наличие одного локального файла доказательством отсутствия сетевых запросов у других запущенных программ. Если приватность критична, после подготовки отключите сеть и повторите тест; редакция такой сетевой проверки не проводила. [s1](#src-s1) [s2](#src-s2)

## Как получить два сравнимых показателя?

- В терминале выполните `git clone https://github.com/ggml-org/llama.cpp.git`, затем `cd llama.cpp` и `git checkout 06cad0b9e77315bd2930bd4f70a6d7b37b2a01c1`. Команда `git rev-parse HEAD` должна вывести этот же полный идентификатор. Так фиксируется версия инструмента, а не случайная будущая сборка. [s1](#src-s1) [s2](#src-s2)

- Выполните `cmake -B build -DCMAKE_BUILD_TYPE=Release`, затем `cmake --build build --config Release -j 2`. Проверьте наличие программы через `./build/bin/llama-bench --help`: должен появиться список параметров `-m`, `-p`, `-n`, `-r`. На закреплённой ревизии каталог инструментов включает `llama-bench`; если сборка завершилась с ошибкой, к замеру не переходите. [s1](#src-s1) [s2](#src-s2) [s4](#src-s4)

- Внутри каталога проекта выполните `mkdir -p models`, затем `curl -fL 'https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/resolve/91cad51170dc346986eccefdc2dd33a9da36ead9/qwen2.5-1.5b-instruct-q4_k_m.gguf' -o models/qwen2.5-1.5b-instruct-q4_k_m.gguf`. Убедитесь, что загрузка завершилась без ошибки и файл существует. Здесь указан точный файл и зафиксированная ревизия, а не плавающее `main`. [s3](#src-s3) [s5](#src-s5)

- Проверьте скорость обработки входа и выдачи: `./build/bin/llama-bench -m models/qwen2.5-1.5b-instruct-q4_k_m.gguf -ngl 0 -p 512 -n 128 -r 5 -o json > bench.json`. `-ngl 0` оставляет слои модели на CPU; `-p 512` и `-n 128` задают длины синтетических этапов; `-r 5` повторяет каждый тест пять раз. В `bench.json` ожидаются записи с `n_prompt: 512` и `n_gen: 128`, полями `avg_ts`, `stddev_ts` и отдельными `samples_ts`. **Это форма ожидаемого результата, а не измеренные Modelium числа.** [s1](#src-s1)

- Откройте `bench.json` и запишите две строки `avg_ts` с единицей «токенов/с» вместе с `stddev_ts`. Сохраните рядом вывод `git rev-parse HEAD`, название/ревизию GGUF, модель процессора и ОС, `backends`, `n_gpu_layers`, `n_threads`, `n_prompt`, `n_gen` и число повторов из JSON. При повторном прогоне меняйте **только одну** настройку и сравнивайте одинаковый этап с таким же этапом; чужие цифры с другим железом не используйте как обещание скорости. [s1](#src-s1)

## Как понять результат и избежать ошибки?

Сверьте, что файл содержит **два разных теста**, а не один ответ модели: запись для обработки входа (`n_prompt=512`, `n_gen=0`) и запись для выдачи (`n_prompt=0`, `n_gen=128`). Не складывайте скорости `pp` и `tg` и не обещайте по ним длительность произвольного диалога. Если программа не видит файл, проверьте точное имя и завершение скачивания; если завершается с ошибкой памяти, не выводите минимальную RAM из размера файла — возьмите меньшую совместимую модель и укажите, что это уже другой тест. [s1](#src-s1)

Скорость на CPU не равна скорости на видеокарте: для её проверки нужен отдельно собранный backend и новая серия измерений с зафиксированной настройкой, а не просто смена числа в таблице. Для проверки качества реального ответа после замера откройте [общий гайд llama.cpp](/zhurnal/llama-cpp/); если нужна нагрузка на работающий сервер, у [vLLM bench serve](/zhurnal/vllm-bench-serve/) другая методика и метрики. [s1](#src-s1) [s2](#src-s2)

## Источники

1. [llama.cpp — llama-bench README](https://github.com/ggml-org/llama.cpp/blob/06cad0b9e77315bd2930bd4f70a6d7b37b2a01c1/tools/llama-bench/README.md) — получено 2026-10-08
2. [llama.cpp — сборка CPU](https://github.com/ggml-org/llama.cpp/blob/06cad0b9e77315bd2930bd4f70a6d7b37b2a01c1/docs/build.md) — получено 2026-10-08
3. [Qwen — Qwen2.5-1.5B-Instruct-GGUF: карточка модели](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/blob/91cad51170dc346986eccefdc2dd33a9da36ead9/README.md) — получено 2026-10-08
4. [llama.cpp — включение инструмента при сборке](https://github.com/ggml-org/llama.cpp/blob/06cad0b9e77315bd2930bd4f70a6d7b37b2a01c1/tools/CMakeLists.txt) — получено 2026-10-08
5. [Qwen — файловый список закреплённой ревизии GGUF](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/tree/91cad51170dc346986eccefdc2dd33a9da36ead9) — получено 2026-10-08
