Déployer l’infrastructure pour Ray et Kueue sur AKS

Dans cet article, vous déployez l’infrastructure nécessaire pour exécuter des charges de travail Ray AI avec Kueue sur Azure Kubernetes Service (AKS). Le module Terraform provisionne un cluster AKS avec des pools de nœuds GPU, installe l’opérateur KubeRay et le contrôleur Kueue via Helm, crée Stockage Blob Azure avec des jeux de données pré-intermédiaires et configure l’identité de la charge de travail pour un accès sécurisé.

Important

Les logiciels open source sont mentionnés dans la documentation et les exemples AKS. Les logiciels que vous déployez sont exclus des contrats de niveau de service AKS, de la garantie limitée et du support Azure. Quand vous utilisez une technologie open source avec AKS, consultez les options de support disponibles auprès des communautés et responsables de projet respectifs pour élaborer un plan.

Microsoft assume la responsabilité de la génération des packages open source que nous déployons sur AKS. Cette responsabilité comprend la maîtrise complète des processus de génération, d’analyse, de signature et de validation ainsi que l’application de correctifs logiciels et le contrôle des fichiers binaires présents dans les images conteneur. Pour plus d’informations, consultez Gestion des vulnérabilités pour AKS et Couverture du support AKS.

Prérequis

  • Un abonnement Azure. Si vous n’en avez pas, créez un compte gratuit.
  • Azure CLI version 2.70 ou ultérieure, authentifiée avec az login. Si vous avez plusieurs abonnements, définissez le bon abonnement avec az account set --subscription <subscription-id>.
  • Terraform version 1.6 ou ultérieure.
  • kubectl version 1.28 ou ultérieure. Installer avec az aks install-cli.
  • Python version 3.10 ou ultérieure (obligatoire pour la génération de données Aurora).
  • Quota GPU dans votre région cible Azure. La configuration par défaut provisionne un Standard_ND96amsr_A100_v4 nœud (8×A100 80 Go de GPU).

Cloner le référentiel

Clonez le référentiel Azure/AKS et accédez au module d’infrastructure :

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

Installer des dépendances Python

L’étape de chargement des données Aurora nécessite Python packages. Installez-les avant de déployer :

pip install -r terraform/requirements-generator.txt

Vérifier le quota GPU

Vérifiez que votre abonnement dispose d’un quota pour la référence SKU GPU dans votre région cible. Remplacez par eastus2 votre région préférée :

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

Remarque

Si vous n’avez pas de quota GPU ou que vous souhaitez valider l’infrastructure sans GPU, déployez avec gpu_enabled=false:

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

La voie CPU uniquement est utile pour valider la configuration de l’infrastructure et de la file d’attente. Les charges de travail qui demandent des GPU restent en attente.

Déployer avec Terraform

Initialisez et appliquez le module Terraform :

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

Le module Terraform crée :

  • Un cluster AKS pour lequel l’émetteur OIDC et l’identité de charge de travail sont activés
  • Un pool de nœuds système et un pool de nœuds GPU (quand gpu_enabled=true)
  • Opérateur KubeRay et contrôleur Kueue (versions Helm provenant de MCR)
  • DaemonSet de surveillance des GPU (quand gpu_enabled=true)
  • compte Stockage Blob Azure avec aurora et llm-pipeline conteneurs
  • Une identité managée affectée par l’utilisateur avec le rôle Contributeur aux données Blob du stockage
  • Justificatif d’identité fédérée pour le ray-workload ServiceAccount
  • Jeux de données préchargés (données Aurora WeatherBench2 et jeu de données viggo NLG)

Pour obtenir la configuration complète du module Terraform, consultez le répertoire d’infrastructure 1 dans le référentiel.

Se connecter au cluster

Récupérez les informations d’identification de votre nouveau cluster AKS :

eval "$(terraform output -raw get_credentials_command)"

Vérifier le déploiement

Vérifiez que les opérateurs sont en cours d’exécution et que les nœuds sont disponibles :

  1. Vérifiez l’opérateur KubeRay :

    kubectl -n kuberay-system get pods
    

    Sortie attendue :

    NAME                                READY   STATUS    RESTARTS   AGE
    kuberay-operator-xxxxxxxxxx-xxxxx   1/1     Running   0          5m
    
  2. Vérifiez le contrôleur Kueue :

    kubectl -n kueue-system get pods
    

    Sortie attendue :

    NAME                                            READY   STATUS    RESTARTS   AGE
    kueue-controller-manager-xxxxxxxxxx-xxxxx       1/1     Running   0          5m
    
  3. Vérifiez les nœuds :

    kubectl get nodes
    

    Sortie attendue (avec 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. Vérifiez la supervision du GPU (uniquement lorsque gpu_enabled=true):

    kubectl -n gpu-monitoring get daemonsets
    

    Sortie attendue :

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

Nettoyer les ressources

Pour supprimer toutes les ressources Azure que vous avez créées à l’aide de ce module :

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

Étape suivante