Рекомендации по GPU для службы Azure Kubernetes (AKS)

Область применения: ✔️ AKS Automatic ✔️ AKS Standard

Для выполнения рабочих нагрузок GPU в AKS требуется правильная настройка и непрерывная проверка, чтобы вычислительные ресурсы были доступны, безопасны и оптимально используются. В этой статье описаны рекомендации по управлению узлами с поддержкой GPU, проверке конфигураций и сокращению прерываний рабочей нагрузки.

Для большинства рабочих нагрузок AKS по умолчанию рекомендуется использовать AKS Automatic. AKS Automatic предоставляет готовую к промышленной эксплуатации базовую конфигурацию с преднастроенными операционными процессами, механизмами безопасности и готовностью подов, гарантированной SLA, помогая командам сократить эксплуатационную нагрузку на платформу после развертывания.

Выберите AKS Automatic или AKS Standard для рабочих нагрузок GPU

Используйте следующие рекомендации в качестве отправной точки:

Сценарий Рекомендуемый путь Почему
Большинство производственных нагрузок на GPU AKS Automatic Настройки по умолчанию, готовые к промышленной эксплуатации, встроенные механизмы защиты и снижение операционных накладных расходов на управление кластером.
Быстрый путь от развертывания к стабильной рабочей среде AKS Automatic Предварительно настроенные операции кластера и прогнозируемое поведение запуска с помощью SLA готовности pod.
Расширенная настройка платформы и явное управление операциями AKS Standard Большая гибкость для управления жизненным циклом пользовательского пула узлов и настройки платформы.
Специализированные, не стандартные требования к архитектуре платформы AKS Standard Более ручное управление поведением и конфигурацией инфраструктуры.

Дополнительные сведения см. в статье Введение в Azure Kubernetes Service (AKS) Automatic.

Что AKS Automatic предоставляет для производственных GPU-нагрузок

AkS Automatic помогает создать надежные операционные базовые показатели для рабочих нагрузок GPU, предоставляя:

  • Настройки по умолчанию, готовые для промышленной эксплуатации, для конфигурации кластера.
  • Встроенные лучшие практики и механизмы защиты.
  • Готовность модуля pod с поддержкой SLA к предсказуемому поведению запуска.
  • Операции управляемого кластера, которые сокращают объём ручных задач второго дня.

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

Рабочие нагрузки GPU, такие как обучение модели ИИ, вывод в режиме реального времени, имитации и видеообработка, часто зависят от:

  • Правильная совместимость драйверов GPU и среды выполнения.
  • Точное планирование ресурсов GPU.
  • Доступ к аппаратным устройствам GPU внутри контейнеров.

Неправильные настройки могут привести к высоким затратам, непредвиденным сбоям заданий или недостаточному использовании GPU.

Принудительное размещение нагрузки на GPU

По умолчанию планировщик AKS размещает поды на любом доступном узле с достаточным количеством ресурсов ЦП и памяти. Без элементов управления размещением рабочей нагрузки могут возникнуть две проблемы:

  • Планировщик может размещать рабочие нагрузки GPU на узлах без gpu, что приводит к сбою запуска рабочих нагрузок.
  • Рабочие нагрузки общего назначения могут занимать узлы GPU, тратя дорогостоящие ресурсы.

Чтобы обеспечить корректное размещение:

  • Заклинируйте узлы GPU, используя такой ключ [gpu-vendor].com/gpu: NoSchedule (например, nvidia.com/gpu: NoSchedule). Этот тейнт не позволяет рабочим нагрузкам, не использующим GPU, размещаться на этих узлах.

  • Добавьте соответствующую терпимую нагрузку в спецификацию pod рабочей нагрузки GPU, чтобы ее можно было запланировать на незащищенных узлах GPU.

  • Определите в своём поде запросы и лимиты ресурсов GPU, чтобы планировщик зарезервировал ресурсы GPU. Рассмотрим пример.

    resources:
      limits:
        [gpu-vendor].com/gpu: 1
    
  • Используйте политики проверки или контроллеры допуска для принудительного применения рабочих нагрузок GPU, включающих необходимые ограничения и ограничения ресурсов.

