Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Некоторые графические процессоры NVIDIA можно разделить на до семи независимых экземпляров. Каждый экземпляр имеет собственный мультипроцессор Stream (SM), который отвечает за выполнение инструкций параллельно, и собственную память GPU. Дополнительные сведения о секционирования GPU см. в разделе NVIDIA MIG.
В этой статье описывается, как создать пул узлов GPU с несколькими экземплярами с помощью размера виртуальной машины, совместимой с MIG, в кластере Azure Kubernetes Service (AKS).
Tip
Для полностью управляемого опыта использования MIG, при котором AKS устанавливает и поддерживает драйвер NVIDIA, подключаемый модуль устройства и экспортер метрик DCGM, см. статью "Создание пула узлов с несколькими экземплярами GPU (MIG) (предварительная версия)".
Предварительные требования и ограничения
- Учетная запись Azure с активной подпиской. Если ее нет, можно создать учетную запись бесплатно.
- Azure CLI версии 2.2.0 или более поздней версии, установленной и настроенной. Чтобы узнать версию, выполните команду
az --version. Если необходимо установить или обновить, см. раздел Install Azure CLI. - Клиент командной строки Kubernetes, kubectl, установленный и настроенный. Если вы используете Azure Cloud Shell,
kubectlуже установлен. Если вы хотите установить его локально, можно использоватьaz aks install-cliкоманду. - Helm версии 3 установлен и настроен. Дополнительные сведения об установке Helm см. в Установка Helm.
- В настоящее время многоэкземплярный GPU (MIG) поддерживается в AKS для серий размеров виртуальных машин с GPU NVIDIA A100, H100 и H200.
Профили экземпляров GPU
Профили экземпляров GPU определяют, как секционируются графические процессоры. В следующей таблице показан доступный профиль GPU-экземпляра для Standard_ND96asr_v4:
| Имя профиля | Доля SM | Доля памяти | Количество созданных экземпляров |
|---|---|---|---|
| MIG 1g,5gb | 1/7 | одна восьмая | 7 |
| MIG 2g.10gb | 2/7 | 2/8 | 3 |
| MIG 3г.20Гб | 3/7 | 4/8 | 2 |
| MIG 4г.20ГБ | 4/7 | 4/8 | 1 |
| MIG 7г.40ГБ | 7/7 | 8/8 | 1 |
Например, профиль MIG 1g.5gb экземпляра GPU указывает, что каждый экземпляр GPU имеет 1g SM (многопроцессоры потоковой передачи) и 5 гб памяти. В этом случае GPU секционируется на семь экземпляров.
Доступные профили экземпляров GPU для этого размера виртуальной машины включают MIG1g, MIG2g, MIG3g, MIG4g и MIG7g.
Внимание
После создания пула узлов не удается изменить примененный профиль экземпляра GPU.
Создание кластера AKS
Создайте группу ресурсов Azure с помощью команды
az group create.az group create --name myResourceGroup --location southcentralusСоздайте кластер AKS с помощью
az aks createкоманды.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --generate-ssh-keysНастройте
kubectl, чтобы подключиться к кластеру AKS с помощью командыaz aks get-credentials.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Создание многоэкземплярного пула узлов с GPU
Для создания пула узлов можно использовать Azure CLI или HTTP-запрос к API ARM.
Создайте пул узлов GPU с несколькими экземплярами с помощью
az aks nodepool addкоманды и укажите профиль экземпляра GPU. В приведенном ниже примере создается пул узлов с типом виртуальной машины GPU, совместимой сStandard_ND96asr_v4MIG.az aks nodepool add \ --name aksMigNode \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --node-vm-size Standard_ND96asr_v4 \ --node-count 1 \ --gpu-instance-profile MIG1g
Определение стратегии многоэкземплярного GPU (MIG)
Перед установкой подключаемых модулей NVIDIA необходимо указать стратегию многоэкземплярной GPU (MIG), которую следует использовать для секционирования GPU: отдельная стратегия или смешанная стратегия. Две стратегии не влияют на то, как выполняются рабочие нагрузки ЦП, но как отображаются ресурсы GPU.
-
Единая стратегия: одна стратегия обрабатывает каждый экземпляр GPU как GPU. Если вы используете эту стратегию, ресурсы GPU отображаются как
nvidia.com/gpu: 1. -
Смешанная стратегия: Смешанная стратегия открывает экземпляры GPU и профиль экземпляра GPU. Если вы используете эту стратегию, ресурсы GPU отображаются как
nvidia.com/mig1g.5gb: 1.
Установите подключаемый модуль устройства NVIDIA и компонент определения функций GPU (GFD)
Задайте стратегию MIG в качестве переменной среды. Можно использовать одну или смешанную стратегию.
# Single strategy export MIG_STRATEGY=single # Mixed strategy export MIG_STRATEGY=mixedДобавьте репозиторий helm для подключаемого модуля устройства NVIDIA, используя команды
helm repo addиhelm repo update.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin helm repo updateУстановите подключаемый модуль устройства NVIDIA с помощью команды
helm install.helm install nvdp nvdp/nvidia-device-plugin \ --version=0.17.0 \ --set migStrategy=${MIG_STRATEGY} \ --set gfd.enabled=true \ --namespace nvidia-device-plugin \ --create-namespace
Примечание.
Установка с помощью Helm плагина для устройств NVIDIA объединяет плагины для устройств Kubernetes и репозитории GFD. Отдельная установка helm программного компонента GFD не рекомендуется при использовании gpu с несколькими экземплярами AKS.
Примечание.
При развертывании подключаемого модуля устройства NVIDIA в Azure Linux с помощью настраиваемого манифеста DaemonSet вместо Helm необходимо включить переменную среды NVIDIA_MIG_MONITOR_DEVICES=all в контейнер подключаемого модуля устройства.
Подтверждение возможности использования мульти-инстанс GPU
kubectlПроверьте подключение к кластеру с помощьюkubectl getкоманды, чтобы вернуть список узлов кластера.kubectl get nodes -o wideУбедитесь, что узел имеет возможность GPU с несколькими экземплярами с помощью
kubectl describe nodeкоманды. В следующем примере команда описывает узел с именем aksMigNode, который использует MIG1g в качестве профиля экземпляра GPU.kubectl describe node aksMigNodeВыходные данные должны выглядеть примерно так:
# Single strategy output Allocatable: nvidia.com/gpu: 56 # Mixed strategy output Allocatable: nvidia.com/mig-1g.5gb: 56
Планирование задач
Следующие примеры основаны на базовом образе CUDA версии 12.1.1 для Ubuntu 22.04, помеченного как 12.1.1-base-ubuntu22.04.
Единая стратегия
Создайте файл
single-strategy-example.yamlи скопируйте в него следующий манифест.apiVersion: v1 kind: Pod metadata: name: nvidia-single spec: containers: - name: nvidia-single image: nvidia/cuda:12.1.1-base-ubuntu22.04 command: ["/bin/sh"] args: ["-c","sleep 1000"] resources: limits: "nvidia.com/gpu": 1Разверните приложение с помощью
kubectl applyкоманды и укажите имя манифеста YAML.kubectl apply -f single-strategy-example.yamlПроверьте выделенные устройства GPU с помощью
kubectl execкоманды. Эта команда возвращает список узлов кластера.kubectl exec nvidia-single -- nvidia-smi -LВ следующем примере показан результат, демонстрирующий успешно созданные развертывания и службы:
GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b) MIG 1g.5gb Device 0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c) MIG 1g.5gb Device 1: (UUID: MIG-3d4db13e-c42d-5555-98f4-8b50389791bc) MIG 1g.5gb Device 2: (UUID: MIG-de819d17-9382-56a2-b9ca-aec36c88014f) MIG 1g.5gb Device 3: (UUID: MIG-50ab4b32-92db-5567-bf6d-fac646fe29f2) MIG 1g.5gb Device 4: (UUID: MIG-7b6b1b6e-5101-58a4-b5f5-21563789e62e) MIG 1g.5gb Device 5: (UUID: MIG-14549027-dd49-5cc0-bca4-55e67011bd85) MIG 1g.5gb Device 6: (UUID: MIG-37e055e8-8890-567f-a646-ebf9fde3ce7a)
Смешанная стратегия
Создайте файл
mixed-strategy-example.yamlи скопируйте в него следующий манифест.apiVersion: v1 kind: Pod metadata: name: nvidia-mixed spec: containers: - name: nvidia-mixed image: nvidia/cuda:12.1.1-base-ubuntu22.04 command: ["/bin/sh"] args: ["-c","sleep 100"] resources: limits: "nvidia.com/mig-1g.5gb": 1Разверните приложение с помощью
kubectl applyкоманды и укажите имя манифеста YAML.kubectl apply -f mixed-strategy-example.yamlПроверьте выделенные устройства GPU с помощью
kubectl execкоманды. Эта команда возвращает список узлов кластера.kubectl exec nvidia-mixed -- nvidia-smi -LВ следующем примере показан результат, демонстрирующий успешно созданные развертывания и службы:
GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b) MIG 1g.5gb Device 0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c)
Внимание
Тег latest для образов CUDA не рекомендуется использовать в Docker Hub. Ознакомьтесь с репозиторием NVIDIA для последних образов и соответствующих тегов.
Устранение неполадок
Если после создания пула узлов не отображается возможность использования многоэкземплярной GPU, убедитесь, что версия API не старше 2021-08-01.
Следующие шаги
Дополнительные сведения о GPU в Служба Azure Kubernetes см. в следующей статье:
- Пулы узлов GPU под управлением AKS (предварительная версия) для полностью управляемого интерфейса MIG с драйвером, подключаемым модулем устройства и экспортером метрик DCGM.
- Сравните различные стратегии секционирования GPU NVIDIA, доступные на узлах AKS.
- Узнайте о вариантах использования рабочих нагрузок GPU в AKS.