Sdílet prostřednictvím


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

GPU NVIDIA A100 lze 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 NVIDIA A100 naleznete v GPU NVIDIA A100.

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 tématu Instalace Nástroje Helm.
  • Fondy uzlů GPU s více instancemi se v současné době v Azure Linuxu nepodporují.
  • Automatické škálování clusteru nemůžete použít s fondy uzlů GPU s více instancemi.

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 7. 4. 4/8 0
MIG 7g.40gb 7/7 8/8 0

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 dostupné pro tuto velikost virtuálního počítače zahrnují , , , , MIG4ga MIG7g. MIG3gMIG2gMIG1g

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. Pomocí příkazu vytvořte cluster az aks create AKS.

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

    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 GPU kompatibilního Standard_ND96asr_v4 s MIG.

    az aks nodepool add \
        --name aks-mignode \
        --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ředek GPU se zobrazí jako nvidia.com/mig1g.5gb: 1.

Instalace komponent modulu plug-in zařízení NVIDIA a 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.15.0 \
    --generate-name \
    --set migStrategy=${MIG_STRATEGY} \
    --set gfd.enabled=true \
    --namespace nvidia-device-plugin \
    --create-namespace
    

Poznámka:

Instalace modulu plug-in zařízení NVIDIA verze 0.15.0 a vyšší konsoliduje modul plug-in zařízení a úložiště GFD. Samostatná instalace nástroje Helm softwarové komponenty GFD se v tomto kurzu nedoporučuje.

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 ověřte, že uzel má funkci GPU s více instancemi kubectl describe node . Následující ukázkový příkaz popisuje uzel s názvem aks-mignode, který jako profil instance GPU používá MIG1g.

    kubectl describe node aks-mignode
    

    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: