LeaderWorkerSet#

LeaderWorkerSet (LWS) – компонент DropApp, позволяющий управлять группой pod при развертывании языковых моделей, как единицы репликации. В группе pod один pod выступает pod-лидером, координирующим работу остальных рабочих pod в рамках единого объекта развертывания. Представляет собой новый тип контроллера в кластере – LeaderWorkerSet (вместо Deployment, StatefulSet, DaemonSet, Job, CronJob).

Предназначен для решения общих паттернов развертывания нагрузок инференса в области AI/ML, особенно для многохостовых нагрузок инференса, где большие языковые модели (LLM) будут разделены и запускаться на нескольких устройствах на нескольких узлах.

Основные функции и особенности LWS#

  • Двойной шаблон: реплика представляет собой группу, состоящую из одного pod-лидера (leader pod) и набора рабочих pod (worker pod), с возможностью указать шаблон для рабочих pod и опционально для pod-лидера.

  • Группа pod как единица: поддерживает строго управляемую группу, которая представляет собой «супер pod».

  • Уникальная идентичность pod: каждый pod в группе имеет индекс от 0 до n-1.

  • Параллельное создание: pod имеют одинаковый жизненный цикл и создаются одновременно.

  • Множественные реплики с идентичными спецификациями: поддерживает создание нескольких реплик группы pod. Каждая единое целое для поэтапного обновления, масштабирования и соответствует единой эксклюзивной топологии для размещения.

  • Подресурс масштабирования: доступна конечная точка для HPA, позволяющая динамически изменять количество реплик.

  • Обновление (Rollout) и поэтапное обновление (Rolling update): группы pod обновляются поочередно, а pod внутри группы вместе.

  • Topology-aware размещение: позволяет размещать pod из одной группы в одном топологическом домене на выбор.

  • All-or-nothing перезапуск для обработки ошибок: обеспечивает восстановление всех pod в группе, если один из них неисправен или контейнер был перезапущен.

Пример конфигурации#

Пример конфигурационного файла LeaderWorkerSet lws.yaml:

apiVersion: leaderworkerset.x-k8s.io/v1
kind: LeaderWorkerSet
metadata:
  name: leaderworkerset
spec:
  replicas: 3 # Количество реплик
  leaderWorkerTemplate: # Шаблон для pod-лидера и включение размера группы pod
    size: 4 # Количество контейнеров в группе pod-лидера
    workerTemplate:
      spec:
        containers:
        - name: <container-name> # Пример реплицируемого контейнера
          image: <image-name>
          resources:
            limits:
              cpu: "100m"
            requests:
              cpu: "50m"
          ports:
          - containerPort: 8080

KubeRay#

Начиная с версии DropApp 5.0.0 из состава поставки удален инструмент KubeRay. Функциональность KubeRay доступна в LeaderWorkerSet.

Функции KubeRay в LeaderWorkerSet:

  • автоматизированное развертывание кластеров через CRD и Helm-чарты;

  • горизонтальное масштабирование на основе метрик DropApp (HPA) или пользовательских правил;

  • интеграция с API DropApp для управления ресурсами (pod, сервисы, конфигурации);

  • мониторинг и логирование через интеграцию с Prometheus, Grafana и Fluentd;

  • поддержка многопользовательских сценариев с изоляцией ресурсов через пространство имен;

  • управление зависимостями (Python-пакеты, Docker-образы) для воспроизводимости задач;

  • автоматическое восстановление pod и перераспределение задач;

  • гибкая конфигурация кластеров (ресурсы CPU/GPU, переменные среды).