Локальные LLM в production: Опыт развёртывания для российского бизнеса
За последние 6 месяцев мы развернули более 20 локальных LLM для российских компаний. В этой статье — всё, что мы узнали на практике.
Зачем вообще локальные модели?
Три главные причины, по которым компании выбирают self-hosted LLM:
1. Безопасность и соответствие нормативам
Многие отрасли запрещают передачу данных третьим лицам:
- Банки и финтех (152-ФЗ, требования ЦБ)
- Медицина (данные пациентов)
- Государственные структуры (гостайна)
- Крупные корпорации (коммерческая тайна)
Облачные API = утечка данных. При работе с Claude или GPT все ваши запросы уходят на серверы в США.
2. Экономика на масштабе
Сравним затраты на 1M токенов:
- GPT-4 Turbo: $10 input / $30 output
- Claude Opus: $15 input / $75 output
- Локальная Llama 3.1 70B: $0 после развёртывания
При обработке 100M токенов в месяц разница составляет $75,000 против $0 (не считая инфраструктуры).
Точка окупаемости для Llama 3.1 70B — примерно 50M токенов в месяц.
3. Независимость и контроль
- Нет рисков блокировки аккаунта
- Не зависите от uptime внешних сервисов
- Полный контроль над версией модели
- Можно делать fine-tuning под свои задачи
Выбор модели: наш чек-лист
По размеру задачи
| Задача | Рекомендуемая модель | Минимальная VRAM |
|---|---|---|
| Простые классификации, извлечение данных | Llama 3.2 3B | 8GB |
| Генерация текстов, саппорт | Qwen 2.5 14B | 16GB |
| Сложный анализ, код | Llama 3.1 70B | 80GB |
| Экспертный уровень | Qwen 2.5 72B | 80GB |
Модели, которые мы используем чаще всего
1. Llama 3.1 70B (Meta)
Плюсы:
- Отличное качество на русском языке
- Большой контекст (128K токенов)
- Активное сообщество
- Хорошая документация
Минусы:
- Требует много VRAM
- Медленная инференс-скорость без квантизации
2. Qwen 2.5 (Alibaba)
Плюсы:
- Лучшее качество на русском среди open-source
- Семейство моделей от 3B до 72B
- Отличная работа с кодом
- Быстрая инференс
Минусы:
- Меньше материалов на русском
- Некоторые версии нестабильны
3. Mistral Large
Плюсы:
- Отличное соотношение качество/скорость
- Хорошая инструкция following
- Эффективная квантизация
Минусы:
- Русский язык хуже, чем у Qwen и Llama
- Меньший контекст (32K)
Инфраструктура: что нужно для запуска
Минимальная конфигурация (для dev/staging)
CPU: 16+ cores
RAM: 64GB
GPU: NVIDIA A100 40GB или 2x RTX 4090
Storage: 500GB NVMe SSD
Стоимость: около 300-400k₽ на железо или 50-80k₽/мес в облаке.
Production-конфигурация
CPU: 32+ cores (для препроцессинга)
RAM: 128GB+
GPU: 2x NVIDIA A100 80GB или H100
Storage: 1TB NVMe SSD (для моделей и кэша)
Network: 10Gbit для быстрой загрузки моделей
Стоимость: 1.5-2M₽ на железо или 150-250k₽/мес в облаке.
Облака vs собственное железо
Облако (Яндекс Cloud, VK Cloud):
- Быстрый старт (запуск за 1 день)
- Легко масштабировать
- Платишь только за использование
- Меньше headcount на DevOps
Своё железо:
- Ниже стоимость владения на длинной дистанции
- Полный контроль
- Нет зависимости от провайдера
- Требует DevOps-команду
Наша рекомендация: старт в облаке, переезд на железо при >150k₽/мес расходов.
Стек для развёртывания
1. Инференс-сервер
vLLM — наш выбор для production:
# Установка
pip install vllm
# Запуск с квантизацией AWQ
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-72B-Instruct-AWQ \
--quantization awq \
--dtype half \
--max-model-len 32768 \
--gpu-memory-utilization 0.95
Преимущества vLLM:
- PagedAttention для эффективного использования памяти
- Continuous batching (обработка нескольких запросов параллельно)
- OpenAI-compatible API
- Поддержка квантизации (AWQ, GPTQ)
Альтернативы:
- Text Generation Inference (Hugging Face) — проще, но медленнее
- llama.cpp — для CPU, очень медленно в production
- TensorRT-LLM — максимальная скорость, но сложная настройка
2. Оркестрация
LangServe + FastAPI:
from langserve import add_routes
from langchain.llms import VLLM
from fastapi import FastAPI
app = FastAPI(title="QZX LLM API")
llm = VLLM(
model="Qwen/Qwen2.5-72B-Instruct-AWQ",
trust_remote_code=True,
max_new_tokens=2048,
temperature=0.7,
)
add_routes(app, llm, path="/llm")
3. Мониторинг
Обязательные метрики:
- Latency (p50, p95, p99)
- Throughput (tokens/sec)
- GPU utilization
- VRAM usage
- Queue depth
- Error rate
Стек мониторинга:
- Prometheus для метрик
- Grafana для визуализации
- Jaeger для трейсинга
- ELK для логов
Квантизация: как уместить 70B модель в 40GB
Квантизация снижает precision весов модели с FP16 до INT8/INT4:
| Метод | VRAM для 70B | Качество | Скорость |
|---|---|---|---|
| FP16 (без квантизации) | 140GB | 100% | 1x |
| GPTQ 4-bit | 40GB | ~98% | 1.2x |
| AWQ 4-bit | 40GB | ~99% | 1.5x |
| GGUF Q4 | 38GB | ~97% | 0.8x |
AWQ (Activation-aware Weight Quantization) — наш выбор для production. Минимальная потеря качества при максимальном сжатии.
Как квантизировать модель
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer
model_path = "Qwen/Qwen2.5-72B-Instruct"
quant_path = "qwen2.5-72b-awq"
# Загрузка модели
model = AutoAWQForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
# Квантизация
quant_config = {
"zero_point": True,
"q_group_size": 128,
"w_bit": 4
}
model.quantize(tokenizer, quant_config=quant_config)
model.save_quantized(quant_path)
Production checklist
Перед выкаткой локальной LLM в production убедитесь:
- Настроен rate limiting (защита от DDOS)
- Работает автоматический restart при падении
- Настроен health check endpoint
- Логируются все запросы для аудита
- Есть система очередей для пиковых нагрузок
- Настроен graceful shutdown
- Работает мониторинг и алертинг
- Есть процедура rollback
- Написана документация для команды
Реальный кейс: Финтех-компания
Задача: обработка 200M токенов/месяц для анализа финансовых документов.
Выбор: Llama 3.1 70B AWQ на 2x A100 40GB
Инфраструктура:
- vLLM с continuous batching
- Redis для кэширования повторяющихся запросов
- Celery для очередей
- Prometheus + Grafana
Результаты:
- Latency p95: 2.3 секунды
- Throughput: 850 tokens/sec
- GPU utilization: 87%
- Экономия vs Claude API: 67,000₽/месяц
ROI: окупаемость за 3 месяца
Выводы
Локальные LLM — это не хайп, а необходимость для многих российских компаний:
✅ Полная конфиденциальность данных
✅ Экономия на масштабе
✅ Независимость от зарубежных сервисов
Но требуется:
- DevOps expertise
- Инвестиции в инфраструктуру
- Понимание ML оптимизаций
Порог входа: компании с обработкой >50M токенов/месяц или строгими требованиями к безопасности.
Нужна помощь с развёртыванием локальной LLM? Мы в QZX Studio имеем опыт запуска моделей от 3B до 405B параметров. Обсудим ваш проект.