Többpéldányos GPU-csomópontkészlet létrehozása az Azure Kubernetes Service-ben (AKS)

Egyes NVIDIA GPU-k legfeljebb hét független példányra oszthatók. Minden példány saját Stream Multiprocessor (SM) szolgáltatással rendelkezik, amely az utasítások párhuzamos végrehajtásáért és a GPU-memóriáért felelős. További információ a GPU particionálásáról: NVIDIA MIG.

Ez a cikk bemutatja, hogyan hozhat létre többpéldányos GPU-csomópontkészletet egy az Azure Kubernetes Service (AKS)-fürtben MIG-kompatibilis VM-méret használatával.

Jótanács

A teljes körűen felügyelt MIG-élményért, ahol az AKS telepíti és karbantartja az NVIDIA-illesztőprogramot, az eszköz beépülő modulját és a DCGM-metrikák exportőrét, tekintse meg a felügyelt többpéldányos GPU-csomópontkészlet (előzetes verzió) létrehozását.

Előfeltételek és korlátozások

  • Aktív előfizetéssel rendelkező Azure fiók. Ha nem rendelkezik ilyen fiókkal, ingyenesen létrehozhat fiókot.
  • Azure CLI 2.2.0-s vagy újabb verzió van telepítve és konfigurálva. A verzió azonosításához futtassa a következőt: az --version. Ha telepítenie vagy frissítenie kell, tekintse meg a Install Azure CLI című témakört.
  • A Kubernetes parancssori ügyfele, a kubectl, telepítve és konfigurálva van. Ha Azure Cloud Shell használ, a kubectl már telepítve van. Ha helyileg szeretné telepíteni, használhatja a az aks install-cli parancsot.
  • A Helm v3 telepítve és konfigurálva van. További információ: A Helm telepítése.
  • A többpéldányos GPU jelenleg az NVIDIA A100, H100 és H200 sorozatú GPU virtuálisgép-méreteken támogatott az AKS-en.

GPU-példányprofilok

A GPU-példányprofilok határozzák meg a GPU-k particionálásának módját. Az alábbi táblázat a rendelkezésre álló GPU-példányprofilt mutatja be a Standard_ND96asr_v4következőhöz:

Profil név SM törtrésze Memória aránya Létrehozott példányok száma
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, 20 GB 4/7 4/8 1
MIG 7g 40gb 7/7 8/8 1

A GPU-példány profilja MIG 1g.5gb például azt jelzi, hogy minden GPU-példány 1g SM-sel (többprocesszoros streameléssel) és 5 GB memóriával rendelkezik. Ebben az esetben a GPU hét példányra van particionálva.

Az ehhez a virtuálisgép-mérethez elérhető GPU-példányprofilok a következők: MIG1g, MIG2g, MIG3g, MIG4gés MIG7g.

Fontos

A csomópontkészlet létrehozása után nem módosíthatja az alkalmazott GPU-példányprofilt.

AKS-fürt létrehozása

  1. Hozzon létre egy Azure erőforráscsoportot a az group create paranccsal.

    az group create --name myResourceGroup --location southcentralus
    
  2. Hozzon létre egy AKS-fürtöt a(z) az aks create parancs használatával.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --generate-ssh-keys
    
  3. Konfigurálja kubectl az AKS-fürthöz való csatlakozáshoz a az aks get-credentials parancs használatával.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

Többpéldányos GPU-csomópontkészlet létrehozása

A csomópontkészlet létrehozásához használhatja a Azure CLI vagy az ARM API-hoz küldött HTTP-kérést.

  • Hozzon létre egy többpéldányos GPU-csomópontkészletet a az aks nodepool add parancs használatával, és adja meg a GPU-példány profilját. Az alábbi példa egy MIG-kompatibilis GPU virtuálisgép-mérettel rendelkező Standard_ND96asr_v4 csomópontkészletet hoz létre.

    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
    

Többpéldányos GPU-stratégia (MIG) meghatározása

Az NVIDIA beépülő modulok telepítése előtt meg kell adnia, hogy melyik többpéldányos GPU-stratégiát (MIG) használja a GPU particionálásához: egyetlen stratégia vagy vegyes stratégia. A két stratégia nem befolyásolja a processzorterhelések végrehajtását, hanem a GPU-erőforrások megjelenítését.

  • Egyetlen stratégia: Az egyetlen stratégia minden GPU-példányt GPU-ként kezel. Ha ezt a stratégiát használja, a GPU-erőforrások a következőképpen jelennek meg nvidia.com/gpu: 1: .
  • Vegyes stratégia: A vegyes stratégia a GPU-példányokat és a GPU-példány profilját teszi elérhetővé. Ha ezt a stratégiát használja, a GPU-erőforrások a következőképpen jelennek meg nvidia.com/mig1g.5gb: 1: .

