Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln skickar du en RayJob som kör vLLM offline batch-slutsatsdragning med hjälp av LoRA-adaptern som produceras av LLM-träningsexemplet. Jobbet läser viggo-testdelningen och LoRA-adaptern från Azure Blob Storage, genererar förutsägelser på en enda GPU och laddar upp resultatet.
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
- Infrastruktur som distribueras efter Distribuera infrastruktur för Ray och Kueue på AKS.
- Kueue-köer som konfigurerats enligt Konfigurera Kueue-köer för Ray-arbetsbelastningar på AKS.
- Minst en A100 GPU tillgänglig i klustret.
- LLM-träningen har slutförts enligt Träna en LLM med Ray på AKS – LoRA-adaptern måste finnas på platsen
llm-pipeline/lora/i bloblagringen. -
envsubstinstallerat (gettextpaket på Linux,brew install gettextpå macOS).
Ange miljövariabler
Gå till batchinferensexemplet 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/batch-inference
export AZURE_STORAGE_ACCOUNT_NAME=$(terraform -chdir=../../1-infrastructure/terraform output -raw storage_account_name)
source env.example
Anmärkning
Om du har konfigurerat teamköer (alternativ B) anger du export QUEUE_NAME=team-a eller export QUEUE_NAME=team-b innan du kör source env.example. Standardinställningen QUEUE_NAME=default fungerar bara med konfigurationen med en kö (alternativ A).
Skicka arbetsbelastningen
Skicka batchinferensen RayJob:
./submit.sh
Skriptet skapar en ConfigMap från slutsatsdragningsskriptet, renderar manifestmallen via envsubstoch tillämpar den. Kueue medger jobbet när 1 GPU är tillgängligt i den konfigurerade kön.
Tip
Kör ./submit.sh --dry-run för att verifiera det renderade manifestet utan att tillämpa det på klustret.
Övervaka förloppet
Hitta och exportera jobbnamnet om du är i ett nytt gränssnitt:
export JOB_NAME=$(kubectl -n ray get rayjob --no-headers -o custom-columns=":metadata.name" | grep batch-inference)
Titta på RayJob-status och Kueue-antagning:
kubectl -n ray get rayjob ${JOB_NAME} -w
kubectl -n ray get workload -w
Förväntade utdata när jobbet är klart:
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
Följ worker-loggarna:
kubectl -n ray logs -l ray.io/cluster=$(kubectl -n ray get rayjob ${JOB_NAME} -o jsonpath='{.status.rayClusterName}') -f --tail=100
Verifiera resultat
Lista förutsägelsefiler i bloblagring:
az storage blob list -c llm-pipeline --prefix "inference/${JOB_NAME}/" \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
Förväntat resultat:
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
Ladda ned och inspektera förutsägelserna:
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
Förväntat resultat:
{
"input": "I'm wondering, have you played any games you found genuinely shocking?",
"expected": "request(specifier[shocking])",
"generated": "request_explanation"
}
Konfigurationsreferens
| Variabel | Standardinställning | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(krävs) | Lagringskonto från modul 1 |
JOB_NAME |
batch-inference-<timestamp> |
Unikt RayJob-namn |
QUEUE_NAME |
default |
Namn på Kueue LocalQueue |
LLM_DATA_CONTAINER |
llm-pipeline |
Blobcontainer med viggo-testdata |
LLM_LORA_CONTAINER |
llm-pipeline |
Blobcontainer med LoRA-adaptrar |
CONFIGMAP_NAME |
batch-inference-scripts |
Namn på ConfigMap som innehåller inferensskriptet |
Rensa resurser
Ta bort RayJob och dess ConfigMap:
kubectl -n ray delete rayjob ${JOB_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}
Om du vill ta bort all infrastruktur, se Distribuera infrastruktur – Rensa resurser.