Articles

Запуск и оптимизация локальной LLM с llama.cpp

llama.cpp позволяет запускать LLM локально на облачном GPU с квантованием от 2 до 8 бит, снижая требования к VRAM.

· 1 мин чтения · · AI и LLM

TL;DR

  • llama.cpp позволяет запускать LLM локально на облачном GPU с квантованием от 2 до 8 бит, снижая требования к VRAM.
  • REST API поднимается через серверную часть с OpenAI-совместимыми эндпоинтами, что упрощает интеграцию.
  • Оптимизация производительности включает подбор batch size, количества потоков CPU и типа квантования под конкретную видеокарту.

Разбор

Для запуска локальной LLM на выделенном облачном GPU (например, NVIDIA A100 или RTX 4090) используем llama.cpp. Сборка с поддержкой CUDA ускоряет инференс: cmake -B build -DLLAMA_CUDA=ON && cmake --build build. После клонирования репозитория и загрузки квантованной модели (например, Mistral-7B-Instruct в Q4_K_M) поднимаем сервер: ./build/bin/server -m models/mistral-7b-instruct-q4.gguf --host 0.0.0.0 --port 8080. Сервер поддерживает эндпоинты /v1/completions и /v1/chat/completions, совместимые с OpenAI API. Пример запроса через curl: curl -X POST http://localhost:8080/v1/completions -H "Content-Type: application/json" -d '{"prompt": "Hello, how are you?", "max_tokens": 100}'.

Бенчмаркинг производительности — ключевой этап. Замеряем скорость генерации токенов (tokens/s) и использование VRAM с помощью встроенной утилиты: ./build/bin/perplexity -m models/mistral-7b-instruct-q4.gguf -f test.txt -ngl 35. Параметр -ngl (число слоёв на GPU) критичен: для видеокарты с 24 ГБ VRAM (RTX 4090) оптимально выгрузить все слои на GPU, но если VRAM меньше, часть слоёв оставляем на CPU. Для минимизации latency настраиваем batch size (например, --batch-size 512) и количество потоков CPU (--threads 8). Тип квантования выбираем под задачу: Q4_K_M даёт баланс между качеством и скоростью, Q2_K — для экономии VRAM, Q8_0 — для максимальной точности на мощных GPU.

Выводы

  • Квантование моделей в llama.cpp (Q4_K_M) снижает требования к VRAM на 50-70% без значительной потери качества, что делает запуск на облачном GPU экономически эффективным.
  • Оптимизация под конкретную видеокарту (batch size, количество слоёв на GPU, потоки CPU) может увеличить скорость генерации на 20-40% по сравнению с настройками по умолчанию.
  • REST API с OpenAI-совместимыми эндпоинтами упрощает интеграцию в существующие пайплайны, устраняя задержки сети при локальном развёртывании.

Нужна такая автоматизация? Обсудить проект в Telegram: https://t.me/Cvister0

FAQ

С чего начать?

Смотрите раздел «Разбор» и блок «Выводы».

Обсудить проект в Telegram