Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo articolo si distribuisce il modello meteo Aurora ottimizzato come endpoint HTTP persistente usando Ray Serve in Servizio Azure Kubernetes (AKS). Questo metodo usa una risorsa RayService per il serving di lunga durata e non è soggetta al controllo di ammissione di Kueue.
Importante
Il software open source è citato nella documentazione e negli esempi di AKS. Il software che distribuisci è escluso dagli accordi sul livello di servizio di AKS, dalla garanzia limitata e dal supporto Azure. Quando si utilizza una tecnologia open source insieme ad AKS, consulta le opzioni di supporto offerte dalle rispettive community e dai responsabili dei progetti per definire un piano.
Microsoft si assume la responsabilità di creare i pacchetti open source che distribuiamo su AKS. Tale responsabilità comprende la piena responsabilità del processo di compilazione, scansione, firma, convalida e applicazione degli hotfix, oltre al controllo dei file binari nelle immagini container. Per altre informazioni, vedere Gestione delle vulnerabilità per il servizio Azure Kubernetes (AKS) e Copertura del supporto del servizio Azure Kubernetes (AKS).
Prerequisiti
- Infrastruttura distribuita seguendo Distribuire l'infrastruttura per Ray e Kueue in AKS.
- Spazio dei nomi e account di servizio creati seguendo Configurare le code Kueue per i carichi di lavoro Ray in AKS.
- La messa a punto di Aurora è stata completata seguendo Ottimizzare il modello meteo Aurora con Ray in AKS: il checkpoint LoRA deve trovarsi in
aurora/checkpoints/<run-id>/last.safetensorsnell'archiviazione BLOB. -
envsubstinstallato (gettextpacchetto per Linux,brew install gettextsu macOS).
Impostare le variabili di ambiente
Passare all'esempio di servizio online nel repository clonato e configurare le variabili di ambiente necessarie:
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
Nota
AURORA_RUN_ID è il JOB_NAME dell'esecuzione di fine-tuning Aurora completata. È possibile trovarlo con:
az storage blob list -c aurora --prefix checkpoints/ \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
Distribuisci il servizio
Distribuire RayService:
./submit-service.sh
Lo script crea un oggetto ConfigMap dal codice dell'applicazione che gestisce, esegue il rendering del manifesto RayService tramite envsubste lo applica. L'operatore KubeRay crea il cluster Ray e distribuisce l'applicazione Serve.
Tip
Eseguire ./submit-service.sh --dry-run per convalidare il manifesto di cui è stato eseguito il rendering senza applicarlo al cluster.
Nota
RayService non è soggetto al controllo di ammissione da parte di Kueue. La gestione dei carichi di lavoro è di lunga durata e richiede risorse dedicate anziché semantica della coda batch.
Verificare la distribuzione
Attendere finché RayService non segnala lo stato In esecuzione:
kubectl -n ray get rayservice ${SERVICE_NAME} -w
Output previsto:
NAME SERVICE STATUS NUM SERVE ENDPOINTS
aurora-serve Running 1
Testare l'endpoint
Eseguire il port forwarding del servizio serve e inviare richieste di test:
kubectl -n ray port-forward svc/${SERVICE_NAME}-serve-svc 8000:8000
Controllo stato:
curl http://localhost:8000${ROUTE_PREFIX}
Output previsto:
{"status":"ok","gpu_name":"NVIDIA A100-SXM4-80GB","run_id":"<your-run-id>","adapter":"checkpoints/<your-run-id>/last.safetensors"}
Richiesta di previsione:
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}'
Output previsto:
{
"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 risposta include statistiche di riepilogo per variabile (forma, media, min, max) per ogni variabile di superficie nella previsione.
Informazioni di riferimento sulla configurazione
| Variabile | Predefinito | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(obbligatorio) | Account di archiviazione dal modulo 1 |
AURORA_RUN_ID |
(obbligatorio) | JOB_NAME da un'esecuzione aurora-finetune completata |
AURORA_INPUT_CONTAINER |
aurora |
Contenitore con dati di inizializzazione |
AURORA_ADAPTER_CONTAINER |
aurora |
Contenitore con il checkpoint LoRA |
AURORA_INIT_FILE |
init-2021-01-01-00z.npz |
File init predefinito per le richieste |
AURORA_LEAD_HOURS |
6 |
Tempo di anticipo predefinito della previsione (deve essere un multiplo di 6 ore) |
AURORA_LORA_RANK |
8 |
Rango LoRA (deve corrispondere all'addestramento) |
AURORA_REQUIRE_GPU_NAME |
A100 |
Verificare il nome della GPU (lasciare vuoto per ignorarlo) |
SERVICE_NAME |
aurora-serve |
Nome della risorsa RayService |
ROUTE_PREFIX |
/aurora |
Prefisso di route HTTP per l'endpoint di servizio |
CONFIGMAP_NAME |
aurora-serve-scripts |
Nome della ConfigMap che contiene lo script di servizio |
Pulire le risorse
Eliminare RayService e il relativo ConfigMap:
kubectl -n ray delete rayservice ${SERVICE_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}