Sdílet prostřednictvím


Vytvoření fondu uzlů GPU s více instancemi ve službě Azure Kubernetes Service (AKS)

Některé grafické procesory NVIDIA je možné rozdělit až do sedmi nezávislých instancí. Každá instance má svůj vlastní multiprocesor Stream (SM), který je zodpovědný za paralelní spouštění instrukcí a paměti GPU. Další informace o dělení GPU naleznete v tématu NVIDIA MIG.

Tento článek vás provede procesem vytvoření fondu uzlů GPU s více instancemi pomocí velikosti virtuálního počítače kompatibilního s MIG v clusteru Azure Kubernetes Service (AKS).

Předpoklady a omezení

  • Účet Azure s aktivním předplatným. Pokud ho nemáte, můžete si zdarma vytvořit účet.
  • Azure CLI verze 2.2.0 nebo novější je nainstalovaná a nakonfigurovaná. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
  • Klient příkazového řádku Kubernetes, kubectl, nainstalovaný a nakonfigurovaný. Pokud používáte Azure Cloud Shell, kubectl je už nainstalovaný. Pokud ho chcete nainstalovat místně, můžete použít az aks install-cli příkaz.
  • Helm v3 je nainstalovaný a nakonfigurovaný. Další informace naleznete v dokumentaci Instalace Helmu.
  • Fondy uzlů GPU s více instancemi se v současné době v Azure Linuxu nepodporují.
  • GPU s více instancemi je v současné době podporována na velikostech virtuálních počítačů GPU Standard_NC40ads_H100_v5, Standard_ND96isr_H100_v5 a A100 na AKS.

Profily instancí GPU

Profily instancí GPU definují způsob dělení gpu. Následující tabulka ukazuje dostupný profil instance GPU pro Standard_ND96asr_v4:

Název profilu Zlomek SM Zlomek paměti Počet vytvořených instancí
MIG 1g.5gb 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

Například profil MIG 1g.5gb instance GPU označuje, že každá instance GPU má 1g SM (streamování multiprocesorů) a 5 GB paměti. V tomto případě je GPU rozděleno do sedmi instancí.

Dostupné profily instancí GPU pro tuto velikost virtuálního počítače zahrnují MIG1g, MIG2g, MIG3g, MIG4g a MIG7g.

Důležité

Po vytvoření fondu uzlů nemůžete změnit použitý profil instance GPU.

Vytvoření clusteru AKS

  1. Pomocí příkazu vytvořte skupinu az group create prostředků Azure.

    az group create --name myResourceGroup --location southcentralus
    
  2. Vytvořte cluster AKS pomocí příkazu az aks create.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --generate-ssh-keys
    
  3. Nakonfigurujte kubectl pro připojení ke clusteru AKS pomocí příkazu az aks get-credentials.

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

Vytvoření fondu uzlů GPU s více instancemi

K vytvoření fondu uzlů můžete použít azure CLI nebo požadavek HTTP na rozhraní API ARM.

  • Pomocí příkazu vytvořte fond az aks nodepool add uzlů GPU s více instancemi a zadejte profil instance GPU. Následující příklad vytvoří fond uzlů s velikostí virtuálního počítače typu GPU Standard_ND96asr_v4, který je kompatibilní s MIG.

    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
    

Určení strategie GPU (MIG) s více instancemi

Před instalací modulů plug-in NVIDIA musíte určit, jakou strategii GPU (MIG) s více instancemi se má použít pro dělení GPU: jedna strategie nebo smíšená strategie. Tyto dvě strategie neovlivňují způsob spouštění úloh procesoru, ale způsob zobrazení prostředků GPU.

  • Jedna strategie: Jedna strategie zpracovává každou instanci GPU jako GPU. Pokud použijete tuto strategii, zobrazí se prostředky GPU jako nvidia.com/gpu: 1.
  • Smíšená strategie: Smíšená strategie zveřejňuje instance GPU a profil instance GPU. Pokud použijete tuto strategii, prostředky GPU se zobrazí jako nvidia.com/mig1g.5gb: 1.

Nainstalujte komponenty modulu plug-in pro zařízení NVIDIA a pro zjišťování funkcí GPU (GFD)

  1. Nastavte strategii MIG jako proměnnou prostředí. Můžete použít jednu nebo smíšenou strategii.

    # Single strategy
    export MIG_STRATEGY=single
    
    # Mixed strategy
    export MIG_STRATEGY=mixed
    
  2. Přidejte úložiště Helm modulu plug-in zařízení NVIDIA pomocí helm repo add příkazů a helm repo update příkazů.

    helm repo add nvdp https://nvidia.github.io/k8s-device-plugin
    helm repo update
    
  3. Nainstalujte modul plug-in zařízení NVIDIA pomocí helm install příkazu.

    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
    

Poznámka:

Instalace modulu plug-in zařízení NVIDIA helm konsoliduje modul plug-in zařízení Kubernetes a úložiště GFD. Samostatná instalace helmu softwarové komponenty GFD se nedoporučuje při použití GPU spravovaného službou AKS.

Potvrzení schopnosti GPU s více instancemi

  1. kubectl Pomocí příkazu ověřte připojení ke clusteru kubectl get a vraťte seznam uzlů clusteru.

    kubectl get nodes -o wide
    
  2. Pomocí příkazu kubectl describe node se ujistěte, že uzel má schopnost multi-instance GPU. Následující příklad příkaz popisuje uzel s názvem aksMigNode, který používá MIG1g jako profil instance GPU.

    kubectl describe node aksMigNode
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

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

Plánování práce

Následující příklady jsou založené na základní imagi CUDA verze 12.1.1 pro Ubuntu 22.04, označené jako 12.1.1-base-ubuntu22.04.

Jedna strategie

  1. Vytvořte soubor s názvem single-strategy-example.yaml a zkopírujte ho v následujícím manifestu.

    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. Nasaďte aplikaci pomocí kubectl apply příkazu a zadejte název manifestu YAML.

    kubectl apply -f single-strategy-example.yaml
    
  3. Pomocí příkazu ověřte přidělená zařízení kubectl exec GPU. Tento příkaz vrátí seznam uzlů clusteru.

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

    Následující příklad vypadá podobně jako výstup zobrazující úspěšně vytvořená nasazení a služby:

    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)
    

Smíšená strategie

  1. Vytvořte soubor s názvem mixed-strategy-example.yaml a zkopírujte ho v následujícím manifestu.

    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. Nasaďte aplikaci pomocí kubectl apply příkazu a zadejte název manifestu YAML.

    kubectl apply -f mixed-strategy-example.yaml
    
  3. Pomocí příkazu ověřte přidělená zařízení kubectl exec GPU. Tento příkaz vrátí seznam uzlů clusteru.

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

    Následující příklad vypadá podobně jako výstup zobrazující úspěšně vytvořená nasazení a služby:

    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)
    

Důležité

Značka latest imagí CUDA je v Docker Hubu zastaralá. Nejnovější obrázky a odpovídající značky najdete v úložišti NVIDIA.

Řešení problému

Pokud po vytvoření fondu uzlů nevidíte funkci GPU s více instancemi, ověřte, že verze rozhraní API není starší než 2021-08-01.

Další kroky

Další informace o GPU ve službě Azure Kubernetes Service najdete tady: