Игорь Градов
Игорь Градов
6 мин
ai

pip install llama cpp python и сборка сервера: локальная LLM за 30 минут на RTX 4090

Llama.cpp позволяет запустить языковую модель на собственном сервере без облачных API, и 5 июня 2025 года это один из самых гибких способов держать данные и инференс (генерацию ответов моделью) внутри своего контура.

pip install llama cpp python и сборка сервера: локальная LLM за 30 минут на RTX 4090
Почему это важно

Локальный запуск LLM (большой языковой модели) означает, что ни промпты (запросы к модели), ни ответы не уходят на чужие серверы. Для компаний в РФ это закрывает вопрос утечки данных и не зависит от доступности зарубежных API.

Фреймворк llama.cpp, написанный на C/C++, даёт контроль над каждым параметром генерации. Поднять REST API и получить первый ответ здесь не сложнее, чем в Ollama, но набор настроек заметно шире. Ниже полный маршрут: от сборки на российском сервере Selectel с RTX 4090 до рабочего запроса на русском языке. Гайд подготовлен по материалам публикации Local LLM Optimization.

Что понадобится?

  • Сервер с GPU. В источнике использована почасовая прерванная GPU-машина Selectel: 8 vCPU, 32 ГБ RAM, 200 ГБ SSD, 1 × RTX 4090 (24 ГБ VRAM), Ubuntu 24.04 LTS, GPU Driver 580 (Open), локация Москва (ru-7b).
  • Установленный CUDA-компилятор (путь по умолчанию /usr/local/cuda/bin/nvcc).
  • Git, cmake, wget и базовые инструменты сборки.
  • 30 минут на сборку, скачивание модели и первый запрос.

Если вы планируете вызывать llama.cpp из Python-кода, пригодится обёртка: выполните pip install llama cpp python (пакет llama-cpp-python). Она не нужна для REST API, но упрощает интеграцию в скрипты. Убедитесь, что версия совместима с вашей CUDA.

Пошаговая инструкция

1. Клонируйте репозиторий и создайте папку сборки

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
mkdir build && cd build

2. Соберите три инструмента: llama-server, llama-bench, llama-cli

  • llama-server поднимает REST API для запросов к модели.
  • llama-bench прогоняет тесты производительности и помогает подобрать размер контекста.
  • llama-cli позволяет общаться с моделью прямо из терминала.
export CUDACXX=/usr/local/cuda/bin/nvcc

cmake .. \
  -DCMAKE_BUILD_TYPE=Release \
  -DGGML_CUDA=ON \
  -DLLAMA_CURL=ON \
  -DGGML_CUDA_FA=ON \
  -DCMAKE_CUDA_ARCHITECTURES=89

cmake --build . --config Release \
  --target llama-server llama-bench llama-cli --parallel

Параметр -DGGML_CUDA_FA=ON включает Flash Attention для ускорения генерации. Значение -DCMAKE_CUDA_ARCHITECTURES=89 соответствует архитектуре RTX 40xx. Для RTX 30xx укажите 86.

3. Скачайте модель в формате GGUF

GGUF (формат квантованных моделей для llama.cpp, где квантование означает сжатие весов модели для экономии памяти) позволяет уместить 9-миллиардную модель в 24 ГБ видеопамяти.

mkdir -p ./models
wget -O ./models/Qwen3.5-9B_Q4_k_m.gguf \
  "https://huggingface.co/SandLogicTechnologies/Qwen3.5-9B-GGUF/resolve/main/Qwen3.5-9B_Q4_k_m.gguf"

4. Запустите llama-server

./bin/llama-server \
  -m ./models/Qwen3.5-9B_Q4_k_m.gguf \
  --host 0.0.0.0 \
  --port 8089 \
  -c 2048 \
  -ngl 99 \
  --jinja

Здесь -c 2048 задаёт размер контекста в токенах (единицах текста, на которые модель разбивает входные данные), -ngl 99 выгружает все слои модели на GPU, --jinja включает шаблонизацию промптов.

5. Отправьте первый запрос

Эндпоинт /v1/chat/completions совместим с OpenAI API, поэтому любой клиент, написанный для ChatGPT, будет работать без изменений:

curl http://0.0.0.0:8089/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.5-9b",
    "messages": [
      {"role": "system", "content": "Ты — эксперт по ИИ. Отвечай кратко и понятно."},
      {"role": "user", "content": "Объясни, что такое квантование модели, простыми словами."}
    ],
    "temperature": 0.7,
    "max_tokens": 300,
    "stream": false
  }'

Для простых одноразовых запросов есть второй эндпоинт, /completion, где достаточно передать строку в поле prompt.

6. Протестируйте производительность через llama-bench

for ub in 128 256 512 1024; do
  ./bin/llama-bench \
    -m ./models/Qwen3.5-9B_Q4_k_m.gguf \
    -p 2048 -n 128 \
    -b 1024 -ub "$ub" \
    -ngl 99 \
    -ctk q8_0 -ctv q8_0 \
    -fa on
