Kötegelt inferencia futtatása Ray-lel az AKS-en

Ebben a cikkben egy Olyan RayJob-feladatot küld be, amely vLLM offline kötegkövetkeztetést futtat az LLM-betanítási példa által létrehozott LoRA-adapterrel. A feladat beolvassa a Viggo tesztfelosztását és a LoRA-adaptert az Azure Blob Storage-ból, előrejelzéseket generál egyetlen GPU használatával, majd feltölti az eredményeket.

Fontos

A nyílt forráskódú szoftverek az AKS dokumentációjában és mintáiban szerepelnek. Az Ön által üzembe helyezett szoftverek nem tartoznak az AKS szolgáltatási szintű szerződéseibe, a korlátozott jótállásba és az Azure-támogatásba. Mivel nyílt forráskódú technológiát használ az AKS mellett, tekintse meg a megfelelő közösségek és projektfenntartók által rendelkezésre álló támogatási lehetőségeket a terv kidolgozásához.

A Microsoft felelősséget vállal az AKS-en üzembe helyezhető nyílt forráskódú csomagok elkészítéséért. Ez a felelősség magában foglalja a buildelési, vizsgálati, aláírási, érvényesítési és gyorsjavítási folyamat teljes tulajdonjogát, valamint a tárolólemezképek bináris fájljainak vezérlését. További információért lásd: Az AKS sebezhetőség-kezelése és AKS támogatás lefedettsége.

Prerequisites

Környezeti változók beállítása

Navigáljon a klónozott tárházban található kötegelt inferenciapéldához, és állítsa be a szükséges környezeti változókat:

cd <path-to-cloned-repo>/AKS/examples/kueue-and-ray-on-aks/3-workloads/batch-inference
export AZURE_STORAGE_ACCOUNT_NAME=$(terraform -chdir=../../1-infrastructure/terraform output -raw storage_account_name)
source env.example

Note

Ha csapatvárólistákat konfigurált (B lehetőség), állítsa be a(z) export QUEUE_NAME=team-a vagy export QUEUE_NAME=team-b elemet a(z) source env.example futtatása előtt. Az alapértelmezett beállítás QUEUE_NAME=default csak az egysoros konfigurációval működik (A lehetőség).

A számítási feladat elküldése

Küldje el a kötegelt következtetést RayJob:

./submit.sh

A szkript létrehoz egy ConfigMap-et a következtetési szkriptből, megjeleníti a jegyzéksablont envsubst, és alkalmazza azt. A Kueue elismeri a feladatot, ha 1 GPU érhető el a konfigurált várólistában.

Jótanács

Futtassa a(z) ./submit.sh --dry-run parancsot a renderelt manifestum ellenőrzéséhez anélkül, hogy alkalmazná a fürtön.

A haladás nyomon követése

Keresse meg és exportálja a feladatnevet, ha egy új shellben dolgozik:

export JOB_NAME=$(kubectl -n ray get rayjob --no-headers -o custom-columns=":metadata.name" | grep batch-inference)

Nézze meg a RayJob állapotát és a Kueue-belépést:

kubectl -n ray get rayjob ${JOB_NAME} -w
kubectl -n ray get workload -w

A feladat befejeződésekor várható kimenet:

NAME                         JOB STATUS   DEPLOYMENT STATUS   START TIME             END TIME               AGE
batch-inference-xxxxxxxxxx   SUCCEEDED    Complete            2026-01-01T00:00:00Z   2026-01-01T00:09:00Z   9m
NAME                                      QUEUE     RESERVED IN     ADMITTED   FINISHED   AGE
rayjob-batch-inference-xxxxxxxxxx-xxxxx   default   cluster-queue   True       True       9m

A worker naplóinak követése:

kubectl -n ray logs -l ray.io/cluster=$(kubectl -n ray get rayjob ${JOB_NAME} -o jsonpath='{.status.rayClusterName}') -f --tail=100

Eredmények ellenőrzése

Előrejelzési fájlok listázása a Blob Storage-ban:

az storage blob list -c llm-pipeline --prefix "inference/${JOB_NAME}/" \
  --account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table

Várt kimenet:

Name                                                 Blob Type    Blob Tier    Length    Content Type
---------------------------------------------------  -----------  -----------  --------  ------------------------
inference/<job-name>/metrics.json                    BlockBlob    Hot          128       application/octet-stream
inference/<job-name>/predictions.jsonl               BlockBlob    Hot          411777    application/octet-stream

Töltse le és vizsgálja meg az előrejelzéseket:

az storage blob download -c llm-pipeline \
  -n "inference/${JOB_NAME}/predictions.jsonl" \
  --account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login \
  --file /tmp/predictions.jsonl
head -1 /tmp/predictions.jsonl | python3 -m json.tool

Várt kimenet:

{
    "input": "I'm wondering, have you played any games you found genuinely shocking?",
    "expected": "request(specifier[shocking])",
    "generated": "request_explanation"
}

Konfigurációs referencia

Változó Alapértelmezett Description
AZURE_STORAGE_ACCOUNT_NAME (kötelező) Tárfiók az 1. modulból
JOB_NAME batch-inference-<timestamp> Egyedi RayJob-név
QUEUE_NAME default Kueue LocalQueue név
LLM_DATA_CONTAINER llm-pipeline Blobtároló viggo tesztadatokkal
LLM_LORA_CONTAINER llm-pipeline Blobtároló LoRA-adapterekkel
CONFIGMAP_NAME batch-inference-scripts A következtetési szkriptet tartalmazó ConfigMap neve

Erőforrások tisztítása

Törölje a RayJob és annak konfigurációtérképét:

kubectl -n ray delete rayjob ${JOB_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}

Az összes infrastruktúra lebontásához tekintse meg az Infrastruktúra üzembe helyezése – Erőforrások törlése című témakört.

Következő lépések