Een model bedienen met Ray Serve op AKS

In dit artikel implementeert u het nauwkeurig afgestemde Aurora-weermodel als een permanent HTTP-eindpunt met behulp van Ray Serve op Azure Kubernetes Service (AKS). Deze methode maakt gebruik van een RayService-resource voor langdurige bediening en wordt niet door Kueue beheerd.

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

Omgevingsvariabelen instellen

Navigeer naar het voorbeeld van de onlineservice in de gekloonde opslagplaats en configureer de vereiste omgevingsvariabelen:

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

Notitie

AURORA_RUN_ID is de JOB_NAME van uw voltooide Aurora fine-tuning. U vindt deze met:

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

De service implementeren

De RayService implementeren:

./submit-service.sh

Met het script wordt een ConfigMap gemaakt op basis van de toepassingscode van de server, wordt het RayService-manifest weergegeven via envsubsten wordt het toegepast. De KubeRay-operator maakt het Ray-cluster en implementeert de Serve-toepassing.

Tip

Voer ./submit-service.sh --dry-run uit om het gerenderde manifest te valideren zonder dit toe te passen op het cluster.

Notitie

RayService valt niet onder de toelatingscontrole van Kueue. Het leveren van workloads duurt lang en heeft toegewezen resources nodig in plaats van semantiek voor batchwachtrijen.

De implementatie controleren

Wacht tot de RayService de status Running meldt:

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

Verwachte uitvoer:

NAME           SERVICE STATUS   NUM SERVE ENDPOINTS
aurora-serve   Running          1

Het eindpunt testen

Stel poortdoorsturing in voor de service 'serve' en verzend testverzoeken:

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

Statuscontrole:

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

Verwachte uitvoer:

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

Prognoseaanvraag:

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

Verwachte uitvoer:

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

Het antwoord bevat samenvattingsstatistieken per variabele (shape, gemiddelde, min, max) voor elke oppervlaktevariabele in de prognose.

Configuratiegids

Variabele Default Description
AZURE_STORAGE_ACCOUNT_NAME (vereist) Opslagaccount van module 1
AURORA_RUN_ID (vereist) JOB_NAME van een voltooide aurora-finetune-run
AURORA_INPUT_CONTAINER aurora Container met init-gegevens
AURORA_ADAPTER_CONTAINER aurora Container met het LoRA-controlepunt
AURORA_INIT_FILE init-2021-01-01-00z.npz Standaard init-bestand voor aanvragen
AURORA_LEAD_HOURS 6 Standaard prognose-voorlooptijd (moet een veelvoud van 6 uur zijn)
AURORA_LORA_RANK 8 LoRA-rank (moet overeenkomen met de training)
AURORA_REQUIRE_GPU_NAME A100 Controle van GPU-naam (leeg laten om over te slaan)
SERVICE_NAME aurora-serve Naam voor de RayService-resource
ROUTE_PREFIX /aurora HTTP-routevoorvoegsel voor het service-eindpunt
CONFIGMAP_NAME aurora-serve-scripts Naam voor de ConfigMap met het serverscript

De hulpbronnen opschonen

Verwijder de RayService en de bijbehorende ConfigMap:

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

Volgende stappen