Локальні LLM: Ollama, llama.cpp і квантизація
Як запустити мовну модель на своєму ноутбуці чи сервері, скільки для цього потрібно пам'яті і що насправді означають позначки Q4_K_M та Q8_0.
Хмарні API зручні, але іноді модель потрібна локально: дані не можна виносити за периметр, потрібна робота офлайн або просто хочеться експериментувати без рахунків за токени. Відкриті моделі з вагами (open-weight) сьогодні достатньо хороші для класифікації, вилучення даних, підсумовування і допомоги з кодом.
Скільки потрібно пам'яті
Головне обмеження — пам'ять (VRAM відеокарти або оперативна пам'ять для CPU / Apple Silicon). Грубо: розмір ваг = кількість параметрів × байт на параметр.
| Модель | FP16 (2 байти) | 8 біт | 4 біти |
|---|---|---|---|
| 3B параметрів | ~6 ГБ | ~3.5 ГБ | ~2 ГБ |
| 8B параметрів | ~16 ГБ | ~8.5 ГБ | ~5 ГБ |
| 32B параметрів | ~64 ГБ | ~34 ГБ | ~19 ГБ |
| 70B параметрів | ~140 ГБ | ~75 ГБ | ~40 ГБ |
До ваг додайте KV-кеш — пам'ять під контекст. Він росте лінійно з довжиною контексту і може займати гігабайти при вікні 32k+ токенів.
Квантизація
Квантизація — зберігання ваг з меншою точністю: замість 16 біт на число — 8, 5 або 4. Модель стає в 2–4 рази меншою і швидшою, а якість падає зовсім трохи — особливо до 4–5 біт.
У форматі GGUF (llama.cpp, Ollama) назви квантизацій виглядають так:
| Позначка | Що означає | Коли брати |
|---|---|---|
Q8_0 |
8 біт, майже без втрат | Пам'яті вдосталь |
Q6_K |
6 біт | Компроміс ближче до якості |
Q5_K_M |
5 біт, «середній» варіант K-квантів | Хороший баланс |
Q4_K_M |
4 біти | Найпопулярніший вибір за замовчуванням |
Q3_K / Q2_K |
3 і 2 біти | Лише якщо інакше модель не влазить — якість помітно падає |
ПорадаБільша модель з квантизацією Q4 зазвичай краща за меншу модель у FP16 при тому самому обсязі пам'яті.
Ollama: найшвидший старт
# Встановлення (Linux; для macOS і Windows є інсталятори)
curl -fsSL https://ollama.com/install.sh | sh
# Завантажити і запустити модель в інтерактивному режимі
ollama run llama3.1:8b
# Список завантажених моделей і скільки вони займають
ollama listOllama піднімає локальний HTTP-сервер на порту 11434 із OpenAI-сумісним API, тож більшість бібліотек підключаються зміною адреси:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
reply = client.chat.completions.create(
model="llama3.1:8b",
messages=[{"role": "user", "content": "Поясни, що таке inode, у двох реченнях."}],
temperature=0.2,
)
print(reply.choices[0].message.content)llama.cpp: більше контролю
llama.cpp — рушій, на якому побудована Ollama. Напряму його беруть, коли потрібен тонкий контроль: скільки шарів вивантажити на GPU, розмір контексту, кількість потоків.
# Сервер з OpenAI-сумісним API.
# -c — розмір контексту, -ngl — скільки шарів віддати на GPU (99 = усі, що влізуть)
./llama-server \
-m models/qwen2.5-7b-instruct-q4_k_m.gguf \
-c 8192 \
-ngl 99 \
--host 127.0.0.1 --port 8080УвагаНе виставляйте такий сервер в інтернет без автентифікації та TLS. За замовчуванням будь-хто, хто дістанеться до порту, зможе користуватися вашою моделлю й GPU.
Для продакшену з багатьма користувачами
Ollama і llama.cpp добре працюють для одного користувача чи невеликої команди. Для десятків паралельних запитів дивіться на сервери інференсу з continuous batching і PagedAttention — наприклад, vLLM або SGLang. Вони обробляють кілька запитів одночасно на одній GPU і дають у рази вищу пропускну здатність.
Як вибрати модель
- Визначте задачу і зберіть 20–30 прикладів з очікуваними відповідями.
- Візьміть 2–3 моделі, що влазять у вашу пам'ять у
Q4_K_M. - Прогоніть приклади, порівняйте якість і швидкість (токенів за секунду).
- Лише потім думайте про донавчання — часто достатньо кращого промпту й кількох прикладів у ньому.
Модель 8B у Q4_K_M займає ~5 ГБ, а у відеокарти 8 ГБ. Чому при контексті 32k вона може не влізти?
Бо крім ваг потрібна пам'ять під KV-кеш, який росте з довжиною контексту, і під робочі буфери. При довгому контексті кеш може займати кілька гігабайтів — тоді частину шарів доведеться залишити на CPU або зменшити контекст.
Збережіть статтю собі
Увійдіть, щоб імпортувати її у власні нотатки, відмічати вивчене, ставити лайки й питати спільноту. Реєстрація безкоштовна: вхід через Google займає кілька секунд.
Увійти через Google Інші способи входу