Az NVIDIA eszköz beépülő moduljának és GPU-funkciófelderítési (GFD) összetevőinek telepítése

  1. Állítsa be a MIG-stratégiát környezeti változóként. Használhat egyetlen vagy vegyes stratégiát is.

    # Single strategy
    export MIG_STRATEGY=single
    
    # Mixed strategy
    export MIG_STRATEGY=mixed
    
  2. Adja hozzá az NVIDIA plugin helm-adattárat a helm repo add és helm repo update parancsok használatával.

    helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
    helm repo update
    
  3. Telepítse az NVIDIA eszköz beépülő modult a helm install paranccsal.

    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
    

Megjegyzés

Az NVIDIA eszköz beépülő modul Helm-telepítése összevonja a Kubernetes eszköz beépülő modult és a GFD-adattárakat. A GFD szoftverösszetevő különálló helm-telepítése nem ajánlott az AKS által felügyelt többpéldányos GPU használata esetén.

Megjegyzés

Ha az NVIDIA eszköz beépülő modult a Helm helyett egy egyéni DaemonSet-jegyzéken keresztül telepíti Azure Linuxon, akkor az eszköz beépülő modultárolójában fel kell vennie a NVIDIA_MIG_MONITOR_DEVICES=all környezeti változót.

Többpéldányos GPU-képesség megerősítése

  1. Ellenőrizze a kubectl fürthöz való kapcsolatot a parancs használatával a kubectl get fürtcsomópontok listájának visszaadásához.

    kubectl get nodes -o wide
    
  2. Győződjön meg arról, hogy a csomópont többpéldányos GPU-képességgel rendelkezik a kubectl describe node parancs használatával. Az alábbi példaparancs az aksMigNode nevű csomópontot ismerteti, amely a GPU-példányprofilként MIG1g-et használ.

    kubectl describe node aksMigNode
    

    A kimenetnek a következő példakimenethez kell hasonlítania:

    # Single strategy output
    Allocatable:
        nvidia.com/gpu: 56
    
    # Mixed strategy output
    Allocatable:
        nvidia.com/mig-1g.5gb: 56
    

Munka ütemezése

Az alábbi példák a CUDA alapképre, a 12.1.1-es verzióra épülnek, amely az Ubuntu 22.04 rendszeren van, címkézve 12.1.1-base-ubuntu22.04.

Egyetlen stratégia

  1. Hozzon létre egy fájlt, amelynek a neve single-strategy-example.yaml, és másolja bele a következő manifesztet.

    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
    
  2. Telepítse az alkalmazást a kubectl apply paranccsal, és adja meg a YAML-jegyzék nevét.

    kubectl apply -f single-strategy-example.yaml
    
  3. Ellenőrizze a lefoglalt GPU-eszközöket a kubectl exec paranccsal. Ez a parancs a fürtcsomópontok listáját adja vissza.

    kubectl exec nvidia-single -- nvidia-smi -L
    

    Az alábbi példa a sikeresen létrehozott üzembe helyezéseket és szolgáltatásokat megjelenítő kimenethez hasonlít:

    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)
    

Vegyes stratégia

  1. Hozzon létre egy fájlt, amelynek a neve mixed-strategy-example.yaml, és másolja bele a következő manifesztet.

    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
    
  2. Telepítse az alkalmazást a kubectl apply paranccsal, és adja meg a YAML-jegyzék nevét.

    kubectl apply -f mixed-strategy-example.yaml
    
  3. Ellenőrizze a lefoglalt GPU-eszközöket a kubectl exec paranccsal. Ez a parancs a fürtcsomópontok listáját adja vissza.

    kubectl exec nvidia-mixed -- nvidia-smi -L
    

    Az alábbi példa a sikeresen létrehozott üzembe helyezéseket és szolgáltatásokat megjelenítő kimenethez hasonlít:

    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)
    

Fontos

A Docker Hubon a CUDA-képek latest címkéjét már nem támogatják. Tekintse meg az NVIDIA adattárát a legújabb képekhez és a hozzájuk tartozó címkékhez.

Hibaelhárítás

Ha a csomópontkészlet létrehozása után nem látja a többpéldányos GPU-képességet, ellenőrizze, hogy az API-verzió nem régebbi-e 2021-08-01-nél.

Következő lépések

Az Azure Kubernetes Service gpu-kkal kapcsolatos további információkért lásd: