Distribuera en modell med Ray Serve på AKS

I den här artikeln distribuerar du den finjusterade Aurora-vädermodellen som en beständig HTTP-slutpunkt med hjälp av Ray Serve på Azure Kubernetes Service (AKS). Den här metoden använder en RayService resurs för långvarig drift och omfattas inte av Kueues antagningskontroll.

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

Ange miljövariabler

Gå till exemplet med onlineservern i den klonade lagringsplatsen och konfigurera de miljövariabler som krävs:

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

Anmärkning

AURORA_RUN_ID är JOB_NAME från din slutförda Aurora-finjusteringskörning. Du hittar den med:

az storage blob list -c aurora --prefix checkpoints/ \
  --account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table

Distribuera tjänsten

Driftsätt RayService:

./submit-service.sh

Skriptet skapar en ConfigMap från programkoden som betjänar, renderar RayService-manifestet via envsubstoch tillämpar det. KubeRay-operatorn skapar Ray-klustret och distribuerar Serve-programmet.

Tip

Kör ./submit-service.sh --dry-run för att verifiera det renderade manifestet utan att tillämpa det på klustret.

Anmärkning

RayService omfattas inte av antagningskontroll i Kueue. Produktionsarbetsbelastningar är långvariga och kräver dedikerade resurser snarare än semantik för batchköer.

Verifiera driftsättningen

Vänta tills RayService rapporterar statusen Running:

kubectl -n ray get rayservice ${SERVICE_NAME} -w

Förväntat resultat:

NAME           SERVICE STATUS   NUM SERVE ENDPOINTS
aurora-serve   Running          1

Testa slutpunkten

Vidarebefordra tjänsttjänsten och skicka testbegäranden:

kubectl -n ray port-forward svc/${SERVICE_NAME}-serve-svc 8000:8000

Hälsokontroll:

curl http://localhost:8000${ROUTE_PREFIX}

Förväntat resultat:

{"status":"ok","gpu_name":"NVIDIA A100-SXM4-80GB","run_id":"<your-run-id>","adapter":"checkpoints/<your-run-id>/last.safetensors"}

Prognosförfrågan:

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}'

Förväntat resultat:

{
  "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",
  ...
}

Svaret innehåller sammanfattningsstatistik per variabel (form, medelvärde, min, max) för varje ytvariabel i prognosen.

Konfigurationsreferens

Variabel Standardinställning Description
AZURE_STORAGE_ACCOUNT_NAME (krävs) Lagringskonto från modul 1
AURORA_RUN_ID (krävs) JOB_NAME från en slutförd aurora-finetune-körning
AURORA_INPUT_CONTAINER aurora Container med initieringsdata
AURORA_ADAPTER_CONTAINER aurora Container med LoRA-kontrollpunkten
AURORA_INIT_FILE init-2021-01-01-00z.npz Standardinit-fil för begäranden
AURORA_LEAD_HOURS 6 Standardtid för prognostiserad ledtid (måste vara en 6h-multipel)
AURORA_LORA_RANK 8 LoRA-rangordning (måste matcha träning)
AURORA_REQUIRE_GPU_NAME A100 GPU-namnkontroll (tom att hoppa över)
SERVICE_NAME aurora-serve Namn på RayService-resursen
ROUTE_PREFIX /aurora HTTP-ruttprefix för serve-slutpunkten
CONFIGMAP_NAME aurora-serve-scripts Namn på ConfigMap som innehåller serverskriptet

Rensa resurser

Ta bort RayService och dess ConfigMap:

kubectl -n ray delete rayservice ${SERVICE_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}

Nästa steg