Расчёт инфраструктуры для 1000 одновременных запросов к LLM | AiManual
AiManual Logo Ai / Manual.
11 Янв 2026 Гайд

Масштабирование LLM: как рассчитать инфраструктуру для 1000 одновременных запросов

Практическое руководство по масштабированию LLM-сервисов: от расчёта GPU и памяти до архитектуры для 1000 RPS. vLLM, TGI, Continuous Batching.

Когда 1000 пользователей нажимают "Отправить" одновременно

Вы запускаете образовательную платформу с ИИ-ассистентом. Утром начинается занятие - тысяча студентов одновременно открывают интерфейс и задают вопросы. Серверы молчат. База данных не отвечает. Билл от облачного провайдера приходит на сумму годового бюджета.

Знакомая история? Масштабирование LLM - это не просто "добавить ещё GPU". Это расчёт десятков параметров, понимание архитектурных компромиссов и знание, где система сломается первая.

Главная ошибка: начинать с выбора железа. Правильный путь: понять нагрузку → выбрать модель → оптимизировать инференс → рассчитать инфраструктуру.

Из чего складывается нагрузка в 1000 RPS

Запросы в секунду (RPS) - бессмысленная метрика для LLM. Два запроса: "2+2" и "Напиши эссе о влиянии квантовой физики на современную поэзию" - это разная нагрузка.

Параметр Типичное значение Влияние на инфраструктуру
Длина промпта (токены) 50-500 Определяет память для KV-кэша
Длина ответа (токены) 20-1000 Время инференса, потребление GPU
Задержка (P95) 1-5 секунд Количество параллельных запросов на GPU
Модель Llama 3 8B → 70B Память, скорость, точность
💡
Сначала соберите статистику по реальным запросам. Средняя длина промпта в образовательном контексте обычно 100-200 токенов, ответ - 300-500 токенов. Если у вас нет данных - используйте эти цифры как отправную точку.

Continuous Batching: магия, без которой ничего не работает

Представьте ресторан, где каждый посетитель заказывает одно блюдо, повар готовит его, подаёт, и только потом берёт следующий заказ. Так работал инференс LLM до появления Continuous Batching.

Теперь представьте, что повар готовит 100 блюд одновременно: картошку для всех, потом мясо, потом салат. Это Continuous Batching. vLLM и Text Generation Inference (TGI) используют эту технику.

1 Выбор модели: компромисс между качеством и стоимостью

Для образовательного ассистента не нужна Llama 3 70B. Llama 3 8B справится с 90% задач. Разница в инфраструктуре:

  • Llama 3 8B: помещается в одну A100 40GB с запасом
  • Llama 3 70B: требует 2-4 A100 или специализированной оптимизации
  • Производительность: 8B даёт ~100 токенов/сек, 70B - ~20 токенов/сек на том же железе

Если нужна точность - рассмотрите сравнение моделей для специализированных задач.

2 Расчёт GPU: не только память, но и tensor cores

Формула для грубого расчёта количества GPU:

# Пример расчёта для Llama 3 8B, 1000 RPS
# Предположения:
# - Средний промпт: 150 токенов
# - Средний ответ: 350 токенов
# - Задержка P95: 2 секунды
# - vLLM с оптимизацией

import math

model_size_gb = 8  # Llama 3 8B в FP16
kv_cache_per_token_bytes = 128  # Примерно для Llama
batch_size_per_gpu = 64  # Зависит от GPU памяти
throughput_per_gpu = 500  # Токенов/сек на A100

tokens_per_request = 150 + 350  # Промпт + ответ
total_tokens_per_second = 1000 * tokens_per_request / 2  # Учитываем параллелизм

gpu_needed = math.ceil(total_tokens_per_second / throughput_per_gpu)
print(f"Требуется GPU: {gpu_needed}")

На практике для 1000 RPS с Llama 3 8B потребуется 8-12 A100 40GB или 16-24 A10/A6000. Почему такой разброс? Зависит от оптимизации.

3 Оптимизация: vLLM против TGI против кастомных решений

Решение Плюсы Минусы Для 1000 RPS
vLLM PagedAttention, высокая утилизация GPU Сложная настройка кластера Лучший выбор
TGI (HuggingFace) Простота, поддержка многих моделей Ниже производительность Требует на 20% больше GPU
Triton + собственный код Максимальная оптимизация Месяцы разработки Только для крупных компаний

vLLM с его PagedAttention даёт до 24x лучшее использование памяти по сравнению с наивной реализацией. Для 1000 RPS это разница между 10 и 40 GPU.

Не экономьте на инженере, который разбирается в Continuous Batching. Его зарплата окупится за месяц экономии на GPU.

