نشر البنية التحتية لراي وكوي على AKS

في هذا المقال، تقوم بنشر البنية التحتية المطلوبة لتشغيل أحمال عمل Ray AI مع Kueue على خدمة Azure Kubernetes ‏(AKS). توفر وحدة Terraform عنقودا AKS مع تجمعات عقد GPU، وتثبيت مشغل KubeRay ووحدة تحكم Kueue عبر Helm، وإنشاء مساحة تخزين Azure Blob مع مجموعات بيانات مسبقة المرحلة، وتكوين هوية عبء العمل للوصول الآمن.

هام

يتم ذكر البرامج مفتوحة المصدر في جميع وثائق وعينات AKS. يتم استبعاد البرامج التي تنشرها من اتفاقيات مستوى خدمة AKS والضمان المحدود ودعم Azure. أثناء استخدامك للتكنولوجيا مفتوحة المصدر جنبا إلى جنب مع AKS، راجع خيارات الدعم المتوفرة من المجتمعات المحلية المعنية ومشرفي المشاريع لوضع خطة.

تتحمل Microsoft مسؤولية بناء الحزم مفتوحة المصدر التي ننشرها على AKS. تتضمن هذه المسؤولية امتلاك ملكية كاملة لعملية البناء والمسح الضوئي والتوقيع والتحقق من الصحة وإصلاحها، بالإضافة إلى التحكم في الثنائيات في صور الحاوية. لمزيد من المعلومات، راجع إدارة الثغرات الأمنية لتغطية دعم AKSوAKS.

المتطلبات الأساسية

  • اشتراك في Azure. إذا لم يكن لديك حساب، أنشئ حسابا مجانيا.
  • Azure CLI الإصدار 2.70 أو أحدث، تم التحقق منه ب az login. إذا كان لديك عدة اشتراكات، قم بتعيين الاشتراك الصحيح ب az account set --subscription <subscription-id>.
  • نسخة Terraform 1.6 أو أحدث.
  • إصدار Kubectl 1.28 أو أحدث. قم بالتثبيت باستخدام az aks install-cli.
  • إصدار Python 3.10 أو أحدث (مطلوب لتوليد بيانات Aurora).
  • حصة GPU في منطقة Azure المستهدفة لديك. التكوين الافتراضي يوفر عقدة Standard_ND96amsr_A100_v4 (8×A100 بسعة 80 جيجابايت).

نسخ المستودع

قم باستنساخ مستودع Azure/AKS وانتقل إلى وحدة البنية التحتية:

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

تثبيت تبعيات Python

تتطلب خطوة رفع البيانات في Aurora حزم Python. قم بتثبيتها قبل النشر:

pip install -r terraform/requirements-generator.txt

تحقق من حصة بطاقة الرسوميات

تحقق من أن اشتراكك يحتوي على حصة لوحدة معالجة الرسومات في منطقتك المستهدفة. استبدلها eastus2 بالمنطقة التي تفضلها:

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

Note

إذا لم يكن لديك حصة GPU أو ترغب في التحقق من البنية التحتية بدون وحدات معالجة الرسوميات، قم بالنشر باستخدام gpu_enabled=false:

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

المسار الخاص بالمعالج فقط مفيد للتحقق من صحة البنية التحتية وتكوين الطابور. أما الأحمال التي تطلب بطاقات الرسوميات فتبقى قيد الانتظار.

النشر باستخدام Terraform

قم بتهيئة وتطبيق وحدة Terraform:

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

تنشئ وحدة تيرافورم ما يلي:

  • عنقود AKS مع مفعل جهود OIDC وهوية عبء العمل
  • تجمع عقد النظام ومجموعة عقد وحدة معالجة الرسوميات (عندما gpu_enabled=true)
  • مشغل KubeRay ووحدة تحكم Kueue (إصدار Helm من MCR)
  • مراقبة وحدة معالجة الرسومات DaemonSet (عندما gpu_enabled=true)
  • مساحة تخزين Azure Blob account with aurora and llm-pipeline containers
  • هوية مدارة معينة من قبل المستخدم مع دور مساهم بيانات كتلة التخزين
  • بيانات الهوية الموحدة لحساب ray-workload الخدمة
  • مجموعات البيانات المسبقة (بيانات Aurora WeatherBench2 ومجموعة بيانات viggo NLG)

للحصول على تكوين وحدة Terraform الكامل، راجع دليل البنية التحتية 1 في المستودع.

الاتصال بنظام المجموعة

استرجع بيانات الاعتماد الخاصة بكتر AKS الجديد:

eval "$(terraform output -raw get_credentials_command)"

تحقق من النشر

تأكد من أن المشغلين يعملون وأن العقد متاحة:

  1. تحقق من مشغل KubeRay:

    kubectl -n kuberay-system get pods
    

    الإخراج المتوقع:

    NAME                                READY   STATUS    RESTARTS   AGE
    kuberay-operator-xxxxxxxxxx-xxxxx   1/1     Running   0          5m
    
  2. تحقق من وحدة تحكم Kueue:

    kubectl -n kueue-system get pods
    

    الإخراج المتوقع:

    NAME                                            READY   STATUS    RESTARTS   AGE
    kueue-controller-manager-xxxxxxxxxx-xxxxx       1/1     Running   0          5m
    
  3. تحقق من العقد:

    kubectl get nodes
    

    الإنتاج المتوقع (مع 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_enabled=true):

    kubectl -n gpu-monitoring get daemonsets
    

    الإخراج المتوقع:

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

تنظيف الموارد

لحذف جميع موارد Azure التي أنشأتها باستخدام هذه الوحدة:

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

الخطوة التالية