Udostępnij przez


Używanie procesorów GPU FIRMY AMD na potrzeby obciążeń intensywnie korzystających z obliczeń w usłudze Azure Kubernetes Service (AKS)

Rozmiary maszyn wirtualnych z procesorem GPU firmy AMD na platformie Azure mogą zapewnić elastyczność wydajności i kosztów, oferując wysoką pojemność obliczeniową, umożliwiając jednocześnie wybór odpowiedniej konfiguracji dla wymagań dotyczących obciążenia. Usługa AKS obsługuje pule węzłów Linux z GPU AMD w celu uruchamiania obciążeń Kubernetes wykorzystujących dużą moc obliczeniową.

Ten artykuł pomaga konfigurować węzły z harmonogramowalnymi kartami graficznymi AMD w nowych i istniejących klastrach AKS.

Ograniczenia

  • Usługa AKS obecnie obsługuje rozmiar maszyny wirtualnej platformy Azure zasilanej przez Standard_ND96isr_MI300X_v5.
  • Aktualizowanie istniejącej puli węzłów, aby dodać rozmiar maszyny wirtualnej AMD GPU, nie jest obsługiwane w usłudze AKS.
  • Aktualizowanie puli węzłów z obsługą procesorów GPU innych niż AMD przy użyciu rozmiaru maszyny wirtualnej procesora GPU firmy AMD nie jest obsługiwane.
  • AzureLinux Windows, AzureLinuxOSGuardi flatcar nie są obsługiwane w przypadku procesorów GPU FIRMY AMD.

Zanim rozpoczniesz

Uwaga / Notatka

Maszyny wirtualne z obsługą GPU zawierają wyspecjalizowany sprzęt, który wiąże się z wyższymi cenami i dostępnością w regionach. Aby uzyskać więcej informacji, zobacz narzędzie do ustalania cen i dostępność regionów .

Pobierz poświadczenia dla klastra

Pobierz poświadczenia dla klastra AKS za pomocą polecenia az aks get-credentials. Przykładowe polecenie pobiera poświadczenia dla klastra myAKSCluster w grupie zasobów myResourceGroup.

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

Opcje korzystania z procesorów GPU AMD

Korzystanie z procesorów GPU AMD obejmuje instalację różnych składników oprogramowania procesora GPU FIRMY AMD, takich jak wtyczka urządzenia AMD dla platformy Kubernetes, sterowniki procesora GPU i nie tylko.

Uwaga / Notatka

Obecnie usługa AKS nie zarządza ani nie automatyzuje instalacji sterowników GPU ani wtyczki urządzenia AMD GPU w pulach węzłów z obsługą GPU firmy AMD.

Rejestrowanie funkcji AKSInfinibandSupport

  1. Jeśli rozmiar maszyny wirtualnej z procesorem GPU AMD obsługuje RDMA z konwencją nazewnictwa r (np. Standard_ND96isr_MI300X_v5), należy upewnić się, że maszyny w puli węzłów znajdują się w tej samej fizycznej sieci Infiniband. Aby to osiągnąć, zarejestruj flagę funkcji AKSInfinibandSupport przy użyciu polecenia az feature register.

    az feature register --name AKSInfinibandSupport --namespace Microsoft.ContainerService
    
  2. Sprawdź stan rejestracji przy użyciu az feature show polecenia :

    az feature show \
    --namespace "Microsoft.ContainerService" \
    --name AKSInfinibandSupport
    
  3. Utwórz pulę węzłów z obsługą procesora GPU firmy AMD przy użyciu az aks nodepool add polecenia i pomiń instalację sterownika domyślnego, ustawiając pole --gpu-driver interfejsu API na wartość 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
    

    Uwaga / Notatka

    AKS obecnie wymusza użycie pola gpu-driver, aby pominąć automatyczną instalację sterowników podczas tworzenia puli węzłów GPU AMD.

Wdrożenie operatora GPU AMD w usłudze AKS

Operator procesora GPU FIRMY AMD automatyzuje zarządzanie i wdrażanie wszystkich składników oprogramowania AMD potrzebnych do aprowizacji procesora GPU, w tym instalacji sterowników, wtyczki urządzenia AMD dla platformy Kubernetes, środowiska uruchomieniowego kontenera AMD i nie tylko. Ponieważ operator procesora GPU firmy AMD obsługuje te składniki, nie trzeba oddzielnie instalować wtyczki urządzenia AMD w klastrze usługi AKS. Oznacza to również, że automatyczna instalacja sterownika procesora GPU powinna zostać pominięta w celu korzystania z operatora procesora GPU FIRMY AMD w usłudze AKS.

  1. Postępuj zgodnie z dokumentacją firmy AMD, aby zainstalować operator procesora GPU.

  2. Sprawdź status kart GPU AMD w puli węzłów przy użyciu polecenia kubectl get nodes

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

    Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:

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

Upewnij się, że układy GPU AMD są rozplanowalne.

Po utworzeniu puli węzłów upewnij się, iż GPU są możliwe do zaplanowania w klastrze AKS.

  1. Wyświetl listę węzłów w klastrze przy użyciu kubectl get nodes polecenia .

    kubectl get nodes
    
  2. Upewnij się, że procesory GPU można zaplanować przy użyciu polecenia kubectl describe node.

    kubectl describe node aks-gpunp-00000000
    

    W sekcji Pojemność procesor GPU powinien mieć wartość amd.com/gpu: 1. Dane wyjściowe powinny wyglądać podobnie do następujących skróconych przykładowych danych wyjściowych:

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

Uruchom obciążenie wykorzystujące GPU AMD

Aby zobaczyć, jak działa procesor GPU firmy AMD, możesz zaplanować obciążenie z obsługą procesora GPU przy użyciu odpowiedniego żądania zasobu. W tym przykładzie uruchomimy zadanie Tensorflow względem zestawu danych MNIST.

  1. Utwórz plik o nazwie samples-tf-mnist-demo.yaml i wklej następujący manifest YAML, który zawiera limit amd.com/gpu: 1zasobów:

    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. Uruchom zadanie przy użyciu kubectl apply polecenia , które analizuje plik manifestu i tworzy zdefiniowane obiekty Kubernetes.

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

Wyświetlanie stanu obciążenia z obsługą procesora GPU

  1. Monitoruj postęp zadania przy użyciu kubectl get jobs polecenia z flagą --watch . Może upłynąć kilka minut, aby najpierw ściągnąć obraz i przetworzyć zestaw danych.

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

    Gdy w kolumnie COMPLETIONS jest wyświetlana wartość 1/1, zadanie zostało zakończone pomyślnie, jak pokazano w poniższych przykładowych danych wyjściowych:

    NAME                    COMPLETIONS   DURATION   AGE
    
    samples-tf-mnist-demo   0/1           3m29s      3m29s
    samples-tf-mnist-demo   1/1   3m10s   3m36s
    
  2. kubectl --watch Zakończ proces za pomocą Ctrl-C.

  3. Pobierz nazwę zasobnika za pomocą polecenia kubectl get pods.

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

Uprzątnij zasoby

Usuń skojarzone obiekty Kubernetes utworzone w tym artykule przy użyciu kubectl delete job polecenia .

kubectl delete jobs samples-tf-mnist-demo

Dalsze kroki