Bereitstellen der Infrastruktur für Ray und Kueue auf AKS

In diesem Artikel stellen Sie die Infrastruktur bereit, die zum Ausführen von Ray AI-Workloads mit Kueue auf Azure Kubernetes Service (AKS) erforderlich ist. Das Terraform-Modul stellt einen AKS-Cluster mit GPU-Knotenpools bereit, installiert den KubeRay-Operator und den Kueue-Controller über Helm, erstellt Azure Blob Storage mit vordefinierten Datasets und konfiguriert die Workload-Identität für den sicheren Zugriff.

Wichtig

Open-Source-Software wird überall in AKS-Dokumenten und -Beispielen erwähnt. Software, die Sie bereitstellen, ist von AKS-Vereinbarungen zum Servicelevel, der eingeschränkten Garantie und dem Azure-Support ausgeschlossen. Wenn Sie Open-Source-Technologie zusammen mit AKS nutzen, nutzen Sie die Supportoptionen, die von den jeweiligen Communitys und Projektbetreuenden angeboten werden, um einen Plan zu entwickeln.

Microsoft übernimmt die Verantwortung für die Erstellung der Open-Source-Pakete, die wir auf AKS bereitstellen. Diese Verantwortung beinhaltet die vollständige Übernahme des Build-, Scan-, Signier-, Validierungs- und Hotfix-Prozesses sowie die Kontrolle über die Binärdateien in Container-Images. Weitere Informationen finden Sie unter Sicherheitsrisikomanagement für AKS und AKS-Supportabdeckung.

Voraussetzungen

  • Ein Azure-Abonnement. Wenn Sie kein Konto haben, erstellen Sie ein kostenloses Konto.
  • Azure CLI Version 2.70 oder höher, authentifiziert mit az login. Wenn Sie über mehrere Abonnements verfügen, wählen Sie mit az account set --subscription <subscription-id> das richtige aus.
  • Terraform Version 1.6 oder höher.
  • kubectl , Version 1.28 oder höher. Installieren mit az aks install-cli.
  • Python Version 3.10 oder höher (erforderlich für die Datengenerierung von Aurora).
  • GPU-Kontingent in Ihrem Ziel Azure Region. Die Standardkonfiguration stellt einen Standard_ND96amsr_A100_v4 Knoten bereit (8×A100 80 GB GPUs).

Klonen des Repositorys

Klonen Sie das Azure/AKS-Repository, und navigieren Sie zum Infrastrukturmodul:

git clone https://github.com/Azure/AKS
cd AKS/examples/kueue-and-ray-on-aks/1-infrastructure

Installieren von Python-Abhängigkeiten

Der Uploadschritt von Aurora-Daten erfordert Python Pakete. Installieren Sie sie vor der Bereitstellung:

pip install -r terraform/requirements-generator.txt

GPU-Kontingent überprüfen

Stellen Sie sicher, dass Ihr Abonnement über ein Kontingent für die GPU-SKU in Ihrer Zielregion verfügt. Ersetzen Sie eastus2 durch Ihre bevorzugte Region:

LOCATION=<your-azure-region>
az vm list-usage --location "$LOCATION" --output table | grep -i "NDAMSv4_A100"

Hinweis

Wenn Sie kein GPU-Kontingent haben oder die Infrastruktur ohne GPUs überprüfen möchten, stellen Sie folgendes gpu_enabled=falsebereit:

terraform apply -var="subscription_id=<your-subscription-id>" -var="gpu_enabled=false"

Der reine CPU-Pfad ist nützlich, um die Infrastruktur- und Warteschlangenkonfiguration zu validieren. Workloads, die GPUs anfordern, bleiben im Status „Pending“.

Mit Terraform bereitstellen

Initialisieren und Anwenden des Terraform-Moduls:

cd terraform
terraform init
terraform apply -var="subscription_id=<your-subscription-id>"

Das Terraform-Modul erstellt:

  • Ein AKS-Cluster mit aktivierter OIDC-Aussteller- und Workloadidentität
  • Ein System-Knotenpool und ein GPU-Knotenpool (wenn gpu_enabled=true)
  • KubeRay-Operator und der Kueue-Controller (Helm-Releases aus MCR)
  • GPU-Überwachung DaemonSet (wenn gpu_enabled=true)
  • Azure Blob Storage Konto mit aurora und llm-pipeline Containern
  • Benutzerseitig zugewiesene verwaltete Identität mit der Rolle „Storage Blob Data Contributor“
  • Anmeldeinformationen der Verbundidentität für den ray-workload-ServiceAccount
  • Vorab bereitgestellte Datensätze (Aurora WeatherBench2-Daten und viggo NLG-Datensatz)

Die vollständige Konfiguration des Terraform-Moduls finden Sie im Verzeichnis 1-infrastructure im Repository.

Herstellen einer Verbindung mit dem Cluster

Rufen Sie die Anmeldeinformationen für Ihren neuen AKS-Cluster ab:

eval "$(terraform output -raw get_credentials_command)"

Überprüfen Sie die Bereitstellung

Vergewissern Sie sich, dass die Operatoren laufen und Knoten verfügbar sind:

  1. Überprüfen Sie den KubeRay-Operator:

    kubectl -n kuberay-system get pods
    

    Erwartete Ausgabe:

    NAME                                READY   STATUS    RESTARTS   AGE
    kuberay-operator-xxxxxxxxxx-xxxxx   1/1     Running   0          5m
    
  2. Überprüfen Sie den Kueue-Controller:

    kubectl -n kueue-system get pods
    

    Erwartete Ausgabe:

    NAME                                            READY   STATUS    RESTARTS   AGE
    kueue-controller-manager-xxxxxxxxxx-xxxxx       1/1     Running   0          5m
    
  3. Überprüfen Sie die Knoten:

    kubectl get nodes
    

    Erwartete Ausgabe (mit gpu_enabled=true):

    NAME                              STATUS   ROLES    AGE   VERSION
    aks-gpupool-xxxxxxxx-vmssxxxxxx   Ready    <none>   5m    v1.35.x
    aks-system-xxxxxxxx-vmssxxxxxx    Ready    <none>   10m   v1.35.x
    aks-system-xxxxxxxx-vmssxxxxxx    Ready    <none>   10m   v1.35.x
    
  4. GPU-Überwachung überprüfen (nur wenn gpu_enabled=true):

    kubectl -n gpu-monitoring get daemonsets
    

    Erwartete Ausgabe:

    NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    gpu-monitoring-a100     1         1         1       1            1           <none>          5m
    

Bereinigen von Ressourcen

So löschen Sie alle Azure Ressourcen, die Sie mithilfe dieses Moduls erstellt haben:

terraform destroy -var="subscription_id=<your-subscription-id>"

Nächster Schritt