Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku odešlete úlohu RayJob, která spouští offline dávkovou inferenci pomocí vLLM s adaptérem LoRA vytvořeným pomocí ukázky trénování LLM. Úloha čte viggo test split a LoRA adaptér z Azure Blob Storage, generuje předpovědi na jednom GPU a nahraje výsledky.
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
- Infrastruktura nasazená po nasazení infrastruktury pro Ray a Kueue v AKS
- Fronty Kueue nakonfigurované podle Konfigurace front Kueue pro úlohy Ray v AKS.
- Alespoň jeden GPU A100 dostupný v clusteru.
- Trénování LLM bylo dokončeno po trénování LLM s Rayem v AKS – adaptér LoRA musí existovat v
llm-pipeline/lora/úložišti objektů blob. -
envsubstnainstalováno (gettextbalíček v Linuxu,brew install gettextv systému macOS).
Nastavení proměnných prostředí
Přejděte na příklad dávkového inferování v naklonovaném repozitáři a nastavte požadované proměnné prostředí:
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
Pokud jste nakonfigurovali týmové fronty (možnost B), nastavte export QUEUE_NAME=team-a nebo export QUEUE_NAME=team-b před spuštěním source env.example. Výchozí možnost QUEUE_NAME=default funguje pouze s jednofrontovou konfigurací (možnost A).
Odeslání úlohy
Odešlete dávkové odvození RayJob:
./submit.sh
Skript vytvoří objekt ConfigMap ze skriptu odvozování, vykreslí šablonu manifestu prostřednictvím envsubsta použije ji. Kueue povolí spuštění úlohy, když je v nakonfigurované frontě k dispozici 1 GPU.
Tip
Spusťte ./submit.sh --dry-run pro ověření vykresleného manifestu, aniž by se použil na cluster.
Monitorování postupu
Pokud jste v novém prostředí, vyhledejte a exportujte název úlohy:
export JOB_NAME=$(kubectl -n ray get rayjob --no-headers -o custom-columns=":metadata.name" | grep batch-inference)
Podívejte se na stav RayJob a přijetí Kueue:
kubectl -n ray get rayjob ${JOB_NAME} -w
kubectl -n ray get workload -w
Očekávaný výstup po dokončení úlohy:
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
Sledujte logy workeru:
kubectl -n ray logs -l ray.io/cluster=$(kubectl -n ray get rayjob ${JOB_NAME} -o jsonpath='{.status.rayClusterName}') -f --tail=100
Ověření výsledků
Výpis souborů predikce v úložišti objektů blob:
az storage blob list -c llm-pipeline --prefix "inference/${JOB_NAME}/" \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
Očekávaný výstup:
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
Stáhněte a zkontrolujte predikce:
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
Očekávaný výstup:
{
"input": "I'm wondering, have you played any games you found genuinely shocking?",
"expected": "request(specifier[shocking])",
"generated": "request_explanation"
}
Referenční informace ke konfiguraci
| Proměnné | Výchozí | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(povinné) | Účet úložiště z modulu 1 |
JOB_NAME |
batch-inference-<timestamp> |
Jedinečný název RayJob |
QUEUE_NAME |
default |
Název Kueue LocalQueue |
LLM_DATA_CONTAINER |
llm-pipeline |
Kontejner blobů s testovacími daty viggo |
LLM_LORA_CONTAINER |
llm-pipeline |
Kontejner objektů blob s adaptéry LoRA |
CONFIGMAP_NAME |
batch-inference-scripts |
Název objektu ConfigMap, který má skript pro odvozování |
Vyčistěte zdroje
Odstraňte RayJob a jeho objekt ConfigMap:
kubectl -n ray delete rayjob ${JOB_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}
Pokud chcete odstranit veškerou infrastrukturu, přečtěte si téma Nasazení infrastruktury – Vyčištění prostředků.