Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule przesyłasz zadanie RayJob, które dostraja bazowy model pogodowy Microsoft Aurora na podstawie regionalnych danych WeatherBench2 przy użyciu techniki LoRA. Zadanie działa na pojedynczym GPU A100, Kueue kontroluje dopuszczanie zadań, a zadanie zapisuje punkt kontrolny adaptera i metryki trenowania do usługi Azure Blob Storage.
Important
Oprogramowanie typu open source jest wymienione w dokumentacji i przykładach usługi AKS. Oprogramowanie, które wdrażasz, jest wykluczone z umów dotyczących poziomu usług AKS, ograniczonej gwarancji i wsparcia technicznego platformy Azure. W miarę korzystania z technologii open source wraz z usługą AKS zapoznaj się z opcjami pomocy technicznej dostępnymi w odpowiednich społecznościach i opiekunami projektów, aby opracować plan.
Firma Microsoft ponosi odpowiedzialność za tworzenie pakietów typu open source wdrażanych w usłudze AKS. Ta odpowiedzialność obejmuje posiadanie pełnej kontroli nad procesem kompilacji, skanowania, podpisywania, weryfikacji i szybkich poprawek, a także nad plikami binarnymi w obrazach kontenerów. Aby uzyskać więcej informacji, zobacz zarządzanie podatnościami dla AKS i zakres wsparcia dla AKS.
Prerequisites
- Infrastruktura wdrożona zgodnie z wdrażaniem infrastruktury dla Ray i Kueue na platformie AKS.
- Kolejki Kueue skonfigurowane zgodnie z instrukcjami w artykule Konfigurowanie kolejek Kueue dla obciążeń Ray w usłudze AKS.
- Co najmniej jeden procesor GPU A100 dostępny w klastrze (w tym przykładzie jest używany jeden procesor GPU).
- Dane Aurora WeatherBench2 zostały przesłane do magazynu Blob Storage (moduł Terraform dla infrastruktury automatycznie przesyła te dane).
-
envsubstzainstalowano (gettextpakiet w systemie Linux,brew install gettextw systemie macOS).
Ustawianie zmiennych środowiskowych
Przejdź do przykładu aurora fine-tune w sklonowanym repozytorium i skonfiguruj wymagane zmienne środowiskowe:
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
Plik env.example ustawia wartości domyślne, w tym obraz Ray, nazwę kolejki i parametry trenowania. Zmienna JOB_NAME jest generowana automatycznie za pomocą znacznika czasu.
Note
Jeśli skonfigurowałeś kolejki zespołowe (Opcja B), ustaw export QUEUE_NAME=team-a lub export QUEUE_NAME=team-b przed uruchomieniem source env.example. Wartość domyślna QUEUE_NAME=default działa tylko z konfiguracją z pojedynczą kolejką (opcja A).
Prześlij zadanie
Prześlij RayJob do klastra:
./submit.sh
Skrypt tworzy obiekt ConfigMap na podstawie skryptu treningowego w Pythonie, renderuje szablon manifestu za pomocą envsubst i wdraża go w klastrze. Kueue dopuszcza zadanie, gdy w skonfigurowanej kolejce jest dostępny limit GPU.
Wskazówka
Uruchom polecenie ./submit.sh --dry-run , aby zweryfikować renderowany manifest bez stosowania go do klastra.
Monitorowanie postępu
Znajdź i wyeksportuj nazwę zadania, jeśli pracujesz w nowej powłoce:
export JOB_NAME=$(kubectl -n ray get rayjob --no-headers -o custom-columns=":metadata.name" | grep aurora-finetune)
Obserwuj stan RayJob i dopuszczenie przez Kueue:
kubectl -n ray get rayjob ${JOB_NAME} -w
kubectl -n ray get workload -w
Oczekiwane dane wyjściowe po zakończeniu zadania:
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
Ujmij dzienniki procesów roboczych:
kubectl -n ray logs -l ray.io/cluster=$(kubectl -n ray get rayjob ${JOB_NAME} -o jsonpath='{.status.rayClusterName}') -f
Weryfikowanie wyników
Sprawdź przesłane artefakty w magazynie obiektów blob:
az storage blob list -c aurora --prefix checkpoints/${JOB_NAME}/ \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
Oczekiwane dane wyjściowe:
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
Pobierz i sprawdź metryki trenowania:
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
Oczekiwane dane wyjściowe:
{
"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",
...
}
Tablica loss_history powinna zawierać wartości skończone (a nie NaN), potwierdzając, że ścieżka danych i trenowanie modelu działają poprawnie.
Dokumentacja konfiguracji
| Zmienna | Default | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(wymagane) | Konto magazynu z modułu 1 |
AURORA_INPUT_CONTAINER |
aurora |
Kontener dla danych wejściowych |
AURORA_OUTPUT_CONTAINER |
aurora |
Kontener dla punktów kontrolnych |
AURORA_INIT_FILE |
init-2021-01-01-00z.npz |
Init NPZ file name (Inicjowanie nazwy pliku NPZ) |
AURORA_TRUTH_FILE |
truth-2021-01-01-06z.npz |
Nazwa referencyjnego pliku NPZ |
AURORA_MAX_STEPS |
1 |
Kroki trenowania |
AURORA_LORA_RANK |
8 |
Ranga LoRA |
AURORA_LEAD_HOURS |
6 |
Czas realizacji prognozy (musi być wielokrotny 6 godzin) |
AURORA_REQUIRE_GPU_NAME |
A100 |
Ochrona podciągów nazw procesora GPU |
QUEUE_NAME |
default |
Nazwa kolejki lokalnej Kueue |
CONFIGMAP_NAME |
aurora-finetune-scripts |
Nazwa obiektu ConfigMap zawierającego skrypt trenowania |
Uprzątnij zasoby
Usuń RayJob i jego ConfigMap:
kubectl -n ray delete rayjob ${JOB_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}