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:
Отметьте GPU-узлы для планирования с HAMi, добавив метку
gpu=on, без данной метки узлы не смогут управляться планировщиком:kubectl label nodes <nodeid> gpu=onОпционально. Добавьте репозиторий HAMi:
helm repo add hami-charts <repoexample>/HAMi/Где
<repoexample>в зависимости от размещения:ссылка на удаленный репозиторий;
путь к локальному репозиторию.
Для развертывания выполните:
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 (опционально, целое число)Убедитесь, что pod
hami-device-pluginиhami-schedulerв пространстве именkube-systemнаходятся в состоянииRunning:kubectl get pods -n kube-system