Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans cet article, vous déployez le modèle météo Aurora affiné en tant que point de terminaison HTTP persistant à l’aide de Ray Serve sur Azure Kubernetes Service (AKS). Cette méthode utilise une ressource RayService pour un service persistant et n’est pas soumise au contrôle d’admission de Kueue.
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
- Infrastructure déployée à la suite de Déployer l’infrastructure pour Ray et Kueue sur AKS.
- Espace de noms et compte de service créés suite à la configuration des files d’attente Kueue pour les charges de travail Ray sur AKS.
- Le réglage fin d’Aurora est terminé après avoir suivi Réglez finement le modèle météorologique Aurora avec Ray sur AKS - le checkpoint LoRA doit exister à l’emplacement
aurora/checkpoints/<run-id>/last.safetensorsdans le stockage Blob. -
envsubstinstallé (gettextpackage sur Linux,brew install gettextsur macOS).
Définir des variables d’environnement
Accédez à l’exemple de service en ligne dans le référentiel cloné et configurez les variables d’environnement requises :
cd <path-to-cloned-repo>/AKS/examples/kueue-and-ray-on-aks/3-workloads/online-serving
export AZURE_STORAGE_ACCOUNT_NAME=$(terraform -chdir=../../1-infrastructure/terraform output -raw storage_account_name)
export AURORA_RUN_ID=<your-aurora-finetune-job-name>
source env.example
Remarque
AURORA_RUN_ID correspond au JOB_NAME de l’exécution de réglage fin Aurora que vous avez terminée. Vous pouvez le trouver avec :
az storage blob list -c aurora --prefix checkpoints/ \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
Déployer le service
Déployez RayService :
./submit-service.sh
Le script crée un ConfigMap à partir du code d’application de service, affiche le manifeste RayService via envsubst, et l’applique. L’opérateur KubeRay crée le cluster Ray et déploie l’application Serve.
Tip
Exécutez ./submit-service.sh --dry-run pour valider le manifeste rendu sans l’appliquer au cluster.
Remarque
RayService n’est pas soumis au contrôle d’admission de Kueue. Les charges de travail de service sont durables et nécessitent des ressources dédiées plutôt qu'une sémantique de file d’attente par lots.
Vérifier le déploiement
Attendez jusqu’à ce que RayService indique l’état « Running » :
kubectl -n ray get rayservice ${SERVICE_NAME} -w
Sortie attendue :
NAME SERVICE STATUS NUM SERVE ENDPOINTS
aurora-serve Running 1
Tester le point de terminaison
Redirigez le port du service « serve » et envoyez des requêtes de test :
kubectl -n ray port-forward svc/${SERVICE_NAME}-serve-svc 8000:8000
Vérification de l’état :
curl http://localhost:8000${ROUTE_PREFIX}
Sortie attendue :
{"status":"ok","gpu_name":"NVIDIA A100-SXM4-80GB","run_id":"<your-run-id>","adapter":"checkpoints/<your-run-id>/last.safetensors"}
Demande de prévision :
curl -X POST http://localhost:8000${ROUTE_PREFIX} \
-H 'Content-Type: application/json' \
-d '{"init_file": "init-2021-01-01-00z.npz", "lead_hours": 6}'
Sortie attendue :
{
"init_file": "init-2021-01-01-00z.npz",
"lead_hours": 6,
"surface_variables": {
"2t": {"shape": [1,1,52,100], "mean": 298.76, "min": 272.0, "max": 302.0},
"10u": {"shape": [1,1,52,100], "mean": -2.21, "min": -18.0, "max": 15.38},
"10v": {"shape": [1,1,52,100], "mean": 0.92, "min": -13.88,"max": 18.88},
"msl": {"shape": [1,1,52,100], "mean": 101320.07, "min": 100352.0, "max": 101888.0}
},
"gpu_name": "NVIDIA A100-SXM4-80GB",
...
}
La réponse inclut des statistiques récapitulatives par variable (forme, moyenne, min, max) pour chaque variable de surface dans la prévision.
Référence de configuration
| Variable | Default | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(obligatoire) | Compte de stockage à partir du module 1 |
AURORA_RUN_ID |
(obligatoire) | JOB_NAME d’une exécution d’aurora-finetune terminée |
AURORA_INPUT_CONTAINER |
aurora |
Conteneur avec des données d'initialisation |
AURORA_ADAPTER_CONTAINER |
aurora |
Conteneur avec le point de contrôle LoRA |
AURORA_INIT_FILE |
init-2021-01-01-00z.npz |
Fichier d’initialisation par défaut pour les requêtes |
AURORA_LEAD_HOURS |
6 |
Délai de prévision par défaut (doit être un multiple de 6h) |
AURORA_LORA_RANK |
8 |
Classement LoRA (doit correspondre à l’entraînement) |
AURORA_REQUIRE_GPU_NAME |
A100 |
Vérification du nom du GPU (vide pour ignorer) |
SERVICE_NAME |
aurora-serve |
Nom de la ressource RayService |
ROUTE_PREFIX |
/aurora |
Préfixe d’itinéraire HTTP pour le point de terminaison de service |
CONFIGMAP_NAME |
aurora-serve-scripts |
Nom du ConfigMap contenant le script de service |
Nettoyer les ressources
Supprimez RayService et son ConfigMap :
kubectl -n ray delete rayservice ${SERVICE_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}