done

Цикл перебирает размер микробатча (-ub), чтобы найти значение с лучшей скоростью генерации именно на вашей карте.

Пример: разбор задачи из Telegram на русском языке

В источнике показан сценарий, где модель извлекает параметры задачи из сообщения в мессенджере и оформляет результат в Markdown.

Входное сообщение:

Нужно смержить ветку feature/new-dashboard в дев.
Там новый график аналитики, проверьте, чтобы все подтягивалось.
Василий (+79876543210) отвечает за задачу
Сроки ASAP в понедельник 1 августа 2026

Промпт модели просит извлечь имя задачи, дедлайн и автора, а при отсутствии параметров вернуть комментарий.

Результат: модель возвращает структурированный Markdown с полями «автор: Василий», «дедлайн: 1 августа 2026» и описанием задачи. Данные при этом не покидают ваш сервер.

Код на Python использует библиотеку requests и обращается к тому же http://0.0.0.0:8089/completion. Если вы предпочитаете нативную обёртку, выполните pip install llama cpp python и работайте с моделью без HTTP-вызовов.

Частые ошибки
  • Неверная архитектура CUDA. Параметр CMAKE_CUDA_ARCHITECTURES=89 подходит только для RTX 40xx. Для RTX 3090 нужно 86, для A100 указывайте 80. Ошибка приведёт к сборке без GPU-ускорения, и модель будет генерировать на CPU в десятки раз медленнее.
  • Контекст больше видеопамяти. Если указать -c 8192 на карте с 24 ГБ для 9B-модели, сервер может упасть с ошибкой нехватки VRAM. Начинайте с -c 2048 и увеличивайте, проверяя nvidia-smi.
  • Забыли -ngl 99. Без этого флага слои модели останутся на CPU. Генерация будет работать, но медленно.
  • Путь к CUDA не экспортирован. Без export CUDACXX=... cmake не найдёт компилятор и соберёт проект без поддержки GPU, причём без явной ошибки.

Что делать с этим прямо сейчас?

Авторам Дзена и копирайтерам. Локальная модель позволяет генерировать черновики, проверять тексты и экспериментировать с промптами без лимитов подписки и без отправки контента на внешние серверы. Qwen 3.5 9B понимает русский язык и работает с контекстом до 2048 токенов в базовой конфигурации.

Маркетологам и предпринимателям в РФ. Связка «Selectel + llama.cpp» закрывает требования по локализации данных: сервер в Москве, трафик не уходит за рубеж, нет зависимости от зарубежных API. Для внутренних задач (разбор заявок, классификация обращений, генерация ответов) этого достаточно.

Разработчикам. REST API совместим с форматом OpenAI, поэтому существующий код с openai.ChatCompletion заработает после замены одного URL. Для прямого вызова из Python без HTTP-прослойки подойдёт pip install llama cpp python.

Мнение редакции dzen.guru

Я тестировал llama.cpp на нескольких конфигурациях, и главное преимущество перед Ollama именно в бенчмаркинге: llama-bench позволяет подобрать параметры под конкретную карту, а не гадать. Для продакшена это экономит часы.

Честная оговорка: 9B-модель с квантованием Q4 не заменит GPT-4o или Claude на сложных задачах с длинным контекстом. Но для типовых задач (классификация, извлечение данных, короткая генерация на русском) её хватает, и вы платите только за аренду сервера.

Из доступных в РФ облачных аналогов, по моим наблюдениям, YandexGPT и GigaChat решают похожие задачи через API, но не дают контроля над моделью и параметрами генерации. Llama.cpp, это выбор тех, кому нужна полная прозрачность.

Попробуйте генерацию контента с ИИ

Если вы пока не готовы разворачивать сервер, протестируйте работу с нейросетями на практике в инструментах dzen.guru

Попробовать

Локальная LLM не требует подписки, не имеет лимитов запросов и не отправляет ваши данные третьим сторонам. Один вечер на настройку, и у вас собственный ИИ-сервер с API, который понимает русский язык и живёт в вашем контуре.

Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

ai

ИИ-агенты: это три вида усталости, которые копятся незаметно

Медленно, по блоку, по элементу, он перетаскивает объекты, и понял, что в таком режиме я бы справился быстрее сам. Одним словом, рассинхронизация темпов…

6 мин
SK Hynix IPO на $26,5 млрд побило рекорд Alibaba: спрос превысил предложение в 7 раз
ai

SK Hynix IPO на $26,5 млрд побило рекорд Alibaba: спрос превысил предложение в 7 раз

SK Hynix в пятницу 10 июля разместила на Nasdaq американские депозитарные расписки (ADR, ценные бумаги, позволяющие торговать акциями иностранной компании на…

5 мин
ai

Половина Fortune 500 перешла на опенсорс: зачем бизнесу открыть нейросеть

Гонка закрытых и открытых моделей ИИ вышла на новый виток: Клем Деланг, глава Hugging Face, платформы, через которую половина компаний из списка Fortune 500…

4 мин