Použití GPU AMD pro úlohy náročné na výpočetní výkon ve službě Azure Kubernetes Service (AKS)

Velikosti virtuálních počítačů AMD GPU v Azure můžou poskytovat flexibilitu v oblasti výkonu a nákladů a nabízejí vysokou výpočetní kapacitu a zároveň umožňují zvolit správnou konfiguraci pro vaše požadavky na úlohy. AKS podporuje fondy uzlů Linuxu s podporou AMD GPU pro spouštění úloh Kubernetes náročných na výpočetní výkon.

Tento článek vám pomůže zřizovat uzly s chedulovatelnými gpu AMD v nových a existujících clusterech AKS.

Omezení

  • AKS v současné době podporuje Standard_ND96isr_MI300X_v5 velikost virtuálního počítače Azure využívající PROCESOR AMD řady MI300.
  • Aktualizace existujícího fondu uzlů pro přidání velikosti virtuálního počítače AMD GPU není v AKS podporována.
  • Aktualizace fondu uzlů bez podpory AMD GPU na velikost virtuálního počítače s AMD GPU není podporována.
  • AzureLinux Windows, AzureLinuxOSGuarda flatcar nejsou podporovány s AMD GPU.

Než začnete

  • Tento článek předpokládá, že již máte existující AKS cluster. Pokud nemáte klastr, vytvořte si ho pomocí Azure CLI, Azure PowerShell nebo portálu Azure.
  • K nastavení --gpu-driver pole potřebujete azure CLI verze 2.72.2 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalovat nebo upgradovat, podívejte se na Install Azure CLI.
  • Pokud máte aks-preview nainstalované rozšíření Azure CLI, aktualizujte prosím verzi na 18.0.0b2 nebo novější.

Poznámka:

Virtuální stroje s podporou GPU obsahují specializovaný hardware, který podléhá vyšším cenám a dostupnosti dle regionu. Pro více informací se podívejte na nástroj ceny a dostupnost regionů.

Získejte přihlašovací údaje pro váš klastr

Získejte přihlašovací údaje pro váš AKS cluster pomocí příkazu az aks get-credentials. Následující příklad příkazu získává přihlašovací údaje pro cluster myAKSCluster ve skupině prostředků myResourceGroup:

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

Možnosti použití GRAFICKÝch procesorů AMD

Použití GPU AMD zahrnuje instalaci různých softwarových komponent AMD GPU, jako je modul plug-in zařízení AMD pro Kubernetes, ovladače GPU a další.

Poznámka:

V současné době AKS nespravuje ani neautomatizuje instalaci ovladačů GPU nebo modulu plug-in zařízení AMD GPU ve fondech uzlů s podporou AMD GPU.

Registrace funkce AKSInfinibandSupport

  1. Pokud je velikost virtuálního počítače s AMD GPU umožněná pomocí RDMA se r konvencí pojmenování (např. Standard_ND96isr_MI300X_v5), budete muset zajistit, aby počítače ve fondu uzlů fungovaly ve stejné fyzické síti Infiniband. Pokud toho chcete dosáhnout, zaregistrujte AKSInfinibandSupport příznak funkce pomocí az feature register příkazu:

    az feature register --name AKSInfinibandSupport --namespace Microsoft.ContainerService
    
  2. Pomocí příkazu ověřte stav az feature show registrace:

    az feature show \
    --namespace "Microsoft.ContainerService" \
    --name AKSInfinibandSupport
    
  3. Vytvořte fond uzlů s podporou AMD GPU pomocí az aks nodepool add příkazu a přeskočte výchozí instalaci ovladače nastavením pole --gpu-driver rozhraní API na hodnotu none:

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --node-vm-size Standard_ND96isr_MI300X_v5 \
        --gpu-driver none
    

    Poznámka:

    AKS v současné době vynucuje použití pole gpu-driver pro vynechání automatické instalace ovladačů při vytváření fondu uzlů GPU AMD.

Nasazení operátoru AMD GPU v AKS

