# 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/uk/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/uk/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/uk/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/uk/kb/llama-cpp-kvantizaciya-gguf/
