KAI Scheduler#

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

KAI Scheduler поддерживает полный спектр рабочих нагрузок ИИ от легких интерактивных задач с минимальными требованиями к ресурсам до масштабных задач обучения и инференса в рамках одного кластера. Обеспечивает оптимальное распределение ресурсов, сохраняя сбалансированность между различными потребителями. Совместим с другими планировщиками, установленными в кластере.

Основные функции:

  • Обеспечивает одновременное планирование всех pod в группе или ни один из них не получает ресурсы до появления достаточных ресурсов в кластере.

  • Оптимизирует использование узлов за счет минимизации фрагментации (упаковка) или увеличения устойчивости и балансировки нагрузки (распределенное планирование).

  • Эффективное выделение приоритетов задачам в очередях.

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

  • Настройка квот, весов превышения квот, лимитов и приоритетов для каждой очереди.

  • Обеспечение сбалансированного распределения ресурсов с использованием DRF (Dominant Resource Fairness) и возврата ресурсов между очередями.

  • Перераспределение выполняющихся задач для сокращения фрагментации и повышения эффективности использования ресурсов кластера.

  • Динамическое масштабирование задач в пределах определенного минимального и максимального количества pod.

  • Поддержка специфических для поставщика ресурсов через ResourceClaims (например, GPU от NVIDIA или AMD).

  • Возможность эффективного разделения одного или нескольких GPU между несколькими задачами, что максимизирует использование ресурсов.

  • Полная совместимость с динамическими облачными инфраструктурами (включая автомасштабировщики, такие как Karpenter) и статичными локальными развертываниями.

Установка с помощью Helm#

Чтобы установить KAI Scheduler с помощью Helm:

  1. Добавьте репозиторий KAI Scheduler:

    helm repo add kai-scheduler <repoexample>/kai-scheduler/
    

    Где <repoexample> в зависимости от размещения:

    • ссылка на удаленный репозиторий;

    • путь к локальному репозиторию.

  2. Для развертывания выполните:

    helm install kai-scheduler kai-scheduler/kai-scheduler -n kai-scheduler
    

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

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: kai-scheduler
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: kai-scheduler
      template:
        metadata:
          labels:
            app: kai-scheduler
        spec:
          containers:
          - name: kai-scheduler
            image: <image>
            args:
            - "--kube-api-server=https://kubernetes.default.svc"
            - "--kube-api-secure=true"
            - "--kube-config=/etc/kubernetes/admin.conf"
            volumeMounts:
            - name: kube-config
              mountPath: /etc/kubernetes/admin.conf
              readOnly: true
          volumes:
          - name: kube-config
            hostPath:
              path: /etc/kubernetes/admin.conf
      strategy:
        type: Recreate
    
  3. Убедитесь, что pod kai-scheduler в пространстве имен kai-scheduler находятся в состоянии Running:

    kubectl get pods -n kai-scheduler