Оглавление

Традиционный монолитный подход к развертыванию больших языковых моделей (LLM) постепенно упирается в физические ограничения оборудования. Главная проблема заключается в неоднородности самого процесса генерации: этапы обработки входного контекста (prefill) и генерации токенов (decode) имеют диаметрально противоположные требования к вычислительным ресурсам. Как сообщает NVIDIA Developer, индустрия переходит к дезагрегированной архитектуре, разделяя эти стадии на независимые сервисы внутри Kubernetes.

Стадия prefill является вычислительно плотной и эффективно утилизирует тензорные ядра для параллельной обработки промпта. Напротив, decode ограничен пропускной способностью памяти (memory-bandwidth bound), так как генерирует токены последовательно. В монолитной схеме GPU вынужден постоянно переключаться между этими режимами, что приводит к неоптимальному использованию дорогостоящих чипов и невозможности точечного масштабирования узких мест.

Механизмы оркестрации и проблема «голодания» ресурсов

Перенос дезагрегированного инференса в Kubernetes требует более сложных стратегий планирования, чем стандартный Round Robin. Ключевым фактором производительности становится топологическая связность: размещение групп Tensor Parallel (TP) внутри одной стойки с использованием NVLink критично для минимизации задержек при передаче KV-кэша между стадиями prefill и decode.

Для управления такими нагрузками применяются продвинутые методы планирования:

  • Gang scheduling: гарантирует аллокацию всех подов группы одновременно, исключая ситуацию, когда часть ресурсов забронирована, но приложение не может запуститься.
  • Иерархическое планирование: обеспечивает атомарность развертывания как для отдельных TP-групп, так и для всей системы в целом, предотвращая захват всех GPU одной ролью в ущерб другой.
  • Topology-aware placement: учитывает физическую структуру кластера для оптимизации межсоединений.

Реализация этих стратегий ложится на плечи специализированных планировщиков, таких как KAI Scheduler, и абстракций уровня приложения вроде LeaderWorkerSet (LWS) или NVIDIA Grove. Последний позволяет декларативно описывать зависимости между ролями, например, запрещая запуск воркеров до готовности роутера.

Масштабирование и операционные вызовы

Автомасштабирование дезагрегированных систем требует учета специфических метрик: времени до первого токена (TTFT) для prefill и межтокенной задержки (ITL) для decode. Использование стандартного HPA (Horizontal Pod Autoscaler) по загрузке CPU/GPU здесь малоэффективно, так как оно не учитывает баланс между стадиями. Если расширить prefill-мощности без соразмерного увеличения decode-воркеров, в системе возникнет затор на этапе передачи данных.

Разделение фаз инференса выглядит логичным инженерным решением, однако оно кратно усложняет сетевой стек кластера. Перенос KV-кэша между узлами становится новой точкой отказа, которая может нивелировать выигрыш от высокой утилизации GPU. Пока вендоры предлагают проприетарные обвязки для координации ролей, архитектура остается заложником специфических реализаций планировщиков. Это эффективная оптимизация для гигантов, но избыточная сложность для тех, кто не научился полностью загружать хотя бы один H100.

Фреймворки вроде NVIDIA Dynamo и llm-d пытаются решить эту проблему на уровне аппликативного слоя. Dynamo использует предиктивные модели для прогнозирования спроса и вычисления оптимального соотношения реплик, исходя из профилированных кривых пропускной способности. В свою очередь, Grove предлагает концепцию PodCliqueSet, объединяющую управление жизненным циклом, топологию и масштабирование всех компонентов инференс-пайплайна в едином ресурсе Kubernetes.

Выбор между использованием разрозненных LWS-ресурсов и интегрированных решений вроде Grove зависит от зрелости платформенной команды. В то время как LWS дает гибкость в обновлении компонентов, Grove минимизирует риски несовместимости версий при рассинхронизированном деплое, что критично для быстро меняющихся LLM-стеков.