Ефективний інференс LLM: llama.cpp, GGUF-квантизація, гібрид CPU+GPU

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Ефективний інференс LLM: llama.cpp, GGUF-квантизація, гібрид CPU+GPU
Середній
від 1 дня до 3 днів
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1317
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1226
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    925
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1156
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    620
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    894

Ефективний інференс LLM: llama.cpp, квантизація GGUF, гібрид CPU+GPU

Ви запускаєте Llama 3 70B на сервері з 64 GB RAM та без GPU? Помилка out-of-memory, latency 50+ секунд на токен — знайома біль. Наша команда вирішила цю проблему для десятка проектів: використовуємо llama.cpp з GGUF-квантизацією. Результат: 5–12 token/sec на двосокетному Xeon, модель повністю on-premise, жодних хмарних витрат. Крім того, налаштування гібрида CPU+GPU дозволяє витиснути до 5 разів швидший інференс порівняно з чистим CPU (20–30 token/sec на 70B моделі за наявності навіть однієї RTX 4090).

Чому llama.cpp — найкращий вибір для CPU-інференсу?

llama.cpp — C++ реалізація інференсу LLM з агресивними оптимізаціями для CPU та змішаного CPU+GPU виведення. Головна фішка — Квантизація GGUF, яка дозволяє стискати моделі без критичної втрати якості. Q4_K_M в 4 рази ефективніший за пам'яттю, ніж F16, при збереженні 96% якості — це найкращий баланс для продакшен-навантаження.

Порівняння типів квантизації для моделі 7B:

Тип Розмір (GB) Якість (%) Швидкість (token/sec на M2 Pro)
F16 14 100 30
Q8_0 8 99 40
Q5_K_M 5 98 50
Q4_K_M 4 96 60
Q4_0 3.5 94 70

Q4_K_M зберігає 95–98% якості F16 при розмірі в 4 рази менше — найкращий баланс для CPU-інференсу. Для продакшену ми майже завжди обираємо його, оскільки він дає прийнятну точність при мінімальному споживанні пам'яті.

Як налаштувати гібрид CPU+GPU за 1 день?

Якщо GPU пам'яті не вистачає на всю модель, llama.cpp дозволяє вивантажувати частину шарів на GPU. Типова команда для 70B моделі з 24 GB GPU:

./server -m llama-3-70b-q4km.gguf -ngl 32 --host 0.0.0.0 --port 8080

Параметр -ngl 32 вивантажує 32 шари на GPU (зазвичай це ~60% моделі). Решта — CPU. Ми автоматично підбираємо кількість шарів під ваше залізо, щоб максимізувати throughput. Ми також застосовуємо loop unrolling та SIMD-оптимізації для збільшення throughput.

Покрокове налаштування гібрида
  1. Скомпілюйте llama.cpp з підтримкою CUDA або Metal: make LLAMA_CUDA=1.
  2. Завантажте модель у GGUF-форматі (рекомендуємо Q4_K_M).
  3. Запустіть з параметром -ngl N, де N — кількість шарів, що поміщаються в VRAM.
  4. Перевірте occupancy GPU через nvidia-smi. Мета — завантаження >90% без swapping.
  5. Налаштуйте batch size (--batch-size) та кількість потоків (--threads) під CPU.
  6. Проведіть навантажувальне тестування: виміряйте p99 latency та throughput.

Які проблеми вирішуємо?

Кейс: fintech-компанія, 70B модель для аналізу транзакцій. Клієнт хотів повний on-premise без відправки даних у хмару. Залізо: 2×Xeon Gold 6248, 128 GB RAM, одна RTX A6000 (48 GB). Налаштували Q4_K_M + вивантаження 32 шарів на GPU. Підсумок: 15 token/sec, latency p99 < 200ms, економія на хмарних GPU — до $3000 на місяць. Проект впроваджено за 2 тижні. Порівняйте: хмарний API давав би 30–40 token/sec, але коштував би $5000/міс і вимагав передачі даних третій стороні.

Що входить у роботу?

  • Аналіз цільового заліза та вимог до latency
  • Компіляція llama.cpp з оптимізаціями під конкретний CPU (AVX2, AVX-512)
  • Підбір квантизації та тестування якості
  • Налаштування llama-server (OpenAI-сумісний API, batching, ліміти)
  • Навантажувальне тестування з вимірюванням p99 latency
  • Документація з експлуатації

Типові помилки при налаштуванні llama.cpp

  • Використання збірки без AVX на старому CPU — інференс падає в 2–3 рази
  • Занадто велика контекстна довжина (8192) без необхідності — latency зростає
  • Неправильний вибір квантизації (наприклад, Q4_0 для критичних до точності задач)

Як збільшити швидкість інференсу на CPU?

Використовуйте збірку llama.cpp під конкретний CPU з прапорами -mavx2 або -mavx512. Оберіть квантизацію Q4_K_M. Зменшіть контекстну довжину (наприклад, 4096 замість 8192). Вимкніть непотрібні шари уваги, якщо модель дозволяє. Збільшіть кількість потоків (--threads) до числа фізичних ядер. При двосокетній конфігурації налаштуйте NUMA-балансування. Ці кроки дають приріст у 2–4 рази на CPU.

Продуктивність на реальному залізі

Модель Розмір Q4_K_M Hardware Speed (token/sec)
Llama 3.2 3B 2 GB M2 Pro 60–80
Llama 3 8B 5 GB M2 Max 40–60
Llama 3 8B 5 GB RTX 4090 100–120
Llama 3 70B 40 GB 2×Xeon + RTX 4090 20–30
Llama 3 70B 40 GB 2×Xeon (CPU only) 5–12

Терміни та вартість

Налаштування інференсу займає від 1 до 3 тижнів залежно від складності. Базова вартість налаштування — від $1500. Вартість розраховується індивідуально після аналізу вашого заліза та вимог. Ми маємо сертифікацію NVIDIA та надаємо гарантію на працездатність рішення протягом 6 місяців. Отримайте консультацію — оцінимо проект безкоштовно. Наш досвід: 5+ років у MLOps, 40+ проектів із впровадження LLM. Зв'яжіться з нами, щоб обговорити оптимізацію вашого інференсу.