Nasazení modelu pomocí Ray Serve na AKS

V tomto článku nasadíte jemně vyladěný model počasí Aurora jako trvalý koncový bod HTTP pomocí Ray Serve na Azure Kubernetes Service (AKS). Tato metoda používá prostředek RayService pro dlouhodobé poskytování služby a nepodléhá přijímacímu řízení systémem Kueue.

Important

Opensourcový software je zmíněn v dokumentaci a ukázkách AKS. Software, které nasadíte, je vyloučeno z dohod o úrovni služeb AKS, omezené záruky a podpory Azure. Při používání open-source technologií spolu s AKS konzultujte dostupné možnosti podpory od příslušných komunit a správců projektů, abyste vytvořili plán.

Microsoft přebírá odpovědnost za vytváření balíčků s otevřeným zdrojovým kódem, které nasazujeme na AKS. Tato odpovědnost zahrnuje plnou správu procesu sestavení, skenování, podepisování, validace a hotfixů, spolu s kontrolou nad binárními soubory v kontejnerových obrazech. Další informace najdete v tématu Řízení zranitelností pro AKS a Podpora pro AKS a rozsah pokrytí.

Prerequisites

Nastavení proměnných prostředí

Přejděte do příkladu online obsluhy v klonovaném úložišti a nakonfigurujte požadované proměnné prostředí:

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

Note

AURORA_RUN_ID je JOB_NAME z vašeho dokončeného běhu dolaďování Aurora. Najdete ho pomocí:

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

Nasazení služby

Nasazení služby RayService:

./submit-service.sh

Skript vytvoří objekt ConfigMap z obslužného kódu aplikace, vykreslí manifest RayService prostřednictvím envsubsta použije ho. Operátor KubeRay vytvoří cluster Ray a nasadí aplikaci Serve.

Tip

Spusťte ./submit-service.sh --dry-run, chcete-li ověřit vygenerovaný manifest, aniž by se aplikoval do clusteru.

Note

RayService nepodléhá řízení přijetí pomocí Kueue. Provozní úlohy jsou dlouhodobého charakteru a vyžadují vyhrazené zdroje, nikoli semantiku dávkových front.

Ověření nasazení

Počkejte, dokud RayService nenahlásí stav Running:

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

Očekávaný výstup:

NAME           SERVICE STATUS   NUM SERVE ENDPOINTS
aurora-serve   Running          1

Testování koncového bodu

Nastavte přesměrování portů pro službu serve a odešlete testovací požadavky:

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

Kontrola stavu:

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

Očekávaný výstup:

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

Požadavek prognózy:

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

Očekávaný výstup:

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

Odpověď zahrnuje souhrnnou statistiku pro jednotlivé proměnné (tvar, průměr, minimum, maximum) pro každou proměnnou povrchu v prognóze.

Referenční informace ke konfiguraci

Proměnné Výchozí Description
AZURE_STORAGE_ACCOUNT_NAME (povinné) Účet úložiště z modulu 1
AURORA_RUN_ID (povinné) JOB_NAME z dokončeného běhu aurora-finetune
AURORA_INPUT_CONTAINER aurora Kontejner s inicializačními daty
AURORA_ADAPTER_CONTAINER aurora Kontejner s kontrolním bodem LoRA
AURORA_INIT_FILE init-2021-01-01-00z.npz Výchozí inicializační soubor pro požadavky
AURORA_LEAD_HOURS 6 Výchozí časový předstih prognózy (musí být násobkem 6 hodin)
AURORA_LORA_RANK 8 Hodnost LoRA (musí odpovídat hodnotě při trénování)
AURORA_REQUIRE_GPU_NAME A100 Kontrola názvu GPU (prázdné pro přeskočení)
SERVICE_NAME aurora-serve Název prostředku RayService
ROUTE_PREFIX /aurora Předpona trasy HTTP pro koncový bod služby
CONFIGMAP_NAME aurora-serve-scripts Název objektu ConfigMap, který má obslužný skript

Vyčistěte zdroje

Odstraňte RayService a jeho objekt ConfigMap:

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

Další kroky