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 uruchamia inferencję wsadową offline vLLM przy użyciu adaptera LoRA utworzonego przez przykład trenowania modelu LLM. Zadanie odczytuje zbiór testowy Viggo i adapter LoRA z usługi Azure Blob Storage, generuje predykcje na pojedynczym GPU i przesyła wyniki.
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żanie infrastruktury dla Ray i Kueue na AKS.
- Kolejki Kueue skonfigurowane zgodnie z Konfigurowanie kolejek Kueue dla obciążeń Ray w usłudze AKS.
- Co najmniej jeden procesor GPU A100 dostępny w klastrze.
- Trenowanie modelu LLM zakończono zgodnie z instrukcją Trenowanie modelu LLM za pomocą Ray na AKS — adapter LoRA musi znajdować się pod adresem
llm-pipeline/lora/w magazynie obiektów blob. -
envsubstzainstalowano (gettextpakietu w systemie Linux,brew install gettextw systemie macOS).
Ustawianie zmiennych środowiskowych
Przejdź do przykładu wnioskowania wsadowego w sklonowanym repozytorium i skonfiguruj wymagane zmienne środowiskowe:
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
Jeśli skonfigurowano kolejki zespołowe (opcja B), ustaw wartość export QUEUE_NAME=team-a lub export QUEUE_NAME=team-b przed uruchomieniem polecenia source env.example. Wartość domyślna QUEUE_NAME=default działa tylko z konfiguracją pojedynczej kolejki (opcja A).
Prześlij zadanie
Prześlij wnioskowanie wsadowe RayJob:
./submit.sh
Skrypt tworzy obiekt ConfigMap ze skryptu wnioskowania, renderuje szablon manifestu za pomocą envsubstmetody i stosuje go. Kueue przyznaje zadanie, gdy 1 procesor GPU jest dostępny w skonfigurowanej kolejce.
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 jesteś w nowej powłoce:
export JOB_NAME=$(kubectl -n ray get rayjob --no-headers -o custom-columns=":metadata.name" | grep batch-inference)
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
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
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 --tail=100
Weryfikowanie wyników
Wyświetl listę plików predykcji w magazynie blob:
az storage blob list -c llm-pipeline --prefix "inference/${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
--------------------------------------------------- ----------- ----------- -------- ------------------------
inference/<job-name>/metrics.json BlockBlob Hot 128 application/octet-stream
inference/<job-name>/predictions.jsonl BlockBlob Hot 411777 application/octet-stream
Pobierz i sprawdź przewidywania:
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
Oczekiwane dane wyjściowe:
{
"input": "I'm wondering, have you played any games you found genuinely shocking?",
"expected": "request(specifier[shocking])",
"generated": "request_explanation"
}
Dokumentacja konfiguracji
| Zmienna | Default | Description |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(wymagane) | Konto usługi Storage z modułu 1 |
JOB_NAME |
batch-inference-<timestamp> |
Unikalna nazwa RayJob |
QUEUE_NAME |
default |
Nazwa kolejki lokalnej Kueue |
LLM_DATA_CONTAINER |
llm-pipeline |
Kontener obiektów blob z testowymi danymi viggo |
LLM_LORA_CONTAINER |
llm-pipeline |
Kontener obiektów blob z adapterami LoRA |
CONFIGMAP_NAME |
batch-inference-scripts |
Nazwa obiektu ConfigMap zawierającego skrypt wnioskowania |
Uprzątnij zasoby
Usuń obiekt RayJob i jego ConfigMap:
kubectl -n ray delete rayjob ${JOB_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}
Aby usunąć całą infrastrukturę, zobacz Wdrażanie infrastruktury — czyszczenie zasobów.