Wdrażanie infrastruktury dla Ray i Kueue na AKS

W tym artykule wdrożysz infrastrukturę wymaganą do uruchamiania obciążeń Ray AI za pomocą narzędzia Kueue w Azure Kubernetes Service (AKS). Moduł Terraform wdraża klaster AKS z pulami węzłów GPU, instaluje operator KubeRay i kontroler Kueue za pomocą Helm, tworzy magazyn obiektów blob platformy Azure ze wstępnie przygotowanymi zestawami danych oraz konfiguruje tożsamość obciążenia roboczego w celu zapewnienia bezpiecznego dostępu.

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

  • Subskrypcja platformy Azure. Jeśli go nie masz, utwórz bezpłatne konto.
  • Azure CLI w wersji 2.70 lub nowszej uwierzytelnione za pomocą polecenia az login. Jeśli masz wiele subskrypcji, ustaw właściwą za pomocą az account set --subscription <subscription-id>.
  • Program Terraform w wersji 1.6 lub nowszej.
  • kubectl w wersji 1.28 lub nowszej. Zainstaluj za pomocą az aks install-cli.
  • Python w wersji 3.10 lub nowszej (wymagane do generowania danych Aurora).
  • Limit przydziału procesora GPU w docelowym regionie Azure. Domyślna konfiguracja udostępnia węzeł Standard_ND96amsr_A100_v4 (8×A100 80 GB GPU).

Klonowanie repozytorium

Sklonuj repozytorium Azure/AKS i przejdź do modułu infrastruktury:

git clone https://github.com/Azure/AKS
cd AKS/examples/kueue-and-ray-on-aks/1-infrastructure

Instalowanie zależności Python

Krok przekazywania danych Aurora wymaga Python pakietów. Zainstaluj je przed wdrożeniem:

pip install -r terraform/requirements-generator.txt

Sprawdzanie limitu przydziału procesora GPU

Sprawdź, czy twoja subskrypcja ma limit przydziału dla jednostki SKU procesora GPU w regionie docelowym. Zastąp eastus2 preferowanym regionem:

LOCATION=<your-azure-region>
az vm list-usage --location "$LOCATION" --output table | grep -i "NDAMSv4_A100"

Note

Jeśli nie masz limitu przydziału procesora GPU lub chcesz zweryfikować infrastrukturę bez procesorów GPU, wdróż za pomocą polecenia gpu_enabled=false:

terraform apply -var="subscription_id=<your-subscription-id>" -var="gpu_enabled=false"

Ścieżka korzystająca wyłącznie z CPU jest przydatna do weryfikacji infrastruktury i konfiguracji kolejki. Obciążenia robocze, które żądają procesorów GPU, pozostają w stanie Pending.

Wdrażanie przy użyciu programu Terraform

Zainicjuj i zastosuj moduł Terraform:

cd terraform
terraform init
terraform apply -var="subscription_id=<your-subscription-id>"

Moduł Terraform tworzy:

  • Klaster usługi AKS z włączonym wystawcą tokenów OIDC i tożsamością obciążeń
  • Pula węzłów systemowych i pula węzłów procesora GPU (gdy gpu_enabled=true)
  • Operator KubeRay i kontroler Kueue (wydania programu Helm z mcR)
  • DaemonSet do monitorowania GPU (gdy gpu_enabled=true)
  • konto Azure Blob Storage z kontenerami aurora i llm-pipeline
  • Tożsamość zarządzana przypisana przez użytkownika z rolą Współautor danych obiektu blob usługi Storage
  • Poświadczenie tożsamości sfederowanej dla ray-workload ServiceAccount
  • Zestawy danych wstępnie przygotowane (dane Aurora WeatherBench2 i zestaw danych viggo NLG)

Aby zobaczyć pełną konfigurację modułu Terraform, zobacz katalog 1-infrastructure w repozytorium.

Połącz się z klastrem

Pobierz dane uwierzytelniające nowego klastra AKS:

eval "$(terraform output -raw get_credentials_command)"

Weryfikowanie wdrożenia

Upewnij się, że operatory działają, a węzły są dostępne:

  1. Sprawdź operator KubeRay:

    kubectl -n kuberay-system get pods
    

    Oczekiwane dane wyjściowe:

    NAME                                READY   STATUS    RESTARTS   AGE
    kuberay-operator-xxxxxxxxxx-xxxxx   1/1     Running   0          5m
    
  2. Sprawdź kontroler Kueue:

    kubectl -n kueue-system get pods
    

    Oczekiwane dane wyjściowe:

    NAME                                            READY   STATUS    RESTARTS   AGE
    kueue-controller-manager-xxxxxxxxxx-xxxxx       1/1     Running   0          5m
    
  3. Sprawdź węzły:

    kubectl get nodes
    

    Oczekiwane dane wyjściowe (z gpu_enabled=true):

    NAME                              STATUS   ROLES    AGE   VERSION
    aks-gpupool-xxxxxxxx-vmssxxxxxx   Ready    <none>   5m    v1.35.x
    aks-system-xxxxxxxx-vmssxxxxxx    Ready    <none>   10m   v1.35.x
    aks-system-xxxxxxxx-vmssxxxxxx    Ready    <none>   10m   v1.35.x
    
  4. Sprawdź monitorowanie GPU (tylko gdy gpu_enabled=true):

    kubectl -n gpu-monitoring get daemonsets
    

    Oczekiwane dane wyjściowe:

    NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    gpu-monitoring-a100     1         1         1       1            1           <none>          5m
    

Uprzątnij zasoby

Aby usunąć wszystkie zasoby Azure utworzone przy użyciu tego modułu:

terraform destroy -var="subscription_id=<your-subscription-id>"

Następny krok