Оптимизация инференса LLM: llama.cpp, квантизация GGUF, гибрид

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Оптимизация инференса LLM: llama.cpp, квантизация GGUF, гибрид
Средний
от 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

Вы запускаете Llama 3 70B на сервере с 64 GB RAM и без GPU? Ошибка out-of-memory, latency 50+ секунд на токен — знакомая боль. Наша команда решила эту проблему для десятка проектов: используем llama.cpp с GGUF-квантизацией. Результат: 5–12 token/sec на двухсокетном Xeon, модель полностью on-premise, никаких облачных расходов. Кроме того, настройка гибрида CPU+GPU позволяет выжать до 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.

Пошаговая настройка гибрида
  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 недель в зависимости от сложности. Стоимость рассчитывается индивидуально после анализа вашего железа и требований. Получите консультацию — оценим проект бесплатно. Наш опыт: 5+ лет в MLOps, 40+ проектов по внедрению LLM. Свяжитесь с нами, чтобы обсудить оптимизацию вашего инференса.