Menyebarkan infrastruktur untuk Ray dan Kueue di AKS

Dalam artikel ini, Anda menyebarkan infrastruktur yang diperlukan untuk menjalankan beban kerja Ray AI dengan Kueue pada Azure Kubernetes Service (AKS). Modul Terraform menyediakan kluster AKS dengan kumpulan simpul GPU, menginstal operator KubeRay dan pengontrol Kueue melalui Helm, membuat Azure Blob Storage dengan himpunan data pra-tahap, dan mengonfigurasi identitas beban kerja untuk akses yang aman.

Penting

Perangkat lunak sumber terbuka disebutkan di seluruh dokumentasi dan sampel AKS. Perangkat lunak yang Anda sebarkan dikecualikan dari perjanjian tingkat layanan AKS, garansi terbatas, dan dukungan Azure. Saat Anda menggunakan teknologi sumber terbuka bersama AKS, konsultasikan opsi dukungan yang tersedia dari masing-masing komunitas dan pengelola proyek untuk mengembangkan rencana.

Microsoft bertanggung jawab untuk membangun paket sumber terbuka yang kami sebarkan di AKS. Tanggung jawab itu termasuk memiliki kepemilikan lengkap atas proses build, pemindaian, penandatanganan, validasi, dan perbaikan cepat, bersama dengan kontrol atas file biner dalam gambar kontainer. Untuk informasi selengkapnya, lihat Manajemen kerentanan untuk AKS dan Cakupan dukungan AKS.

Prasyarat

  • Sebuah langganan Azure. Jika Anda tidak memilikinya, buat akun gratis.
  • Azure CLI versi 2.70 atau yang lebih baru, diautentikasi dengan az login. Jika Anda memiliki beberapa langganan, atur langganan yang benar dengan az account set --subscription <subscription-id>.
  • Terraform versi 1.6 atau yang lebih baru.
  • kubectl versi 1.28 atau yang lebih baru. Instal dengan az aks install-cli.
  • Python versi 3.10 atau yang lebih baru (diperlukan untuk pembuatan data Aurora).
  • Kuota GPU di wilayah Azure target Anda. Konfigurasi default menyediakan satu Standard_ND96amsr_A100_v4 node (dengan 8× GPU A100 80 GB).

Mengkloning repositori tersebut

Kloning repositori Azure/AKS dan navigasikan ke modul infrastruktur:

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

Menginstal dependensi Python

Langkah pengunggahan data Aurora memerlukan paket Python. Instal sebelum menyebarkannya:

pip install -r terraform/requirements-generator.txt

Periksa kuota GPU

Verifikasi bahwa langganan Anda memiliki kuota untuk SKU GPU di wilayah target Anda. Ganti eastus2 dengan wilayah pilihan Anda:

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

Catatan

Jika Anda tidak memiliki kuota GPU atau ingin memvalidasi infrastruktur tanpa GPU, sebarkan dengan gpu_enabled=false:

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

Alur yang hanya menggunakan CPU berguna untuk memverifikasi infrastruktur dan konfigurasi antrean. Beban kerja yang memerlukan GPU tetap berstatus Tertunda.

Menerapkan dengan Terraform

Inisialisasi dan terapkan modul Terraform:

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

Modul Terraform membuat:

  • Kluster AKS dengan issuer OIDC dan identitas beban kerja yang diaktifkan
  • Kumpulan simpul sistem dan kumpulan simpul GPU (saat gpu_enabled=true)
  • Operator KubeRay dan pengontrol Kueue (Rilis Helm dari MCR)
  • GPU memantau DaemonSet (saat gpu_enabled=true)
  • akun Azure Blob Storage dengan kontainer aurora dan llm-pipeline
  • Identitas terkelola yang ditetapkan pengguna dengan peran Storage Blob Data Contributor
  • Kredensial identitas federatif untuk ray-workload ServiceAccount
  • Dataset yang telah disiapkan sebelumnya (data Aurora WeatherBench2 dan dataset NLG viggo)

Untuk konfigurasi modul Terraform lengkap, lihat direktori 1 infrastruktur di repositori.

Menyambungkan ke kluster

Ambil kredensial untuk kluster AKS baru Anda:

eval "$(terraform output -raw get_credentials_command)"

Verifikasi proses penyebaran

Pastikan bahwa operator berjalan dan node tersedia:

  1. Verifikasi operator KubeRay:

    kubectl -n kuberay-system get pods
    

    Output yang diharapkan:

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

    kubectl -n kueue-system get pods
    

    Output yang diharapkan:

    NAME                                            READY   STATUS    RESTARTS   AGE
    kueue-controller-manager-xxxxxxxxxx-xxxxx       1/1     Running   0          5m
    
  3. Verifikasi node berikut:

    kubectl get nodes
    

    Output yang diharapkan (dengan 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. Verifikasi pemantauan GPU (hanya jika gpu_enabled=true):

    kubectl -n gpu-monitoring get daemonsets
    

    Output yang diharapkan:

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

Membersihkan sumber daya

Untuk menghapus semua sumber daya Azure yang Anda buat dengan menggunakan modul ini:

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

Langkah selanjutnya