AKS üzerinde Ray ve Kueue için altyapı dağıtımı

Bu makalede, Azure Kubernetes Service (AKS) üzerinde Kueue ile Ray AI iş yüklerini çalıştırmak için gereken altyapıyı dağıtacaksınız. Terraform modülü GPU düğüm havuzları ile bir AKS kümesi sağlar, Helm aracılığıyla KubeRay işlecini ve Kueue denetleyicisini yükler, önceden hazırlanmış veri kümeleriyle Azure Blob Depolama oluşturur ve güvenli erişim için iş yükü kimliğini yapılandırmaktadır.

Önemli

AKS dokümantasyonu ve örneklerinde açık kaynaklı yazılımdan bahsedilmektedir. Dağıttığınız yazılım, AKS hizmet düzeyi anlaşmalarından, sınırlı garanti ve Azure desteğinden hariç tutulur. AKS ile birlikte açık kaynak teknolojisini kullanırken, bir plan geliştirmek için ilgili topluluklar ve proje sorumlularından mevcut olan destek seçeneklerine danışın.

Microsoft, AKS üzerinde dağıttığımız açık kaynak paketlerinin oluşturulmasından sorumluluk alır. Bu sorumluluk, yapı, tarama, imzalama, doğrulama ve hızlı düzeltme sürecinin tam sahipliğini içermenin yanı sıra, konteyner görüntülerindeki ikili dosyaların kontrolünü de kapsar. Daha fazla bilgi için AKS için güvenlik açığı yönetimi ve AKS destek kapsamı başlıklarına bakın.

Önkoşullar

  • Azure aboneliği. Hesabınız yoksa ücretsiz hesap oluşturun.
  • Azure CLI'nin az login ile kimlik doğrulaması yapılmış 2.70 veya sonraki bir sürümü. Birden çok aboneliğiniz varsa, az account set --subscription <subscription-id> ile doğru aboneliği ayarlayın.
  • Terraform sürüm 1.6 veya üzeri.
  • kubectl sürüm 1.28 veya üzeri. az aks install-cli ile yükleyin.
  • Python sürüm 3.10 veya üzeri (Aurora veri oluşturma için gereklidir).
  • Hedef Azure bölgenizdeki GPU kotası. Varsayılan yapılandırma bir Standard_ND96amsr_A100_v4 düğüm (8×A100 80 GB GPU) sağlar.

Depoyu kopyalama

Azure/AKS deposunu kopyalayın ve altyapı modülüne gidin:

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

Python bağımlılıklarını yükleme

Aurora verilerini karşıya yükleme adımı için Python paketleri gerekir. Bunları dağıtmadan önce yükleyin:

pip install -r terraform/requirements-generator.txt

GPU kotası denetleme

Aboneliğinizin hedef bölgenizdeki GPU SKU'su için kotası olduğunu doğrulayın. eastus2 yerine tercih ettiğiniz bölgeyi yazın:

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

Not

GPU kotanız yoksa veya GPU kullanmadan altyapıyı doğrulamak istiyorsanız, gpu_enabled=false ile dağıtım yapın:

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

Yalnızca CPU yolu, altyapıyı ve kuyruk yapılandırmasını doğrulamak için kullanışlıdır. GPU isteyen iş yükleri Beklemede kalır.

Terraform ile dağıtım yapmak

Terraform modülünü başlatın ve uygulayın:

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

Terraform modülü aşağıdakileri oluşturur:

  • OIDC yayımlayıcısı ve iş yükü kimliği etkinleştirilmiş bir AKS kümesi
  • Sistem düğümü havuzu ve GPU düğüm havuzu (gpu_enabled=true olduğunda)
  • KubeRay operatörü ve Kueue denetleyicisi (MCR kaynaklı Helm sürümleri)
  • GPU izleme DaemonSet'i (gpu_enabled=true olduğunda)
  • aurora ve llm-pipeline kapsayıcılarına sahip Azure Blob Depolama hesabı
  • Depolama Blobu Verileri Katkıda Bulunanı rolüne sahip kullanıcı tarafından atanan yönetilen kimlik
  • ray-workload ServiceAccount için federe kimlik bilgisi
  • Önceden hazırlanmış veri kümeleri (Aurora WeatherBench2 verileri ve viggo NLG veri kümesi)

Terraform modülü yapılandırmasının tamamı için depodaki 1 altyapı dizinine bakın.

Kümeye bağlanma

Yeni AKS kümenizin kimlik bilgilerini alın:

eval "$(terraform output -raw get_credentials_command)"

Dağıtımı doğrulayın.

İşleçlerin çalıştığını ve düğümlerin kullanılabilir olduğunu onaylayın:

  1. KubeRay operatörünü doğrulayın:

    kubectl -n kuberay-system get pods
    

    Beklenen çıkış:

    NAME                                READY   STATUS    RESTARTS   AGE
    kuberay-operator-xxxxxxxxxx-xxxxx   1/1     Running   0          5m
    
  2. Kueue denetleyicisini doğrulayın:

    kubectl -n kueue-system get pods
    

    Beklenen çıkış:

    NAME                                            READY   STATUS    RESTARTS   AGE
    kueue-controller-manager-xxxxxxxxxx-xxxxx       1/1     Running   0          5m
    
  3. Düğümleri doğrulayın:

    kubectl get nodes
    

    Beklenen çıkış (ile 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. GPU izlemeyi doğrulayın (yalnızca gpu_enabled=true olduğunda):

    kubectl -n gpu-monitoring get daemonsets
    

    Beklenen çıkış:

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

Kaynakları temizle

Bu modülü kullanarak oluşturduğunuz tüm Azure kaynaklarını silmek için:

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

Sonraki adım