استخدام وحدات معالجة الرسومات AMD لأحمال العمل كثيفة الحوسبة على خدمة Azure Kubernetes (AKS)

يمكن أن توفر أحجام AMD GPU Virtual Machine (VM) على Azure مرونة في الأداء والتكلفة، ما يوفر سعة حساب عالية مع السماح لك باختيار التكوين الصحيح لمتطلبات حمل العمل الخاص بك. يدعم AKS تجمعات عقد Linux الممكنة بواسطة AMD GPU لتشغيل أحمال عمل Kubernetes كثيفة الحوسبة.

تساعدك هذه المقالة على توفير العقد مع وحدات معالجة الرسومات AMD القابلة للمخططات على مجموعات AKS الجديدة والحالية.

القيود

  • تدعم Standard_ND96isr_MI300X_v5 AKS حاليا حجم Azure VM الذي يتم تشغيلها بواسطة وحدة معالجة الرسومات AMD من سلسلة MI300.
  • تحديث تجمع عقدة موجود لإضافة حجم جهاز ظاهري لوحدة معالجة الرسومات AMD غير مدعوم على AKS.
  • تحديث تجمع عقدة غير ممكن بواسطة وحدة معالجة الرسومات AMD بحجم جهاز ظاهري ل AMD GPU غير مدعوم.
  • AzureLinux، WindowsAzureLinuxOSGuard وغير flatcar مدعوم مع وحدة معالجة الرسومات AMD.

قبل البدء

  • تفترض هذه المقالة أن لديك مجموعة AKS موجودة. إذا لم يكن لديك مجموعة، فبادر بإنشاء مجموعة باستخدام Azure CLI أو Azure PowerShell أو مدخل Microsoft Azure.
  • تحتاج إلى تثبيت الإصدار 2.72.2 من Azure CLI أو إصدار أحدث لتعيين --gpu-driver الحقل. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.
  • إذا كان لديك aks-preview ملحق Azure CLI مثبتا، فيرجى تحديث الإصدار إلى 18.0.0b2 أو أحدث.

إشعار

تحتوي الأجهزة الظاهرية التي تدعم وحدة معالجة الرسومات على أجهزة متخصصة تخضع لتسعير أعلى وتوافر المنطقة. لمزيد من المعلومات، راجع أداة التسعيروتوافر المنطقة.

الحصول على بيانات اعتماد لمجموعتك

احصل على بيانات الاعتماد لنظام مجموعة AKS باستخدام az aks get-credentials الأمر . يحصل الأمر المثال التالي على بيانات الاعتماد لنظام المجموعة myAKSCluster في myResourceGroup مجموعة الموارد:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

خيارات استخدام وحدات معالجة الرسومات AMD

يتضمن استخدام وحدات معالجة الرسومات AMD تثبيت مكونات برامج AMD GPU مختلفة مثل المكون الإضافي لجهاز AMD ل Kubernetes وبرامج تشغيل GPU والمزيد.

إشعار

حاليا، لا تدير AKS أو تعمل تلقائيا على تثبيت برامج تشغيل GPU أو المكون الإضافي لجهاز AMD GPU على تجمعات العقد التي تدعم AMD GPU.

تسجيل ميزة AKSInfinibandSupport

  1. إذا كان حجم الجهاز الظاهري لوحدة معالجة الرسومات في AMD ممكن بواسطة RDMA مع r اصطلاح التسمية (على سبيل المثال Standard_ND96isr_MI300X_v5)، فستحتاج إلى التأكد من أن الأجهزة الموجودة في تجمع العقدة تهبط على نفس شبكة Infiniband الفعلية. لتحقيق ذلك، قم بتسجيل علامة الميزة AKSInfinibandSupport باستخدام az feature register الأمر :

    az feature register --name AKSInfinibandSupport --namespace Microsoft.ContainerService
    
  2. تحقق من حالة التسجيل باستخدام az feature show الأمر :

    az feature show \
    --namespace "Microsoft.ContainerService" \
    --name AKSInfinibandSupport
    
  3. إنشاء تجمع عقدة ممكن بواسطة AMD GPU باستخدام az aks nodepool add الأمر وتخطي تثبيت برنامج التشغيل الافتراضي عن طريق تعيين حقل --gpu-driver API إلى القيمة none:

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name gpunp \
        --node-count 1 \
        --node-vm-size Standard_ND96isr_MI300X_v5 \
        --gpu-driver none
    

    إشعار

    يفرض AKS حاليا استخدام gpu-driver الحقل لتخطي تثبيت برنامج التشغيل التلقائي في وقت إنشاء تجمع عقدة AMD GPU.

