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