Проблема классического autoscaling для LLM
Традиционные подходы к масштабированию, основанные на CPU-метриках, не работают для LLM-инференса. GPU может показывать 60% утилизации, в то время как очередь запросов уже переполнена, так как метрика отражает арифметическую интенсивность, а не давление на систему. Кроме того, холодный старт новой реплики (загрузка весов в VRAM) занимает несколько минут, что делает невозможным реакцию на внезапные пики трафика.
Together AI предлагает баланс между перепрограммированием (оплата простаивающих GPU) и недопрограммированием (резкий рост TTFT с 200 мс до 15 секунд). Система использует пропорциональный контроллер: количество желаемых реплик рассчитывается как ceil(N × observed/target), с добавлением окон сглаживания для предотвращения колебаний.
8 метрик для точного контроля
Платформа позволяет выбирать метрики, разделенные на три категории: Concurrency-driven (опережающие), SLO-driven (отложенные/latency-based) и Efficiency-driven (стоимостные). Выбор метрики критичен: например, метрики скорости декодирования работают только при потоковой передаче данных (streaming).
| Метрика | Что измеряет | Тип | Когда использовать |
|---|---|---|---|
| inflight_requests | Количество одновременных запросов на реплику | AVERAGE_VALUE | Базовый вариант. Надежный, опережающий индикатор. |
| ttft (p95) | Время до первого токена | VALUE • percentile | Когда есть SLO на скорость отклика (например, < 1 сек). |
| e2e_latency | Полная задержка запроса | VALUE • percentile | SLO на время полного завершения генерации. |
| gpu_utilization | Процент занятости GPU | UTILIZATION (0–100) | Оптимизация затрат, где допустима вариативность задержек. |
| token_utilization | Использование токеном-емкости | UTILIZATION | Пакетная обработка и работа на пределе возможностей движка. |
| throughput_per_replica | Токенов/сек на реплику | AVERAGE_VALUE | Пайплайны с длительной генерацией. |
| decoding_speed | Токенов/сек на запрос | VALUE | Защита скорости генерации для каждого пользователя. |
| cache_hit_rate | Эффективность префикс-кэша | UTILIZATION | Специфичные сценарии с высокой нагрузкой на кэш. |
Настройка окон масштабирования
Ключевая особенность системы — асимметричные окна масштабирования, которые нужно настраивать под распределение трафика:
- scale_up_window (рекомендуется коротким, например, 60с): определяет, как быстро система добавляет реплики. Ошибка здесь стоит денег (лишние минуты работы GPU), но промедление стоит пользователям высокой задержки.
- scale_down_window (по умолчанию 5 минут): определяет, как долго система ждет спада трафика перед удалением реплик. Ошибка здесь стоит денег (холодный старт при следующем пике) и времени.
Пример конфигурации
Для настройки политики используется команда PATCH. Ниже пример, где система масштабируется по метрике TTFT (p95 < 500 мс), с диапазоном от 1 до 6 реплик:
tg beta endpoints update $DEPLOYMENT_ID \
--min-replicas 1 --max-replicas 6 \
--scale-up-window 60s --scale-down-window 300s \
--scaling-metric ttft --scaling-target 500 --scaling-percentile p95
Важно: масштабирование до нуля (scale-to-zero) не поддерживается в автоматическом режиме. Установка min=0, max=0 полностью останавливает деплоймент и прекращает биллинг, но для запуска требуется явное действие.
Источник: Together AI ↗
