Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Algunas GPU nvidia se pueden dividir en hasta siete instancias independientes. Cada instancia tiene su propio multiprocesador de secuencias (SM), que es responsable de ejecutar instrucciones en paralelo y memoria de GPU. Para más información sobre la creación de particiones de GPU, consulte NVIDIA MIG.
En este artículo se explica cómo crear un grupo de nodos de GPU de varias instancias mediante un tamaño de máquina virtual compatible con MIG en un clúster de Azure Kubernetes Service (AKS).
Requisitos previos y limitaciones
- Una cuenta de Azure con una suscripción activa. En caso de no tener una, puede crear una cuenta gratuita.
- CLI de Azure versión 2.2.0 o posterior instalada y configurada. Ejecute
az --versionpara encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure. - El cliente de línea de comandos de Kubernetes, kubectl, instalado y configurado. Si usa Azure Cloud Shell,
kubectlya está instalado. Si quiere instalarlo localmente, puede usar el comandoaz aks install-cli. - Helm v3 instalado y configurado. Para más información, consulte Instalación de Helm.
- Los grupos de nodos de GPU de varias instancias no se admiten actualmente en Azure Linux.
- La GPU de instancias múltiples se admite actualmente en los tamaños de máquina virtual GPU
Standard_NC40ads_H100_v5,Standard_ND96isr_H100_v5y A100 en AKS.
Perfiles de instancia de GPU
Los perfiles de instancia de GPU definen cómo se particionan las GPU. La siguiente tabla muestra el perfil de instancia de GPU disponible para el Standard_ND96asr_v4:
| Nombre del perfil | Fracción de SM | Fracción de memoria | Número de instancias creadas |
|---|---|---|---|
| MIG 1 g,5 Gb | 1/7 | 1/8 | 7 |
| MIG 2g.10gb | 2/7 | 2/8 | 3 |
| MIG 3g. 20GB | 3/7 | 4/8 | 2 |
| MIG 4g.20GB | 4/7 | 4/8 | 1 |
| MIG 7g, 40gb | 7/7 | 8/8 | 1 |
Por ejemplo, el perfil de instancia de GPU de MIG 1g.5gb indica que cada instancia de GPU tiene 1g SM (multiprocesadores de streaming) y 5 GB de memoria. En este caso, la GPU se divide en siete instancias.
Los perfiles de instancia de GPU disponibles para este tamaño de máquina virtual incluyen MIG1g, MIG2g, MIG3g, MIG4g y MIG7g.
Importante
No se puede cambiar el perfil de instancia de GPU aplicado después de la creación del grupo de nodos.
Creación de un clúster de AKS
Cree un grupo de recursos de Azure con el comando
az group create.az group create --name myResourceGroup --location southcentralusCree un clúster de AKS mediante el
az aks createcomando.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --generate-ssh-keysConfigure
kubectlpara conectarse a su clúster AKS mediante el comandoaz aks get-credentials.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Creación de un grupo de nodos de GPU de instancias múltiples
Puede usar la CLI de Azure o una solicitud HTTP a la API de ARM para crear el grupo de nodos.
Cree un grupo de nodos de GPU de varias instancias mediante el comando
az aks nodepool addy especifique el perfil de instancia de GPU. En el ejemplo siguiente se crea un grupo de nodos con el tamaño de máquina virtual de GPU compatible con MIGStandard_ND96asr_v4.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
Determinación de la estrategia de GPU (MIG) de varias instancias
Antes de instalar los complementos de NVIDIA, debe especificar qué estrategia de GPU multiinstancia (MIG) usar para el particionamiento de la GPU: Estrategia única o Estrategia mixta. Las dos estrategias no afectarán a la forma en que se ejecutan las cargas de trabajo de la CPU, sino a cómo se muestran los recursos de la GPU.
-
Estrategia única: la estrategia única trata cada instancia de GPU como una GPU. Si usa esta estrategia, los recursos de GPU se muestran como
nvidia.com/gpu: 1. -
Estrategia mixta: la estrategia mixta expone las instancias de la GPU y el perfil de instancia de la GPU. Si usa esta estrategia, el recurso de GPU se muestra como
nvidia.com/mig1g.5gb: 1.
Instalar el complemento de dispositivo NVIDIA y los componentes de detección de características de GPU (GFD)
Establezca la estrategia de MIG como una variable de entorno. Puede usar una estrategia única o mixta.
# Single strategy export MIG_STRATEGY=single # Mixed strategy export MIG_STRATEGY=mixedAgregue el repositorio Helm del complemento de dispositivos NVIDIA mediante los comandos
helm repo addyhelm repo update.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin helm repo updateInstale el complemento de dispositivo NVIDIA mediante el comando
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
Nota:
La instalación de Helm del complemento de dispositivo NVIDIA consolida el complemento de dispositivo Kubernetes y los repositorios GFD. No se recomienda una instalación independiente de Helm del componente de software GFD cuando se utiliza una GPU de varias instancias administrada por AKS.
Confirmación de la funcionalidad de GPU de instancias múltiples
Compruebe la conexión
kubectlal clúster mediante el comandokubectl getpara devolver una lista de nodos de clúster.kubectl get nodes -o wideConfirme que el nodo tiene la funcionalidad de GPU de varias instancias mediante el comando
kubectl describe node. En el siguiente comando de ejemplo se describe el nodo denominado aksMigNode, que usa MIG1g como perfil de instancia de GPU.kubectl describe node aksMigNodeLa salida debería ser similar a la salida de ejemplo siguiente:
# Single strategy output Allocatable: nvidia.com/gpu: 56 # Mixed strategy output Allocatable: nvidia.com/mig-1g.5gb: 56
Programación del trabajo
Los ejemplos siguientes se basan en la imagen base de CUDA versión 12.1.1 para Ubuntu 22.04, etiquetada como 12.1.1-base-ubuntu22.04.
Estrategia única
Cree un archivo denominado
single-strategy-example.yamly cópielo en el siguiente código manifiesto.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": 1Implemente la aplicación mediante el comando
kubectl applyy especifique el nombre del manifiesto de YAML.kubectl apply -f single-strategy-example.yamlCompruebe los dispositivos GPU asignados mediante el comando
kubectl exec. Este comando devuelve una lista de los nodos del clúster.kubectl exec nvidia-single -- nvidia-smi -LEl ejemplo siguiente se parece a la salida que muestra las implementaciones y servicios creados correctamente:
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)
Estrategia mixta
Cree un archivo denominado
mixed-strategy-example.yamly cópielo en el siguiente código manifiesto.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": 1Implemente la aplicación mediante el comando
kubectl applyy especifique el nombre del manifiesto de YAML.kubectl apply -f mixed-strategy-example.yamlCompruebe los dispositivos GPU asignados mediante el comando
kubectl exec. Este comando devuelve una lista de los nodos del clúster.kubectl exec nvidia-mixed -- nvidia-smi -LEl ejemplo siguiente se parece a la salida que muestra las implementaciones y servicios creados correctamente:
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)
Importante
La etiqueta latest para las imágenes CUDA ha quedado en desuso en Docker Hub. Consulte el repositorio de NVIDIA para ver las imágenes más recientes y sus etiquetas correspondientes.
Solución de problemas
Si no ve la capacidad de la GPU multiinstancia después de crear el grupo de nodos, confirme que la versión de la API no es anterior a 2021-08-01.
Pasos siguientes
Para más información sobre las GPU en Azure Kubernetes Service, consulte: