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á svou vlastní paměť a Stream Multiprocessor (SM). Další informace o Nvidia A100 naleznete v tématu Nvidia A100 GPU.

Tento článek vás provede procesem vytvoření fondu uzlů GPU s více instancemi 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.
  • Automatické škálování clusteru nemůžete použít s fondy uzlů 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 značí, že každá instance GPU má 1g prostředků SM (výpočetní prostředek) a 5 GB paměti. V tomto případě je GPU rozděleno do sedmi instancí.

Dostupné profily instancí GPU pro tuto velikost instance zahrnují MIG1g, MIG2g, MIG3g, , MIG4ga 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. Pomocí příkazu vytvořte cluster az aks create AKS.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster\
        --node-count 1 \
        --generate-ssh-keys
    

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.

    az aks nodepool add \
        --name mignode \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --node-vm-size Standard_ND96asr_v4 \
        --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 modulu plug-in zařízení NVIDIA a zjišťování funkcí GPU

  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 modul plug-in zařízení Nvidia a úložiště Helm pro zjišťování funkcí GPU pomocí příkazů helm repo add a helm repo update příkazů.

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

    helm install \
    --version=0.14.0 \
    --generate-name \
    --set migStrategy=${MIG_STRATEGY} \
    nvdp/nvidia-device-plugin
    
  4. Pomocí příkazu nainstalujte zjišťování helm install funkcí GPU.

    helm install \
    --version=0.2.0 \
    --generate-name \
    --set migStrategy=${MIG_STRATEGY} \
    nvgfd/gpu-feature-discovery
    

Potvrzení schopnosti GPU s více instancemi

  1. Nakonfigurujte kubectl připojení ke clusteru AKS pomocí az aks get-credentials příkazu.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Pomocí příkazu ověřte připojení ke clusteru kubectl get a vraťte seznam uzlů clusteru.

    kubectl get nodes -o wide
    
  3. 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 mignode, který jako profil instance GPU používá MIG1g.

    kubectl describe node 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 cuda základní image verze 12.1.1 pro Ubuntu22.04, označeno 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 fondech uzlů AKS najdete v tématu Správa fondů uzlů pro cluster v AKS.