Этот подход гарантирует, что только нагрузки, рассчитанные на GPU, размещаются на узлах с GPU и получают доступ к необходимым им специализированным вычислительным ресурсам.

В AKS Automatic по умолчанию параметры защиты платформы настраиваются по умолчанию. Вы по-прежнему применяете параметры размещения на уровне рабочей нагрузки, чтобы обеспечить строгие правила планирования GPU.

Проверка готовности к установке драйвера GPU и готовности среды выполнения

Перед развертыванием рабочих нагрузок GPU всегда убедитесь, что пулы узлов GPU:

  • Оснащен совместимыми драйверами GPU.
  • Размещение работоспособного модуля daemonSet для устройств Kubernetes.
  • Представление [gpu-vendor].com/gpu как планируемого ресурса.

Вы можете подтвердить текущую версию драйвера, запущенную в пулах узлов GPU, с помощью интерфейса управления системой (SMI), связанного с поставщиком GPU.

Следующая команда запускает nvidia-smi изнутри пода развертывания плагина устройств GPU, чтобы проверить установку драйвера и готовность среды выполнения в пуле узлов с поддержкой GPU NVIDIA:

kubectl exec -it $"{GPU_DEVICE_PLUGIN_POD}" -n {GPU_NAMESPACE} -- nvidia-smi

Выходные данные должны выглядеть примерно так:

+-----------------------------------------------------------------------------+
|NVIDIA-SMI 570.xx.xx    Driver Version: 570.xx.xx    CUDA Version: 12.x|
...
...

kubectl exec Повторите команду для каждого пула узлов GPU, чтобы подтвердить версию драйвера, установленную на узлах.

В ваших пулах узлов с графическими процессорами AMD можно также развернуть компоненты AMD GPU и выполнить команду amd-smi в pod’е плагина устройств ROCm, чтобы подтвердить установленную версию драйвера.

Обновление узлов с поддержкой GPU до последнего образа ОС узла

Чтобы обеспечить производительность, безопасность и совместимость рабочих нагрузок GPU в AKS, важно поддерживать пулы узлов GPU в актуальном состоянии с помощью последних рекомендуемых образов ОС узла. Эти обновления критически важны, так как они:

  • Включите последние драйверы GPU промышленного уровня, заменив устаревшие или достигшие конца жизненного цикла (EOL) их версии.
  • Полностью протестированы на совместимость с текущей версией Kubernetes.
  • Устранение известных уязвимостей, обнаруженных поставщиками GPU.
  • Включите последние улучшения среды выполнения ОС и контейнера для повышения стабильности и эффективности.

Обновите пулы узлов GPU до последнего рекомендуемого образа ОС узла, выпущенного AKS, путем установки канала автоматического обновления или обновления вручную. Вы можете следить за новыми версиями образов узлов и отслеживать их с помощью трекера выпусков AKS.

Для большинства рабочих сценариев начните с AKS Automatic в качестве базового плана по умолчанию. Если вы используете AKS Standard, явно настройте каналы обновления и периоды обслуживания.

Разделение рабочих нагрузок GPU при использовании общих кластеров

Если один кластер AKS с пулами узлов GPU выполняет несколько типов рабочих нагрузок GPU, таких как обучение моделей, вывод в режиме реального времени или пакетная обработка, важно разделить эти рабочие нагрузки следующим образом:

  • Избегайте случайного вмешательства или конфликтов ресурсов между различными типами рабочих нагрузок.
  • Повышение безопасности и поддержание границ соответствия требованиям.
  • Упрощение управления и мониторинга использования ресурсов GPU для каждой категории рабочей нагрузки.

Рабочие нагрузки GPU можно изолировать в одном кластере AKS с помощью пространств имен и политик сети. Это обеспечивает более четкое управление с помощью квот, ограничений и конфигураций ведения журнала для конкретных рабочих нагрузок.

Пример сценария

Рассмотрим кластер AKS с двумя различными типами рабочих нагрузок GPU, которые не должны взаимодействовать друг с другом:

  • Нагрузки при обучении: ресурсоёмкие задачи обучения моделей ИИ.
  • Нагрузки инференса: чувствительные к задержке сервисы инференса в реальном времени.

