Distribuera infrastruktur för Ray och Kueue på AKS

I den här artikeln distribuerar du den infrastruktur som krävs för att köra Ray AI-arbetsbelastningar med Kueue på Azure Kubernetes Service (AKS). Terraform-modulen etablerar ett AKS-kluster med GPU-nodpooler, installerar KubeRay-operatorn och Kueue-styrenheten via Helm, skapar Azure Blob Storage med förlagrade datauppsättningar och konfigurerar arbetsbelastningsidentitet för säker åtkomst.

Important

Programvara med öppen källkod nämns i hela AKS-dokumentationen och exemplen. Programvaran som du distribuerar är undantagen från AKS-servicenivåavtal, begränsad garanti och Azure-support. När du använder open-source-teknik tillsammans med AKS, konsultera de supportalternativ som finns tillgängliga från respektive gemenskaper och projektunderhållare för att utveckla en plan.

Microsoft tar ansvar för att skapa de paket med öppen källkod som vi distribuerar på AKS. Det ansvaret omfattar att ha fullständigt ägarskap för bygg-, genomsöknings-, signerings-, validerings- och snabbkorrigeringsprocessen, tillsammans med kontroll över binärfilerna i containeravbildningar. Mer information finns i Sårbarhetshantering för AKS - och AKS-stödtäckning.

Prerequisites

  • Ett Azure-abonnemang. Om du inte har något skapar du ett kostnadsfritt konto.
  • Azure CLI version 2.70 eller senare, autentiserad med az login. Om du har flera prenumerationer väljer du den rätta med az account set --subscription <subscription-id>.
  • Terraform version 1.6 eller senare.
  • kubectl version 1.28 eller senare. Installera med az aks install-cli.
  • Python version 3.10 eller senare (krävs för Aurora-datagenerering).
  • GPU-kvot i målregionen Azure. Standardkonfigurationen etablerar en Standard_ND96amsr_A100_v4 nod (8×A100 80 GB GPU:er).

Klona lagringsplatsen

Klona Azure/AKS-lagringsplatsen och gå till infrastrukturmodulen:

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

Installera Python-beroenden

Aurora-dataöverföringssteget kräver Python paket. Installera dem innan du distribuerar:

pip install -r terraform/requirements-generator.txt

Kontrollera GPU-kvoten

Kontrollera att din prenumeration har en kvot för GPU SKU i målregionen. Ersätt eastus2 med önskad region:

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

Anmärkning

Om du inte har GPU-kvot eller vill verifiera infrastrukturen utan GPU:er distribuerar du med gpu_enabled=false:

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

CPU-banan är användbar för att validera infrastrukturen och kökonfigurationen. Arbetslaster som begär GPU-resurser förblir i statusen Pending.

Driftsätt med Terraform

Initiera och tillämpa Terraform-modulen:

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

Terraform-modulen skapar:

  • Ett AKS-kluster med OIDC-utfärdare och arbetsbelastningsidentitet aktiverat
  • En systemnodpool och en GPU-nodpool (när gpu_enabled=true)
  • KubeRay-operatorn och Kueue-styrenheten (Helm-versioner från MCR)
  • DaemonSet för GPU-övervakning (när gpu_enabled=true)
  • Azure Blob Storage konto med aurora och llm-pipeline containrar
  • Användartilldelad hanterad identitet med rollen Storage Blob Data Contributor
  • Federerade identitetsautentiseringsuppgifter för ray-workload ServiceAccount
  • Förlagrade datamängder (Aurora WeatherBench2-data och viggo NLG-datauppsättning)

Fullständig Terraform-modulkonfiguration finns i katalogen 1-infrastruktur på lagringsplatsen.

Anslut till klustret

Hämta autentiseringsuppgifterna för ditt nya AKS-kluster:

eval "$(terraform output -raw get_credentials_command)"

Verifiera driftsättningen

Kontrollera att operatorerna körs och att noderna är tillgängliga:

  1. Verifiera KubeRay-operatorn:

    kubectl -n kuberay-system get pods
    

    Förväntat resultat:

    NAME                                READY   STATUS    RESTARTS   AGE
    kuberay-operator-xxxxxxxxxx-xxxxx   1/1     Running   0          5m
    
  2. Verifiera Kueue-kontrollanten:

    kubectl -n kueue-system get pods
    

    Förväntat resultat:

    NAME                                            READY   STATUS    RESTARTS   AGE
    kueue-controller-manager-xxxxxxxxxx-xxxxx       1/1     Running   0          5m
    
  3. Kontrollera noderna:

    kubectl get nodes
    

    Förväntade utdata (med 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. Verifiera GPU-övervakning (endast när gpu_enabled=true):

    kubectl -n gpu-monitoring get daemonsets
    

    Förväntat resultat:

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

Rensa resurser

Ta bort alla Azure resurser som du skapade med hjälp av den här modulen:

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

Nästa steg