Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Некоторые графические процессоры NVIDIA можно разделить на до семи независимых экземпляров. Каждый экземпляр имеет собственный мультипроцессор Stream (SM), который отвечает за выполнение инструкций параллельно, и собственную память GPU. Дополнительные сведения о секционирования GPU см. в разделе NVIDIA MIG.
В этой статье рассказывается, как создать пул GPU-узлов с несколькими экземплярами, используя размер виртуальной машины, совместимый с MIG, в кластере Azure Kubernetes Service (AKS).
Предварительные требования и ограничения
- Учетная запись Azure с активной подпиской. Если ее нет, можно создать учетную запись бесплатно.
- Azure CLI версии 2.2.0 или более поздней версии, установленной и настроенной. Чтобы узнать версию, выполните команду
az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0. - Клиент командной строки Kubernetes, kubectl, установленный и настроенный. Если вы используете Azure Cloud Shell,
kubectlуже установлен. Если вы хотите установить его локально, можно использоватьaz aks install-cliкоманду. - Helm версии 3 установлен и настроен. Дополнительные сведения об установке Helm см. в Установка Helm.
- В настоящее время многоэкземплярная GPU поддерживается для размеров виртуальных машин
Standard_NC40ads_H100_v5,Standard_ND96isr_H100_v5и на базе GPU A100 на платформе AKS.
Профили экземпляров 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 7g.40gb | 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.
Подтверждение возможности использования мульти-инстанс 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, см. в следующей статье: