Sdílet prostřednictvím


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

Grafické procesory (GPU) se často používají pro úlohy náročné na výpočetní výkon, jako jsou grafické a vizualizační úlohy. AKS podporuje fondy uzlů s podporou GPU pro Windows a Linux 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 Windows s novými a existujícími clustery AKS (Preview).

Podporované virtuální počítače s podporou GPU

Pokud chcete zobrazit podporované virtuální počítače s podporou GPU, podívejte se na velikosti virtuálních počítačů optimalizovaných pro GPU v Azure. Pro fondy uzlů AKS doporučujeme minimální velikost Standard_NC6s_v3. Řada NVv4 (založená na grafických procesorech AMD) není podporována v AKS.

Poznámka:

Virtuální počítače s podporou GPU obsahují specializovaný hardware, na který se vztahují vyšší ceny a dostupnost oblastí. Další informace najdete v cenovém nástroji a dostupnosti oblastí.

Omezení

  • Aktualizace existujícího fondu uzlů Windows pro přidání GPU se nepodporuje.
  • V Kubernetes verze 1.28 a níže se nepodporuje.

Než začnete

  • Tento článek předpokládá, že máte existující cluster AKS. Pokud cluster nemáte, vytvořte ho pomocí Azure CLI, Azure PowerShellu nebo webu Azure Portal.
  • Potřebujete nainstalované a nakonfigurované rozhraní příkazového řádku Azure CLI verze 1.0.0b2 nebo novější pro použití --skip-gpu-driver-install pole s příkazem az aks nodepool add . 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.
  • Potřebujete nainstalované a nakonfigurované rozhraní příkazového řádku Azure CLI verze 9.0.0b5 nebo novější, aby se toto pole používalo --driver-type s příkazem az aks nodepool add . 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.

Získání přihlašovacích údajů pro cluster

  • Pomocí příkazu získejte přihlašovací údaje pro cluster az aks get-credentials AKS. Následující ukázkový příkaz načte přihlašovací údaje pro myAKSCluster ve skupině prostředků myResourceGroup :

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

Použití Grafického procesoru Windows s automatickou instalací ovladačů

Použití grafických procesorů NVIDIA zahrnuje instalaci různých softwarových komponent NVIDIA, jako je modul plug-in zařízení DirectX pro Kubernetes, instalaci ovladače GPU a další. Když vytvoříte fond uzlů Windows s podporovaným virtuálním počítačem s podporou GPU, nainstalují se tyto komponenty a příslušné ovladače NVIDIA CUDA nebo GRID. Pro velikosti virtuálních počítačů řady NC a ND se nainstaluje ovladač CUDA. U velikostí virtuálních počítačů řady NV je nainstalován ovladač GRID.

Důležité

Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi. Verze Preview jsou poskytovány "tak, jak jsou" a "dostupné", a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryty zákaznickou podporou na základě maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

aks-preview Instalace rozšíření Azure CLI

  • Zaregistrujte nebo aktualizujte rozšíření aks-preview pomocí az extension add příkazu nebo az extension update příkazu.

    # Register the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview
    

Registrace příznaku WindowsGPUPreview funkce

  1. WindowsGPUPreview Pomocí příkazu zaregistrujte příznak az feature register funkce.

    az feature register --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"
    

    Zobrazení stavu Zaregistrované trvá několik minut.

  2. Pomocí příkazu ověřte stav az feature show registrace.

    az feature show --namespace "Microsoft.ContainerService" --name "WindowsGPUPreview"
    
  3. Jakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí az provider register příkazu.

    az provider register --namespace Microsoft.ContainerService
    

Vytvoření fondu uzlů s podporou GPU s Windows (Preview)

Pokud chcete vytvořit fond uzlů s podporou GPU s Windows, musíte použít podporovanou velikost virtuálního počítače s podporou GPU a zadat jako os-type Windows. Výchozí windows je Windows2022, ale všechny možnosti Windows os-sku os-sku jsou podporovány.

  1. Pomocí příkazu vytvořte fond az aks nodepool add uzlů s podporou GPU systému Windows.

    az aks nodepool add \
       --resource-group myResourceGroup \
       --cluster-name myAKSCluster \
       --name gpunp \
       --node-count 1 \
       --os-type Windows \
       --kubernetes-version 1.29.0 \
       --node-vm-size Standard_NC6s_v3
    
  2. Zkontrolujte, jestli jsou vaše grafické procesory schedovatelné.

  3. Jakmile potvrdíte, že jsou grafické procesory dostupné, můžete spustit úlohu GPU.

Určení typu ovladače GPU (Preview)

Ve výchozím nastavení AKS určuje výchozí typ ovladače GPU pro každý podporovaný virtuální počítač s podporou GPU. Vzhledem k tomu, že pro funkční úlohy GPU jsou důležité kompatibilita úloh a ovladačů, můžete zadat typ ovladače pro uzel Gpu s Windows. Tato funkce není podporována pro fondy uzlů GPU s Linuxem.

Při vytváření fondu agentů Windows s podporou GPU máte možnost určit typ ovladače GPU pomocí příznaku --driver-type .

Dostupné jsou následující možnosti:

  • GRID: Pro aplikace vyžadující podporu virtualizace.
  • CUDA: Optimalizováno pro výpočetní úlohy ve vědeckých výpočetních a datových aplikacích náročných na data.

Poznámka:

Při nastavování příznaku --driver-type přebíráte odpovědnost za zajištění kompatibility vybraného typu ovladače s konkrétní velikostí a konfigurací fondu uzlů. I když se AKS pokouší ověřit kompatibilitu, existují scénáře, kdy vytvoření fondu uzlů může selhat kvůli nekompatibilitě mezi zadaným typem ovladače a základním virtuálním počítačem nebo hardwarem.

Pokud chcete vytvořit fond uzlů s podporou GPU systému Windows s konkrétním typem ovladače GPU, použijte az aks nodepool add příkaz.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunp \
    --node-count 1 \
    --os-type Windows \
    --kubernetes-version 1.29.0 \
    --node-vm-size Standard_NC6s_v3 \
    --driver-type GRID

Výše uvedený příkaz například vytvoří fond uzlů s podporou GPU pomocí GRID typu ovladače GPU. Výběrem tohoto typu ovladače se přepíše výchozí typ CUDA ovladače pro skladové položky virtuálních počítačů řady NC series.

Použití Grafického procesoru Windows s ruční instalací ovladače

Při vytváření fondu uzlů s Windows s velikostmi virtuálních počítačů řady N-series (NVIDIA GPU) v AKS se automaticky nainstaluje ovladač GPU a modul plug-in zařízení Kubernetes DirectX. Pokud chcete tuto automatickou instalaci obejít, postupujte takto:

  1. Přeskočte instalaci ovladače GPU (Preview) pomocí --skip-gpu-driver-install.
  2. Ruční instalace modulu plug-in zařízení Kubernetes DirectX

Přeskočit instalaci ovladače GPU (Preview)

AKS má ve výchozím nastavení povolenou automatickou instalaci ovladače GPU. V některých případech, například instalace vlastních ovladačů, možná budete chtít přeskočit instalaci ovladače GPU.

Důležité

Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi. Verze Preview jsou poskytovány "tak, jak jsou" a "dostupné", a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryty zákaznickou podporou na základě maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

  1. Zaregistrujte nebo aktualizujte rozšíření aks-preview pomocí az extension add příkazu nebo az extension update příkazu.

    # Register the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview
    
  2. Vytvořte fond uzlů pomocí az aks nodepool add příkazu s příznakem --skip-gpu-driver-install , který přeskočí automatickou instalaci ovladače GPU.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --os-type windows \
        --os-sku windows2022 \
        --skip-gpu-driver-install
    

Poznámka:

--node-vm-size Pokud ještě není nasazená služba AKS, nemůžete použít grafické procesory a --skip-gpu-driver-install nefunguje.

Ruční instalace modulu plug-in zařízení Kubernetes DirectX

Pro modul plug-in zařízení Kubernetes DirectX můžete nasadit daemonSet, který na každém uzlu spouští pod, který poskytuje požadované ovladače pro gpu.

  • Přidejte do clusteru az aks nodepool add fond uzlů pomocí příkazu.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --os-type windows \
        --os-sku windows2022
    

Vytvoření oboru názvů a nasazení modulu plug-in zařízení Kubernetes DirectX

  1. Vytvořte obor názvů pomocí kubectl create namespace příkazu.

    kubectl create namespace gpu-resources
    
  2. Vytvořte soubor s názvem k8s-directx-device-plugin.yaml a vložte následující manifest YAML poskytnutý jako součást modulu plug-in zařízení NVIDIA pro projekt Kubernetes:

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: nvidia-device-plugin-daemonset
      namespace: gpu-resources
    spec:
      selector:
        matchLabels:
          name: nvidia-device-plugin-ds
      updateStrategy:
        type: RollingUpdate
      template:
        metadata:
          # Mark this pod as a critical add-on; when enabled, the critical add-on scheduler
          # reserves resources for critical add-on pods so that they can be rescheduled after
          # a failure.  This annotation works in tandem with the toleration below.
          annotations:
            scheduler.alpha.kubernetes.io/critical-pod: ""
          labels:
            name: nvidia-device-plugin-ds
        spec:
          tolerations:
          # Allow this pod to be rescheduled while the node is in "critical add-ons only" mode.
          # This, along with the annotation above marks this pod as a critical add-on.
          - key: CriticalAddonsOnly
            operator: Exists
          - key: nvidia.com/gpu
            operator: Exists
            effect: NoSchedule
          - key: "sku"
            operator: "Equal"
            value: "gpu"
            effect: "NoSchedule"
          containers:
          - image: mcr.microsoft.com/oss/nvidia/k8s-device-plugin:v0.14.1
            name: nvidia-device-plugin-ctr
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop: ["ALL"]
            volumeMounts:
              - name: device-plugin
                mountPath: /var/lib/kubelet/device-plugins
          volumes:
            - name: device-plugin
              hostPath:
                path: /var/lib/kubelet/device-plugins
    
  3. Pomocí příkazu vytvořte daemonSet a potvrďte úspěšné vytvoření kubectl apply modulu plug-in zařízení NVIDIA.

    kubectl apply -f nvidia-device-plugin-ds.yaml
    
  4. Teď, když jste úspěšně nainstalovali modul plug-in zařízení NVIDIA, můžete zkontrolovat, zda jsou vaše GPU schedlitelné.

Potvrďte, že jsou gpu schedlitelné.

Po vytvoření clusteru ověřte, že se v Kubernetes dají schedovat gpu.

  1. Pomocí příkazu vypište uzly v clusteru kubectl get nodes .

    kubectl get nodes
    

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

    NAME                   STATUS   ROLES   AGE   VERSION
    aks-gpunp-28993262-0   Ready    agent   13m   v1.20.7
    
  2. Pomocí příkazu ověřte, že jsou grafické procesory schednutelné kubectl describe node .

    kubectl describe node aks-gpunp-28993262-0
    

    V části Kapacita by gpu měl být uveden jako microsoft.com/directx: 1. Výstup by měl vypadat podobně jako v následujícím zhuštěném příkladu výstupu:

    Capacity:
    [...]
     microsoft.com.directx/gpu:                 1
    [...]
    

Použití Container Insights k monitorování využití GPU

Container Insights s AKS monitoruje následující metriky využití GPU:

Název metriky Dimenze metriky (značky) Popis
containerGpuDutyCycle container.azm.ms/clusterId, container.azm.ms/clusterName, containerName, gpuId, , gpuModelgpuVendor Procento času v minulém ukázkovém období (60 sekund), během kterého byl GPU zaneprázdněn/aktivně zpracovával kontejner. Pracovní cyklus je číslo mezi 1 a 100.
containerGpuLimits container.azm.ms/clusterId, , container.azm.ms/clusterNamecontainerName Každý kontejner může zadat omezení jako jeden nebo více GPU. Není možné požadovat ani omezit zlomek GPU.
ContainerGpuRequests container.azm.ms/clusterId, , container.azm.ms/clusterNamecontainerName Každý kontejner si může vyžádat jednu nebo více grafických procesorů. Není možné požadovat ani omezit zlomek GPU.
containerGpumemoryTotalBytes container.azm.ms/clusterId, container.azm.ms/clusterName, containerName, gpuId, , gpuModelgpuVendor Množství paměti GPU v bajtech, které lze použít pro konkrétní kontejner.
containerGpumemoryUsedBytes container.azm.ms/clusterId, container.azm.ms/clusterName, containerName, gpuId, , gpuModelgpuVendor Velikost paměti GPU v bajtech používaných konkrétním kontejnerem
nodeGpuAllocatable container.azm.ms/clusterId, , container.azm.ms/clusterNamegpuVendor Počet GPU v uzlu, který může Kubernetes používat.
nodeGpuCapacity container.azm.ms/clusterId, , container.azm.ms/clusterNamegpuVendor Celkový počet GPU v uzlu

Vyčištění prostředků

  • Pomocí příkazu odeberte přidružené objekty Kubernetes, které jste vytvořili v tomto článku kubectl delete job .

    kubectl delete jobs windows-gpu-workload
    

Další kroky