4 Архитектура: один большой кластер или несколько маленьких?

Ошибка номер один - ставить все GPU в один сервер. Ограничения:

  • PCIe lanes: 8 GPU делят 128 линий, каждая получает x16 → x2 в реальности
  • NVLink: есть только в дорогих конфигурациях
  • Надёжность: падает один сервер - падает вся система

Лучшая архитектура для 1000 RPS:

# Пример архитектуры на Kubernetes
apiVersion: v1
kind: ConfigMap
metadata:
  name: vllm-config
data:
  tensor_parallel_size: "1"  # Одна модель на сервер
  max_num_seqs: "256"        # Максимальный батч
  gpu_memory_utilization: "0.9"
---
# 12 серверов, в каждом 2xA100
# 3 сервера - Llama 3 8B (основная нагрузка)
# 6 серверов - Llama 3 8B (пиковая нагрузка)
# 3 сервера - CodeLlama 13B (специализированные задачи)
---
# Load balancer распределяет запросы
# Мониторинг: Prometheus + Grafana с метриками:
# - Время обработки перцентили
# - Использование GPU памяти
# - Размер батча

Для экономии рассмотрите бюджетные 4-GPU фермы вместо монолитных серверов.

Что ломается первым при 1000 RPS

GPU - последнее, что упирается. Сначала падает:

  1. Сеть между инстансами: 1000 запросов × 500 токенов × 2 байта = 1 МБ на запрос. Это 1 ГБ/сек чистых данных. Добавьте overhead.
  2. Load balancer: Nginx по умолчанию обрабатывает ~10k соединений. Кажется много? Каждый запрос к LLM держит соединение 2-10 секунд.
  3. Система кеширования промптов: 30% промптов повторяются. Redis кластер должен выдержать 10k RPS.
  4. Мониторинг: Каждая метрика с 12 серверов × 8 GPU = 96 потоков данных. Prometheus съедает 32GB RAM.
💡
Перед запуском нагрузки проведите chaos-engineering тесты: отключайте серверы, насыщайте сеть, эмулируйте медленные диски. Система должна деградировать gracefully, а не падать полностью.

Стоимость: облако против железа на площадке

Для образовательного учреждения с постоянной нагрузкой своё железо выгоднее через 8-12 месяцев.

Вариант Капитальные расходы Операционные (месяц) Годовая стоимость
AWS (16xA100) 0 $70,000 $840,000
Своё железо $300,000 $5,000 $360,000
Микс: своё + облако на пик $200,000 $15,000 $380,000

Своё железо - это не только серверы. Нужен дата-центр, инженеры, резервное питание. Но для университета с существующей инфраструктурой - оптимальный выбор.

Чеклист для запуска

  • □ Профилировать реальную нагрузку (длины промптов, ответов)
  • □ Выбрать модель: начать с Llama 3 8B, проверить качество
  • □ Настроить vLLM с PagedAttention
  • □ Рассчитать GPU: (токены/сек) / (500-1000 токенов/сек на GPU)
  • □ Разделить на кластер: 2-4 GPU на сервер максимум
  • □ Настроить кеширование промптов (Redis Cluster)
  • □ Реализовать circuit breaker и fallback на более лёгкую модель
  • □ Настроить детальный мониторинг: задержки P50, P95, P99
  • □ Запустить нагрузочное тестирование с реалистичными сценариями

Не оптимизируйте преждевременно. Сначала запустите на минимальной конфигурации, измерьте реальные метрики, потом масштабируйте. В 30% случаев оказывается, что 1000 RPS - это пиковая нагрузка на 5 минут в день, а средняя - 50 RPS.

Что будет, когда придут 2000 пользователей

Хорошая архитектура масштабируется линейно до определённого предела. Плохая - требует перепроектирования.

Сценарий роста в 2 раза:

  • Хорошо: добавляем такие же серверы в кластер, настраиваем автоскейлинг
  • Плохо: обнаруживаем, что load balancer не справляется, сеть между стойками перегружена, система кеширования не масштабируется

Решение: изначально проектировать с запасом 3-5x. Не по железу, а по архитектурным ограничениям.

Самое интересное: после 10,000 RPS экономически выгоднее перейти на специализированные кластеры с оптимизированными под вашу модель кастомными CUDA ядрами. Но это уже другая история.

Главный секрет: 1000 одновременных запросов - это не про железо. Это про архитектуру, которая превращает дорогие GPU в работающий сервис. Начните с мониторинга, закончите автоматическим масштабированием. И никогда не верьте продавцам, которые говорят "просто добавьте ещё GPU".