توزيع عامل تشغيل AMD GPU على AKS

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

  1. اتبع وثائق AMD لتثبيت عامل تشغيل GPU.

  2. تحقق من حالة وحدات معالجة الرسومات AMD في تجمع العقد باستخدام kubectl get nodes الأمر :

    kubectl get nodes -o custom-columns=NAME:.metadata.name,GPUs:.status.capacity.'amd\.com/gpu'
    

    يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:

    NAME                    STATUS   ROLES   AGE    VERSION
    aks-gpunp-00000000      Ready    agent   2m4s   v1.31.7
    

تأكد من أن وحدات معالجة الرسومات AMD قابلة للتخطط

بعد إنشاء تجمع العقدة، تأكد من أن وحدات معالجة الرسومات قابلة للمخططات في نظام مجموعة AKS.

  1. سرد العقد في نظام المجموعة باستخدام kubectl get nodes الأمر .

    kubectl get nodes
    
  2. تأكد من أن وحدات معالجة الرسومات قابلة للمخططات باستخدام kubectl describe node الأمر .

    kubectl describe node aks-gpunp-00000000
    

    ضمن قسم السعة، ينبغي أن تُدرج وحدة معالجة الرسومات باسم amd.com/gpu: 1. يجب أن يبدو الإخراج مشابها لإخراج المثال المكثف التالي:

    Name:               aks-gpunp-00000000
    Roles:              agent
    Labels:             accelerator=amd
    
    [...]
    
    Capacity:
    [...]
     amd.com/gpu:                 1
    [...]
    

تشغيل حمل عمل ممكن بواسطة AMD GPU

لمشاهدة وحدة معالجة الرسومات AMD قيد التنفيذ، يمكنك جدولة حمل عمل ممكن بواسطة وحدة معالجة الرسومات مع طلب المورد المناسب. في هذا المثال، سنقوم بتشغيل مهمة Tensorflow مقابل مجموعة بيانات MNIST.

  1. أنشئ ملفا باسم samples-tf-mnist-demo.yaml والصق بيان YAML التالي، والذي يتضمن حد موارد :amd.com/gpu: 1

    apiVersion: batch/v1
    kind: Job
    metadata:
      labels:
        app: samples-tf-mnist-demo
      name: samples-tf-mnist-demo
    spec:
      template:
        metadata:
          labels:
            app: samples-tf-mnist-demo
        spec:
          containers:
          - name: samples-tf-mnist-demo
            image: mcr.microsoft.com/azuredocs/samples-tf-mnist-demo:gpu
            args: ["--max_steps", "500"]
            imagePullPolicy: IfNotPresent
            resources:
              limits:
               amd.com/gpu: 1
          restartPolicy: OnFailure
          tolerations:
          - key: "sku"
            operator: "Equal"
            value: "gpu"
            effect: "NoSchedule"
    
  2. قم بتشغيل المهمة باستخدام kubectl apply الأمر الذي يوزع ملف البيان وينشئ كائنات Kubernetes المعرفة.

    kubectl apply -f samples-tf-mnist-demo.yaml
    

عرض حالة حمل العمل الممكن لوحدة معالجة الرسومات

  1. مراقبة تقدم المهمة باستخدام kubectl get jobs الأمر مع العلامة --watch . قد يستغرق الأمر بضع دقائق لسحب الصورة أولا ومعالجة مجموعة البيانات.

    kubectl get jobs samples-tf-mnist-demo --watch
    

    عندما يظهر عمود COMPLETIONS1/1، تكون المهمة قد انتهت بنجاح، كما هو موضح في إخراج المثال التالي:

    NAME                    COMPLETIONS   DURATION   AGE
    
    samples-tf-mnist-demo   0/1           3m29s      3m29s
    samples-tf-mnist-demo   1/1   3m10s   3m36s
    
  2. قم بإنهاء kubectl --watch العملية باستخدام Ctrl-C.

  3. احصل على اسم الجراب باستخدام kubectl get pods الأمر .

    kubectl get pods --selector app=samples-tf-mnist-demo
    

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

قم بإزالة كائنات Kubernetes المقترنة التي قمت بإنشائها في هذه المقالة باستخدام kubectl delete job الأمر .

kubectl delete jobs samples-tf-mnist-demo

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