Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel reichen Sie einen RayJob ein, der Qwen2.5-7B-Instruct mithilfe von LLaMA-Factory und verteiltem Ray Train auf dem viggo-NLG-Datensatz feinabstimmt. Der Auftrag verwendet vier Mitarbeiter mit jeweils einer GPU, liest Schulungsdaten aus Azure Blob Storage und lädt den trainierten LoRA-Adapter für nachgeschaltete Ableitung hoch.
Wichtig
Open-Source-Software wird überall in AKS-Dokumenten und -Beispielen erwähnt. Software, die Sie bereitstellen, ist von AKS-Vereinbarungen zum Servicelevel, der eingeschränkten Garantie und dem Azure-Support ausgeschlossen. Wenn Sie Open-Source-Technologie zusammen mit AKS nutzen, nutzen Sie die Supportoptionen, die von den jeweiligen Communitys und Projektbetreuenden angeboten werden, um einen Plan zu entwickeln.
Microsoft übernimmt die Verantwortung für die Erstellung der Open-Source-Pakete, die wir auf AKS bereitstellen. Diese Verantwortung beinhaltet die vollständige Übernahme des Build-, Scan-, Signier-, Validierungs- und Hotfix-Prozesses sowie die Kontrolle über die Binärdateien in Container-Images. Weitere Informationen finden Sie unter Sicherheitsrisikomanagement für AKS und AKS-Supportabdeckung.
Voraussetzungen
- Infrastruktur, die gemäß Infrastruktur für Ray und Kueue auf AKS bereitstellen bereitgestellt wurde.
- Kueue-Warteschlangen, die nach dem Konfigurieren von Kueue-Warteschlangen für Ray-Workloads auf AKS konfiguriert wurden.
- Mindestens vier A100-GPUs sind im Cluster verfügbar (in diesem Beispiel werden vier Worker mit jeweils einer GPU verwendet).
- Viggo-Dataset wurde unter
llm-pipeline/data/in den Blob Storage hochgeladen (automatisch durch das Terraform-Infrastrukturmodul). -
envsubstinstalliert (gettextPaket unter Linux,brew install gettextunter macOS).
Festlegen von Umgebungsvariablen
Navigieren Sie zum LLM-Schulungsbeispiel im geklonten Repository, und konfigurieren Sie die erforderlichen Umgebungsvariablen:
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
Hinweis
Wenn Sie Team-Warteschlangen (Option B) konfiguriert haben, legen Sie export QUEUE_NAME=team-a oder export QUEUE_NAME=team-b fest, bevor Sie source env.example ausführen. Die Standardeinstellung QUEUE_NAME=default funktioniert nur mit der Konfiguration mit einer einzelnen Warteschlange (Option A).
Workload übermitteln
Übermitteln Sie das verteilte Training RayJob:
./submit.sh
Das Skript erstellt eine ConfigMap aus dem Schulungsskript, rendert die Manifestvorlage mit vier GPU-Workern über envsubstund wendet sie an. Kueue lässt den Job zu, wenn in der konfigurierten Warteschlange vier GPUs verfügbar sind.
Tip
Führen Sie die Ausführung aus ./submit.sh --dry-run , um das gerenderte Manifest zu überprüfen, ohne es auf den Cluster anzuwenden.
Fortschritt überwachen
Suchen und exportieren Sie den Auftragsnamen, wenn Sie sich in einer neuen Shell befinden:
export JOB_NAME=$(kubectl -n ray get rayjob --no-headers -o custom-columns=":metadata.name" | grep llm-training)
Überwachen Sie den RayJob-Status und die Kueue-Zulassung:
kubectl -n ray get rayjob ${JOB_NAME} -w
kubectl -n ray get workload -w
Erwartete Ausgabe, wenn der Einzelvorgang abgeschlossen ist:
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
Verfolgen Sie die Protokolle des Head-Pods:
kubectl -n ray logs -f -l ray.io/cluster=$(kubectl -n ray get rayjob ${JOB_NAME} -o jsonpath='{.status.rayClusterName}') -c ray-head
Überprüfen der Ergebnisse
Überprüfen Sie den Upload des LoRA-Adapters:
az storage blob list -c llm-pipeline --prefix lora/ \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
Erwartete Ausgabe:
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
Überprüfen Sie, ob der latest.txt-Zeiger geschrieben wurde (wird vom Batch-Inferenzbeispiel zur automatischen Erkennung verwendet):
az storage blob download -c llm-pipeline -n lora/latest.txt \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login
Erwartete Ausgabe:
azure://llm-pipeline@<storage-account>.blob.core.windows.net/lora/<job-name>
Konfigurationsreferenz
| Variable | Vorgabe | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(erforderlich) | Speicherkonto aus Modul 1 |
NUM_WORKERS |
4 |
GPU-Worker-Replikate (4 x jeweils 1 GPU) |
QUEUE_NAME |
default |
Name der Kueue LocalQueue |
LLM_DATA_CONTAINER |
llm-pipeline |
BLOB-Container für Eingabedaten |
LLM_LORA_CONTAINER |
llm-pipeline |
Blob-Container für LoRA-Upload |
CONFIGMAP_NAME |
llm-training-scripts |
Name für die ConfigMap, die das Schulungsskript hält |
Bereinigen von Ressourcen
Löschen Sie den RayJob und dessen ConfigMap:
kubectl -n ray delete rayjob ${JOB_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}