إنشاء تجمع عقدة GPU متعدد المثيلات في خدمة Azure Kubernetes (AKS)
يمكن تقسيم Nvidia's A100 GPU إلى ما يصل إلى سبعة مثيلات مستقلة. كل مثيل له الذاكرة الخاصة به و Stream Multiprocessor (SM). لمزيد من المعلومات حول Nvidia A100، راجع Nvidia A100 GPU.
ترشدك هذه المقالة إلى كيفية إنشاء تجمع عقدة GPU متعدد المثيلات في نظام مجموعة Azure Kubernetes Service (AKS).
المتطلبات الأساسية والقيود
- حساب Azure مع اشتراك نشط. إذا لم يكن لديك حساب، يمكنك إنشاء حساب مجانًا.
- تم تثبيت الإصدار 2.2.0 من Azure CLI أو إصدار أحدث وتكوينه. قم بتشغيل
az --version
للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI. - عميل سطر أوامر Kubernetes، kubectl، مثبت ومكون.
kubectl
والذي سيكون مثبتًا بالفعل في حال كنت تستخدم Azure Cloud Shell. إذا كنت تريد تثبيته محليا، يمكنك استخدامaz aks install-cli
الأمر . - تم تثبيت Helm v3 وتكوينه. لمزيد من المعلومات، راجع تثبيت Helm.
- لا يمكنك استخدام مقياس المجموعة التلقائي مع تجمعات العقد متعددة المثيلات.
ملفات تعريف مثيل GPU
تحدد ملفات تعريف مثيل وحدة معالجة الرسومات كيفية تقسيم وحدات معالجة الرسومات. يعرض الجدول التالي ملف تعريف مثيل GPU المتوفر ل Standard_ND96asr_v4
:
اسم ملف التعريف | جزء من SM | جزء من الذاكرة | عدد المثيلات التي تم إنشاؤها |
---|---|---|---|
MIG 1g.5gb | 1/7 | 1/8 | 7 |
MIG 2g.10gb | 2/7 | 2/8 | 3 |
MIG 3g.20gb | 3/7 | 4/8 | 2 |
MIG 4g.20gb | 4/7 | 4/8 | 1 |
MIG 7g.40gb | 7/7 | 8/8 | 1 |
على سبيل المثال، يشير ملف تعريف مثيل GPU إلى MIG 1g.5gb
أن كل مثيل GPU يحتوي على 1g SM (مورد الحوسبة) وذاكرة 5 غيغابايت. في هذه الحالة، يتم تقسيم وحدة معالجة الرسومات إلى سبعة مثيلات.
تتضمن MIG1g
ملفات تعريف مثيل GPU المتوفرة لحجم المثيل هذا و MIG4g
MIG2g
MIG3g
و.MIG7g
هام
لا يمكنك تغيير ملف تعريف مثيل GPU المطبق بعد إنشاء تجمع العقدة.
إنشاء نظام مجموعة AKS
إنشاء مجموعة موارد Azure باستخدام
az group create
الأمر .az group create --name myResourceGroup --location southcentralus
إنشاء نظام مجموعة AKS باستخدام
az aks create
الأمر .az aks create \ --resource-group myResourceGroup \ --name myAKSCluster\ --node-count 1 \ --generate-ssh-keys
إنشاء مجموعة عُقد GPU متعددة المثيلات
يمكنك استخدام إما Azure CLI أو طلب HTTP إلى ARM API لإنشاء تجمع العقدة.
إنشاء تجمع عقدة GPU متعدد المثيلات
az aks nodepool add
باستخدام الأمر وتحديد ملف تعريف مثيل GPU.az aks nodepool add \ --name mignode \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --node-vm-size Standard_ND96asr_v4 \ --gpu-instance-profile MIG1g
تحديد استراتيجية GPU متعددة المثيلات (MIG)
قبل تثبيت المكونات الإضافية Nvidia، تحتاج إلى تحديد استراتيجية GPU متعددة المثيلات (MIG) لاستخدامها لتقسيم GPU: استراتيجية واحدة أو استراتيجية مختلطة. لا تؤثر الاستراتيجيتان على كيفية تنفيذ أحمال عمل وحدة المعالجة المركزية، ولكن كيفية عرض موارد وحدة معالجة الرسومات.
- استراتيجية واحدة: تتعامل الاستراتيجية الواحدة مع كل مثيل GPU على أنه GPU. إذا كنت تستخدم هذه الاستراتيجية، يتم عرض موارد GPU ك
nvidia.com/gpu: 1
. - استراتيجية مختلطة: تعرض الاستراتيجية المختلطة مثيلات وحدة معالجة الرسومات وملف تعريف مثيل GPU. إذا كنت تستخدم هذه الاستراتيجية، يتم عرض مورد GPU ك
nvidia.com/mig1g.5gb: 1
.
تثبيت وظيفة NVIDIA الإضافية للجهاز واكتشاف ميزة GPU
تعيين استراتيجية MIG كمتغير بيئة. يمكنك استخدام استراتيجية واحدة أو مختلطة.
# Single strategy export MIG_STRATEGY=single # Mixed strategy export MIG_STRATEGY=mixed
أضف المكون الإضافي لجهاز Nvidia وميزة اكتشاف ميزة GPU helm repos باستخدام
helm repo add
الأمرين وhelm repo update
.helm repo add nvdp https://nvidia.github.io/k8s-device-plugin helm repo add nvgfd https://nvidia.github.io/gpu-feature-discovery helm repo update
قم بتثبيت المكون الإضافي لجهاز Nvidia باستخدام
helm install
الأمر .helm install \ --version=0.14.0 \ --generate-name \ --set migStrategy=${MIG_STRATEGY} \ nvdp/nvidia-device-plugin
قم بتثبيت اكتشاف ميزة GPU باستخدام
helm install
الأمر .helm install \ --version=0.2.0 \ --generate-name \ --set migStrategy=${MIG_STRATEGY} \ nvgfd/gpu-feature-discovery
تأكيد قدرة GPU متعدد المثيلات
قم بتكوين
kubectl
للاتصال بمجموعة AKS الخاصة بك باستخدامaz aks get-credentials
الأمر .az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
تحقق من الاتصال بالمجموعة باستخدام
kubectl get
الأمر لإرجاع قائمة عقد نظام المجموعة.kubectl get nodes -o wide
تأكد من أن العقدة لديها قدرة GPU متعددة المثيلات
kubectl describe node
باستخدام الأمر . يصف الأمر المثال التالي العقدة المسماة mignode، والتي تستخدم MIG1g كملف تعريف مثيل GPU.kubectl describe node mignode
يجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:
# Single strategy output Allocatable: nvidia.com/gpu: 56 # Mixed strategy output Allocatable: nvidia.com/mig-1g.5gb: 56
جدولة العمل
تستند الأمثلة التالية إلى إصدار الصورة الأساسية cuda 12.1.1 ل Ubuntu22.04، الموسومة باسم 12.1.1-base-ubuntu22.04
.
استراتيجية واحدة
قم بإنشاء ملف باسم
single-strategy-example.yaml
وانسخه في البيان التالي.apiVersion: v1 kind: Pod metadata: name: nvidia-single spec: containers: - name: nvidia-single image: nvidia/cuda:12.1.1-base-ubuntu22.04 command: ["/bin/sh"] args: ["-c","sleep 1000"] resources: limits: "nvidia.com/gpu": 1
انشر التطبيق باستخدام
kubectl apply
الأمر وحدد اسم بيان YAML.kubectl apply -f single-strategy-example.yaml
تحقق من أجهزة GPU المخصصة باستخدام
kubectl exec
الأمر . يعمل هذا الأمر على استرجاع قائمة نظام المجموعة العنقودية.kubectl exec nvidia-single -- nvidia-smi -L
يشبه المثال التالي الإخراج الذي يظهر عمليات النشر والخدمات التي تم إنشاؤها بنجاح:
GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b) MIG 1g.5gb Device 0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c) MIG 1g.5gb Device 1: (UUID: MIG-3d4db13e-c42d-5555-98f4-8b50389791bc) MIG 1g.5gb Device 2: (UUID: MIG-de819d17-9382-56a2-b9ca-aec36c88014f) MIG 1g.5gb Device 3: (UUID: MIG-50ab4b32-92db-5567-bf6d-fac646fe29f2) MIG 1g.5gb Device 4: (UUID: MIG-7b6b1b6e-5101-58a4-b5f5-21563789e62e) MIG 1g.5gb Device 5: (UUID: MIG-14549027-dd49-5cc0-bca4-55e67011bd85) MIG 1g.5gb Device 6: (UUID: MIG-37e055e8-8890-567f-a646-ebf9fde3ce7a)
استراتيجية مختلطة
قم بإنشاء ملف باسم
mixed-strategy-example.yaml
وانسخه في البيان التالي.apiVersion: v1 kind: Pod metadata: name: nvidia-mixed spec: containers: - name: nvidia-mixed image: nvidia/cuda:12.1.1-base-ubuntu22.04 command: ["/bin/sh"] args: ["-c","sleep 100"] resources: limits: "nvidia.com/mig-1g.5gb": 1
انشر التطبيق باستخدام
kubectl apply
الأمر وحدد اسم بيان YAML.kubectl apply -f mixed-strategy-example.yaml
تحقق من أجهزة GPU المخصصة باستخدام
kubectl exec
الأمر . يعمل هذا الأمر على استرجاع قائمة نظام المجموعة العنقودية.kubectl exec nvidia-mixed -- nvidia-smi -L
يشبه المثال التالي الإخراج الذي يظهر عمليات النشر والخدمات التي تم إنشاؤها بنجاح:
GPU 0: NVIDIA A100 40GB PCIe (UUID: GPU-48aeb943-9458-4282-da24-e5f49e0db44b) MIG 1g.5gb Device 0: (UUID: MIG-fb42055e-9e53-5764-9278-438605a3014c)
هام
latest
تم إهمال علامة صور CUDA على Docker Hub. يرجى الرجوع إلى مستودع NVIDIA للحصول على أحدث الصور والعلامات المقابلة.
استكشاف الأخطاء وإصلاحها
إذا كنت لا ترى قدرة GPU متعددة المثيلات بعد إنشاء تجمع العقدة، فتأكد من أن إصدار واجهة برمجة التطبيقات ليس أقدم من 2021-08-01.
الخطوات التالية
لمزيد من المعلومات حول تجمعات عقد AKS، راجع إدارة تجمعات العقد لنظام مجموعة في AKS.
Azure Kubernetes Service