# llama.cpp и GGUF: запуск языковых моделей на CPU

> Как запустить языковую модель на процессоре через llama.cpp: формат GGUF, уровни квантования, сборка и первый запуск на сервере без GPU.

## Что такое llama.cpp и формат GGUF

llama.cpp — реализация инференса языковых моделей на C++, которая работает без видеокарты, используя только процессор и оперативную память. Модели хранятся в формате GGUF: это один файл со всеми весами, метаданными и токенизатором, который легко скачать и запустить одной командой. Формат сменил устаревший GGML и стал стандартом для CPU-инференса.

Такой запуск подходит для VDS без GPU, для тестов на слабом железе и для случаев, когда модель нужна редко и держать дорогую видеокарту невыгодно. Если сервер уже оснащён GPU, быстрее работает [vLLM](https://www.zevshost.net/ru/kb/vllm-nastroika-servera/), а llama.cpp остаётся резервным вариантом или основным на бюджетном тарифе.

## Чем отличаются уровни квантования GGUF

Квантование уменьшает точность весов модели, чтобы сжать файл и ускорить вычисления на CPU. Чем ниже число бит, тем меньше размер и требования к памяти, но выше потеря качества ответов.

| Квантование | Бит на вес | Размер 7B-модели | Качество |
| --- | --- | --- | --- |
| Q8\_0 | 8 | ~7.2 ГБ | почти как fp16 |
| Q6\_K | 6 | ~5.5 ГБ | очень близко к оригиналу |
| Q5\_K\_M | 5 | ~4.8 ГБ | хороший баланс |
| Q4\_K\_M | 4 | ~4.1 ГБ | заметная, но небольшая потеря |
| Q2\_K | 2 | ~2.8 ГБ | сильная деградация |

Для большинства задач оптимален Q4\_K\_M или Q5\_K\_M — они экономят память и почти не портят ответы модели.

## Установка llama.cpp на сервере

Соберите проект из исходников: это даёт актуальную версию и оптимизацию под процессор конкретного сервера.

```
sudo apt update
sudo apt install -y build-essential cmake git
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j
```

После сборки бинарники появятся в каталоге `build/bin`. Проверьте число ядер процессора командой `nproc` — этот параметр указывается при запуске для полной загрузки CPU.

## Как скачать модель и запустить инференс

Готовые файлы GGUF публикуют на Hugging Face — достаточно скачать один файл с нужным уровнем квантования и передать путь к нему в бинарник.

```
wget https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/main/llama-2-7b-chat.Q4_K_M.gguf
./build/bin/llama-cli -m llama-2-7b-chat.Q4_K_M.gguf -p "Опиши коротко облачный сервер" -n 200 -t 8
```

Параметр `-t` задаёт число потоков CPU, `-n` — максимальную длину ответа. Для постоянной работы удобнее поднять сервер с HTTP API — см. также готовый интерфейс [Text Generation WebUI](https://www.zevshost.net/ru/kb/text-generation-webui/), который умеет работать поверх llama.cpp.

## Как выбрать квантование под объём памяти сервера

Опирайтесь на объём свободной оперативной памяти, а не только на размер файла модели — во время работы нужен запас под контекст и систему.

- 8 ГБ RAM — модели 7B в Q4\_K\_M, без параллельных задач на сервере.
- 16 ГБ RAM — модели 7B в Q6\_K или Q8\_0, либо модели 13B в Q4\_K\_M.
- 32 ГБ RAM — модели 13B в Q6\_K или модели 30B в Q4\_K\_M.
- Свободной памяти всегда должно оставаться на 20–30 % больше размера файла модели под контекст и кэш KV.

Точный расчёт видеопамяти для GPU-сценария смотрите в статье [сколько VRAM нужно модели](https://www.zevshost.net/ru/kb/skolko-vram-nuzhno-modeli/) — принцип расчёта похож, только вместо VRAM считается RAM.

## Типичные ошибки при первом запуске

Большинство проблем на старте решаются без переустановки:

- Процесс завершается сразу — не хватает оперативной памяти под выбранный уровень квантования, возьмите файл меньшего размера.
- Ответ генерируется очень медленно — проверьте параметр `-t` и убедитесь, что он равен числу физических ядер сервера.
- Модель отвечает бессвязно — вероятно, взят слишком агрессивный уровень квантования вроде Q2\_K, поднимите его до Q4\_K\_M.
- Сборка падает на этапе cmake — обновите компилятор и убедитесь, что установлен пакет build-essential.

После успешного теста через CLI llama.cpp готов к встраиванию в скрипты или к работе через веб-интерфейс. Такой запуск не требует GPU и подходит для большинства VDS-тарифов с достаточным объёмом оперативной памяти.

---

Источник: https://www.zevshost.net/ru/kb/llama-cpp-kvantizaciya-gguf/
