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 übermitteln Sie einen RayJob, der das Microsoft Aurora Weather Foundation-Modell auf regionalen WeatherBench2-Daten mit LoRA fein einstimmt. Der Einzelvorgang wird auf einer einzelnen A100-GPU ausgeführt, Kueue steuert die Zulassung, und der Einzelvorgang schreibt den Adapter-Checkpoint und die Trainingsmetriken nach Azure Blob Storage.
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 eine A100-GPU im Cluster (in diesem Beispiel wird eine GPU verwendet).
- Aurora WeatherBench2-Daten, die in Blob Storage hochgeladen wurden (das Infrastruktur-Terraform-Modul lädt diese Daten automatisch hoch).
-
envsubstinstalliert (gettextPaket unter Linux,brew install gettextunter macOS).
Festlegen von Umgebungsvariablen
Navigieren Sie zum Aurora-Feinabstimmungsbeispiel im geklonten Repository, und konfigurieren Sie die erforderlichen Umgebungsvariablen:
cd <path-to-cloned-repo>/AKS/examples/kueue-and-ray-on-aks/3-workloads/aurora-finetune
export AZURE_STORAGE_ACCOUNT_NAME=$(terraform -chdir=../../1-infrastructure/terraform output -raw storage_account_name)
source env.example
Die env.example Datei legt Standardwerte fest, einschließlich des Ray-Bilds, des Warteschlangennamens und der Schulungsparameter. Die JOB_NAME Variable wird automatisch mit einem Zeitstempel generiert.
Hinweis
Wenn Sie die Teamwarteschlangen (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 den RayJob an den Cluster:
./submit.sh
Das Skript erstellt eine ConfigMap aus dem Python Schulungsskript, rendert die Manifestvorlage über envsubstund wendet sie auf den Cluster an. Kueue lässt den Job zu, wenn in der konfigurierten Warteschlange ein GPU-Kontingent verfügbar ist.
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 aurora-finetune)
Ü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
aurora-finetune-xxxxxxxxxx SUCCEEDED Complete 2026-01-01T00:00:00Z 2026-01-01T00:08:00Z 8m
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE
rayjob-aurora-finetune-xxxxxxxxxx-xxxxx default cluster-queue True True 8m
Arbeitsprotokolle verfolgen:
kubectl -n ray logs -l ray.io/cluster=$(kubectl -n ray get rayjob ${JOB_NAME} -o jsonpath='{.status.rayClusterName}') -f
Überprüfen der Ergebnisse
Überprüfen Sie die hochgeladenen Artefakte im BLOB-Speicher:
az storage blob list -c aurora --prefix checkpoints/${JOB_NAME}/ \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
Erwartete Ausgabe:
Name Blob Type Blob Tier Length Content Type
------------------------------------------------------ ----------- ----------- -------- ------------------------
checkpoints/<job-name>/last.safetensors BlockBlob Hot 11432328 application/octet-stream
checkpoints/<job-name>/train-metrics.json BlockBlob Hot 985 application/json
Laden Sie die Schulungsmetriken herunter, und überprüfen Sie sie:
az storage blob download -c aurora \
-n checkpoints/${JOB_NAME}/train-metrics.json \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login \
--file /tmp/train-metrics.json
cat /tmp/train-metrics.json | python3 -m json.tool
Erwartete Ausgabe:
{
"final_loss": 24051.97,
"initial_loss": 24183.10,
"loss_history": [24183.10],
"loss_improvement": 131.13,
"max_steps": 1,
"trainable_parameters": 2850816,
"gpu_name": "NVIDIA A100-SXM4-80GB",
...
}
Das loss_history Array sollte endliche Werte (nicht NaN) enthalten, um sicherzustellen, dass der Datenpfad und die Modellschulung ordnungsgemäß funktionieren.
Konfigurationsreferenz
| Variable | Vorgabe | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(erforderlich) | Speicherkonto aus Modul 1 |
AURORA_INPUT_CONTAINER |
aurora |
Container für Eingabedaten |
AURORA_OUTPUT_CONTAINER |
aurora |
Container für Prüfpunkte |
AURORA_INIT_FILE |
init-2021-01-01-00z.npz |
NPZ-Dateinamen initialisieren |
AURORA_TRUTH_FILE |
truth-2021-01-01-06z.npz |
Wahrheit NPZ-Dateiname |
AURORA_MAX_STEPS |
1 |
Schulungsschritte |
AURORA_LORA_RANK |
8 |
LoRA-Rang |
AURORA_LEAD_HOURS |
6 |
Prognosevorlaufzeit (muss ein Vielfaches von 6 h sein) |
AURORA_REQUIRE_GPU_NAME |
A100 |
GPU-Name-Teilzeichenfolgenschutz |
QUEUE_NAME |
default |
Name der Kueue-LocalQueue |
CONFIGMAP_NAME |
aurora-finetune-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}