HAMi#

HAMi (Heterogeneous AI Multi-tenant Infrastructure) - инструмент продукта DropApp, предназначенный для виртуализации и управления AI-ускорителями различных типов (GPU, NPU и др.). Обеспечивает совместное использование устройств между pod, принимает оптимальные решения о размещении на основе топологии устройств и политик планирования. Упрощает работу между различными типами ускорителей и предоставляет единый интерфейс управления.

Виртуализация устройств#

HAMi обеспечивает виртуализацию нескольких устройств, включая GPU, например, NVIDIA GPU – подробнее в разделе «GPU Operator». Инструмент поддерживает совместное использование устройств и изоляцию их ресурсов.

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

  • Совместное использование устройств (шеринг): несколько контейнеров могут одновременно использовать одно или несколько физических устройств в зависимости от настроек политики шеринга.

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

  • Нулевая модификация: не нужно менять код существующих приложений.

  • Единый интерфейс: одинаковый способ управления не зависимо от типа AI-ускорителя.

  • Динамическое управление: поддержка функции dynamic-mig с использованием MIG Parted для динамической настройки MIG-устройств.

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

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

  1. Отметьте GPU-узлы для планирования с HAMi, добавив метку gpu=on, без данной метки узлы не смогут управляться планировщиком:

    kubectl label nodes <nodeid> gpu=on
    
  2. Опционально. Добавьте репозиторий HAMi:

    helm repo add hami-charts <repoexample>/HAMi/
    

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

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

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

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

    helm install hami hami-charts/hami -n kube-system
    

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

    apiVersion: v1
    kind: Pod
    metadata:
      name: gpu-pod
    spec:
      containers:
        - name: ubuntu-container
          image: ubuntu:22.04
          command: ["bash", "-c", "sleep 86400"]
          resources:
            limits:
              nvidia.com/gpu: 1 # количество физических GPU, необходимых для pod
              nvidia.com/gpumem: 3000 # объем памяти GPU, который каждый физический GPU выделяет pod (опционально, целое число)
              nvidia.com/gpucores: 30 # доля вычислительных ядер GPU, которую каждый физический GPU выделяет pod (опционально, целое число)
    
  4. Убедитесь, что pod hami-device-plugin и hami-scheduler в пространстве имен kube-system находятся в состоянии Running:

    kubectl get pods -n kube-system