Чтобы разделить две рабочие нагрузки, выполните следующие действия.

  1. Создайте отдельные пространства имен для каждого типа нагрузки с помощью команды kubectl create namespace.

    kubectl create namespace gpu-training
    kubectl create namespace gpu-inference
    
  2. Пометьте поды рабочей нагрузки GPU по типу, как показано в следующем примере:

    metadata:
      namespace: gpu-training
      labels:
        workload: training
    
  3. Применение политик сети для изоляции трафика между типами рабочих нагрузок. Следующий манифест блокирует все входящий и исходящий трафик для gpu-training пространства имен (если только явно не разрешено):

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: deny-cross-namespace
      namespace: gpu-training
    spec:
      podSelector: {}
      policyTypes:
      - Ingress
      - Egress
      ingress: []
      egress: []
    

Эта политика:

  • Применяется ко всем подам в пространстве имен gpu-training.
  • Запрещает весь входящий и исходящий трафик по умолчанию, поддерживая строгой изоляции.

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

Оптимизируйте использование ресурсов на узлах с GPU с помощью технологии Multi-Instance GPU (MIG)

Разные рабочие нагрузки GPU имеют разные требования к памяти. Для небольших развертываний, таких как NVIDIA A100 40 ГБ, может не потребоваться весь GPU. Однако одна рабочая нагрузка по умолчанию монополизирует ресурс GPU даже при недостаточном использовании.

AKS поддерживает оптимизацию ресурсов на узлах GPU, разделяя их на меньшие разделы с помощью многоэкземплярного GPU (MIG), чтобы команды могли эффективнее планировать выполнение небольших задач. Узнайте больше о поддерживаемых размерах GPU и о том, как приступить к работе с несколькими экземплярами GPU в AKS.

Использование временных дисков данных NVMe в качестве высокопроизводительного кэша

Для рабочих нагрузок ИИ, работающих на виртуальных машинах GPU в AKS, быстрый и надежный доступ к временному хранилищу крайне важен для повышения производительности обучения и вывода. Временные диски данных NVMe обеспечивают высокую пропускную способность, хранилище с низкой задержкой, непосредственно подключенное к узлу виртуальной машины, что делает их идеальными для таких сценариев, как кэширование наборов данных, хранение промежуточных контрольных точек и весов моделей или предоставление места для предварительной обработки данных и аналитики.

При развертывании пулов узлов с поддержкой GPU для рабочих нагрузок ИИ настройте быстродействующие диски NVMe в качестве высокопроизводительного кэша или временного пространства. Этот подход помогает устранить узкие места ввода-вывода, ускорить операции с большим объемом данных и гарантировать, что графические процессоры (GPU) не простаивают в ожидании данных.

Azure поддерживает временные диски данных NVMe в различных семействах виртуальных машин GPU Azure. В зависимости от размера виртуальной машины GPU виртуальная машина имеет до восьми временных дисков данных NVMe с объединенной емкостью до 28 ТиБ. Подробные конфигурации размеров виртуальных машин см. в документации по серии ND H100 v5 или документации по размеру виртуальной машины для выбранного семейства GPU.

Чтобы упростить подготовку и управление, используйте хранилище контейнеров Azure, которое может автоматически обнаруживать и оркестрировать временные диски NVMe для рабочих нагрузок Kubernetes.

Рекомендуемые сценарии включают:

  • Кэширование больших наборов данных и контрольных точек модели для обучения ИИ и вывода.
  • Весы модели кэширования для вывода искусственного интеллекта. Например, модель размещения KAITO в виде артефактов OCI на локальном NVMe.
  • Предоставление быстрого пространства для пакетных заданий и конвейеров данных.

Это важно

Данные на эфемерных NVMe дисках являются временными и будут потеряны, если виртуальная машина де-активирована или повторно развернута. Используйте эти диски только для некритических, временных данных и хранения важных сведений о постоянных решениях службы хранилища Azure.

Для получения дополнительных рекомендаций по временным дискам данных NVMe см. Лучшие практики по работе с эфемерными дисками данных NVMe в AKS.

Дополнительные сведения о рабочих нагрузках AKS и GPU см. в следующих статьях: