Infrastructuur implementeren voor Ray en Kueue op AKS

In dit artikel implementeert u de infrastructuur die is vereist voor het uitvoeren van Ray AI-workloads met Kueue op Azure Kubernetes Service (AKS). De Terraform-module richt een AKS-cluster in met GPU-knooppuntgroepen, installeert de KubeRay-operator en de Kueue-controller via Helm, maakt Azure Blob Storage met vooraf voorbereide gegevenssets en configureert de workloadidentiteit voor beveiligde toegang.

Belangrijk

Opensource-software wordt vermeld in AKS-documentatie en -voorbeelden. Software die u implementeert, is uitgesloten van AKS-serviceovereenkomsten, beperkte garantie en Azure-ondersteuning. Wanneer u opensource-technologie naast AKS gebruikt, raadpleegt u de beschikbare ondersteuningsopties van de respectieve community's en projectonderhouders om een plan te ontwikkelen.

Microsoft neemt de verantwoordelijkheid voor het bouwen van de opensource-pakketten die we implementeren op AKS. Deze verantwoordelijkheid omvat het volledige eigendom van het bouw-, scan-, onderteken-, validatie- en hotfixproces, samen met controle over de binaire bestanden in container images. Zie Beveiligingsbeheer voor AKS - en AKS-ondersteuningsdekking voor meer informatie.

Vereisten

  • Een Azure-abonnement. Als u nog geen account hebt, kunt u een gratis account maken.
  • Azure CLI versie 2.70 of hoger, geverifieerd met az login. Als u meerdere abonnementen hebt, stelt u de juiste in met az account set --subscription <subscription-id>.
  • Terraform versie 1.6 of hoger.
  • kubectl versie 1.28 of hoger. Installeren met az aks install-cli.
  • Python versie 3.10 of hoger (vereist voor het genereren van gegevens van Aurora).
  • GPU-quotum in uw doelregio Azure. De standaardconfiguratie richt een Standard_ND96amsr_A100_v4 knooppunt in (8×A100 GPU's van 80 GB).

De opslagplaats klonen

Kloon de Azure/AKS-opslagplaats en navigeer naar de infrastructuurmodule:

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

Python-afhankelijkheden installeren

Voor de uploadstap naar Aurora-gegevens zijn Python pakketten vereist. Installeer ze voordat u implementeert:

pip install -r terraform/requirements-generator.txt

GPU-quotum controleren

Controleer of uw abonnement een quotum heeft voor de GPU-SKU in uw doelregio. Vervang door eastus2 uw voorkeursregio:

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

Notitie

Als u geen GPU-quotum hebt of de infrastructuur zonder GPU's wilt valideren, implementeert u met gpu_enabled=false:

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

Het pad met alleen de CPU is nuttig voor het valideren van de infrastructuur en wachtrijconfiguratie. Workloads die GPU’s aanvragen, blijven in de status Pending.

Implementeren met Terraform

Initialiseer en pas de Terraform-module toe:

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

De Terraform-module maakt:

  • Een AKS-cluster met ingeschakelde OIDC-issuer en workload identity
  • Een systeemknooppuntgroep en een GPU-knooppuntgroep (wanneer gpu_enabled=true)
  • KubeRay-operator en Kueue-controller (Helm-releases van MCR)
  • GPU-bewakingsdaemonSet (wanneer gpu_enabled=true)
  • Azure Blob Storage-opslagaccount met aurora en llm-pipeline containers
  • Door de gebruiker toegewezen beheerde identiteit met de rol Inzender voor opslagblobgegevens
  • Gefedereerde aanmeldingsgegevens voor de ray-workload ServiceAccount
  • Vooraf voorbereide gegevenssets (Aurora WeatherBench2-gegevens en viggo NLG-gegevensset)

Zie de map 1-infrastructure directory in de repository voor de volledige configuratie van de Terraform-module.

Verbinding maken met het cluster

Haal de referenties voor uw nieuwe AKS-cluster op:

eval "$(terraform output -raw get_credentials_command)"

De implementatie controleren

Controleer of de operators actief zijn en of er knooppunten beschikbaar zijn:

  1. Controleer de KubeRay-operator:

    kubectl -n kuberay-system get pods
    

    Verwachte uitvoer:

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

    kubectl -n kueue-system get pods
    

    Verwachte uitvoer:

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

    kubectl get nodes
    

    Verwachte uitvoer (met 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-bewaking controleren (alleen wanneer gpu_enabled=true):

    kubectl -n gpu-monitoring get daemonsets
    

    Verwachte uitvoer:

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

De hulpbronnen opschonen

Als u alle Azure resources wilt verwijderen die u hebt gemaakt met behulp van deze module:

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

Volgende stap