core code helper

Локальні LLM: Ollama, llama.cpp і квантизація

Як запустити мовну модель на своєму ноутбуці чи сервері, скільки для цього потрібно пам'яті і що насправді означають позначки Q4_K_M та Q8_0.

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 list

Ollama піднімає локальний 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 і дають у рази вищу пропускну здатність.

Як вибрати модель

  1. Визначте задачу і зберіть 20–30 прикладів з очікуваними відповідями.
  2. Візьміть 2–3 моделі, що влазять у вашу пам'ять у Q4_K_M.
  3. Прогоніть приклади, порівняйте якість і швидкість (токенів за секунду).
  4. Лише потім думайте про донавчання — часто достатньо кращого промпту й кількох прикладів у ньому.
Модель 8B у Q4_K_M займає ~5 ГБ, а у відеокарти 8 ГБ. Чому при контексті 32k вона може не влізти?

Бо крім ваг потрібна пам'ять під KV-кеш, який росте з довжиною контексту, і під робочі буфери. При довгому контексті кеш може займати кілька гігабайтів — тоді частину шарів доведеться залишити на CPU або зменшити контекст.

Збережіть статтю собі

Увійдіть, щоб імпортувати її у власні нотатки, відмічати вивчене, ставити лайки й питати спільноту. Реєстрація безкоштовна: вхід через Google займає кілька секунд.

Увійти через Google Інші способи входу