Operátor AMD GPU automatizuje správu a nasazení všech softwarových komponent AMD potřebných ke zřízení gpu včetně instalace ovladačů, modulu plug-in zařízení AMD pro Kubernetes, modulu runtime kontejneru AMD a dalších. Vzhledem k tomu, že operátor AMD GPU zpracovává tyto komponenty, není nutné samostatně instalovat modul plug-in zařízení AMD do clusteru AKS. To také znamená, že automatická instalace ovladače GPU by měla být vynechána, aby bylo možné použít operátor AMD GPU v AKS.

  1. Postupujte podle dokumentace AMD a nainstalujte operátor GPU.

  2. Pomocí příkazu zkontrolujte stav GPU AMD ve fondu kubectl get nodes uzlů:

    kubectl get nodes -o custom-columns=NAME:.metadata.name,GPUs:.status.capacity.'amd\.com/gpu'
    

    Vaše výstupy by měly vypadat podobně jako následující příklad:

    NAME                    STATUS   ROLES   AGE    VERSION
    aks-gpunp-00000000      Ready    agent   2m4s   v1.31.7
    

Ověřte, že grafické karty AMD je možné naplánovat.

Po vytvoření fondu uzlů ověřte, že GPU jsou naplánovatelné v clusteru AKS.

  1. Vylistujte uzly ve vašem clusteru pomocí příkazu kubectl get nodes.

    kubectl get nodes
    
  2. Potvrďte, že GPU lze naplánovat pomocí příkazu kubectl describe node.

    kubectl describe node aks-gpunp-00000000
    

    V části Kapacita by gpu měl být uveden jako amd.com/gpu: 1. Váš výstup by měl vypadat podobně jako následující zkrácený příkladový výstup:

    Name:               aks-gpunp-00000000
    Roles:              agent
    Labels:             accelerator=amd
    
    [...]
    
    Capacity:
    [...]
     amd.com/gpu:                 1
    [...]
    

Spuštění úlohy s podporou AMD GPU

Pokud chcete zobrazit GPU AMD v akci, můžete naplánovat úlohu s podporou GPU s příslušnou žádostí o prostředky. V tomto příkladu spustíme úlohu Tensorflow na datové sadě MNIST.

  1. Vytvořte soubor s názvem samples-tf-mnist-demo.yaml a vložte následující YAML manifest, který obsahuje limit zdrojů amd.com/gpu: 1.

    apiVersion: batch/v1
    kind: Job
    metadata:
      labels:
        app: samples-tf-mnist-demo
      name: samples-tf-mnist-demo
    spec:
      template:
        metadata:
          labels:
            app: samples-tf-mnist-demo
        spec:
          containers:
          - name: samples-tf-mnist-demo
            image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu
            args: ["--max_steps", "500"]
            imagePullPolicy: IfNotPresent
            resources:
              limits:
               amd.com/gpu: 1
          restartPolicy: OnFailure
          tolerations:
          - key: "sku"
            operator: "Equal"
            value: "gpu"
            effect: "NoSchedule"
    
  2. Spusťte úlohu pomocí příkazu kubectl apply, který zpracovává soubor manifestu a vytváří definované objekty Kubernetes.

    kubectl apply -f samples-tf-mnist-demo.yaml
    

Zobrazit stav úlohy s podporou GPU

  1. Sledujte průběh úlohy pomocí kubectl get jobs příkazu s příznakem --watch . Načtení obrázku a zpracování datové sady může trvat několik minut.

    kubectl get jobs samples-tf-mnist-demo --watch
    

    Když sloupec COMPLETIONS ukazuje 1/1, práce byla úspěšně dokončena, jak je vidět v následujícím příkladu výstupu:

    NAME                    COMPLETIONS   DURATION   AGE
    
    samples-tf-mnist-demo   0/1           3m29s      3m29s
    samples-tf-mnist-demo   1/1   3m10s   3m36s
    
  2. Ukončete proces kubectl --watch pomocí Ctrl-C.

  3. Získejte název podu pomocí příkazu kubectl get pods.

    kubectl get pods --selector app=samples-tf-mnist-demo
    

Vyčistěte zdroje

Odstraňte související objekty Kubernetes, které jste vytvořili v tomto článku, pomocí příkazu kubectl delete job.

kubectl delete jobs samples-tf-mnist-demo

Další kroky