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 in ett RayJob som finjusterar Qwen2.5-7B-Instruct med viggo-NLG-datamängden med LLaMA-Factory och distribuerad Ray Train. Jobbet använder fyra arbetare med en GPU vardera, läser träningsdata från Azure Blob Storage och laddar upp den tränade LoRA-adaptern för efterföljande inferens.
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 fyra A100 GPU:er tillgängliga i klustret (i det här exemplet används fyra arbetare med en GPU vardera).
- Viggo-datauppsättningen har laddats upp till bloblagringen på
llm-pipeline/data/(görs automatiskt av Terraform-modulen för infrastrukturen). -
envsubstinstallerat (gettextpaket på Linux,brew install gettextpå macOS).
Ange miljövariabler
Gå till LLM-träningsexemplet på 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/llm-training
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 in den distribuerade utbildningen RayJob:
./submit.sh
Skriptet skapar en ConfigMap från träningsskriptet, renderar manifestmallen med fyra GPU-arbetare via envsubstoch tillämpar den. Kueue medger jobbet när fyra GPU:er är tillgängliga 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 llm-training)
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
llm-training-xxxxxxxxxx SUCCEEDED Complete 2026-01-01T00:00:00Z 2026-01-01T00:19:00Z 19m
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE
rayjob-llm-training-xxxxxxxxxx-xxxxx default cluster-queue True True 19m
Följ head-poddens loggar:
kubectl -n ray logs -f -l ray.io/cluster=$(kubectl -n ray get rayjob ${JOB_NAME} -o jsonpath='{.status.rayClusterName}') -c ray-head
Verifiera resultat
Kontrollera Uppladdningen av LoRA-adaptern:
az storage blob list -c llm-pipeline --prefix lora/ \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
Förväntat resultat:
Name Blob Type Blob Tier Length Content Type
----------------------------------------- ----------- ----------- -------- ------------------------
lora/latest.txt BlockBlob Hot 86 application/octet-stream
lora/<job-name>/rng_state_3.pth BlockBlob Hot 14725 application/octet-stream
Kontrollera att pekaren latest.txt skrevs (används av exemplet för batchinferens för automatisk upptäckt):
az storage blob download -c llm-pipeline -n lora/latest.txt \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login
Förväntat resultat:
azure://llm-pipeline@<storage-account>.blob.core.windows.net/lora/<job-name>
Konfigurationsreferens
| Variabel | Standardinställning | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(krävs) | Lagringskonto från modul 1 |
NUM_WORKERS |
4 |
GPU-arbetsrepliker (4 x 1 GPU vardera) |
QUEUE_NAME |
default |
Namn på Kueue LocalQueue |
LLM_DATA_CONTAINER |
llm-pipeline |
Blobcontainer för indata |
LLM_LORA_CONTAINER |
llm-pipeline |
Blobcontainer för LoRA-uppladdning |
CONFIGMAP_NAME |
llm-training-scripts |
Namn på ConfigMap som innehåller träningsskriptet |
Rensa resurser
Ta bort RayJob och dess ConfigMap:
kubectl -n ray delete rayjob ${JOB_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}