GPU शेड्यूलिंग

क्लस्टर में नोड्स द्वारा रिसोर्स के रूप में उपयोग के लिए GPU को कॉन्फ़िगर और शेड्यूल करें।
फ़ीचर स्थिति: Kubernetes v1.26 [stable]

कुबेरनेटेस में आपके क्लस्टर के विभिन्न नोड्स पर AMD और NVIDIA GPU (ग्राफिकल प्रोसेसिंग यूनिट्स) को प्रबंधित करने के लिए स्थिर समर्थन शामिल है, जो डिवाइस प्लगइन का उपयोग करता है।

यह पेज बताता है कि उपयोगकर्ता GPU का उपयोग कैसे कर सकते हैं, और कार्यान्वयन में कुछ सीमाओं को रेखांकित करता है।

डिवाइस प्लगइन का उपयोग

कुबेरनेटेस डिवाइस प्लगइन को लागू करता है ताकि पॉड्स GPU जैसी विशेष हार्डवेयर सुविधाओं का उपयोग कर सकें।

एक प्रशासक के रूप में, आपको नोड्स पर संबंधित हार्डवेयर विक्रेता से GPU ड्राइवर्स को इंस्टॉल करना होगा और GPU विक्रेता से संबंधित डिवाइस प्लगइन को चलाना होगा। यहाँ विक्रेताओं के निर्देशों के कुछ लिंक दिए गए हैं:

एक बार जब आप प्लगइन इंस्टॉल कर लेते हैं, तो आपका क्लस्टर एक कस्टम शेड्यूल योग्य रिसोर्स जैसे amd.com/gpu या nvidia.com/gpu को एक्सपोज करता है।

आप अपने कंटेनर से इन GPU का उपयोग कस्टम GPU रिसोर्स का अनुरोध करके कर सकते हैं, उसी तरह जैसे आप cpu या memory का अनुरोध करते हैं। हालांकि, कस्टम डिवाइस के लिए रिसोर्स आवश्यकताओं को निर्दिष्ट करने में कुछ सीमाएं हैं।

GPU को केवल limits सेक्शन में निर्दिष्ट किया जाना चाहिए, जिसका मतलब है:

  • आप requests को निर्दिष्ट किए बिना GPU limits निर्दिष्ट कर सकते हैं, क्योंकि कुबेरनेटेस डिफ़ॉल्ट रूप से लिमिट को रिक्वेस्ट वैल्यू के रूप में उपयोग करेगा।
  • आप GPU को limits और requests दोनों में निर्दिष्ट कर सकते हैं लेकिन इन दोनों मूल्यों को समान होना चाहिए।
  • आप limits को निर्दिष्ट किए बिना GPU requests निर्दिष्ट नहीं कर सकते।

यहाँ एक GPU का अनुरोध करने वाले पॉड के लिए एक उदाहरण मैनिफेस्ट दिया गया है:

apiVersion: v1
kind: Pod
metadata:
  name: example-vector-add
spec:
  restartPolicy: OnFailure
  containers:
    - name: example-vector-add
      image: "registry.example/example-vector-add:v42"
      resources:
        limits:
          gpu-vendor.example/example-gpu: 1 # 1 GPU का अनुरोध

विभिन्न प्रकार के GPU वाले क्लस्टर्स का प्रबंधन

यदि आपके क्लस्टर में विभिन्न नोड्स पर विभिन्न प्रकार के GPU हैं, तो आप नोड लेबल्स और नोड सेलेक्टर्स का उपयोग पॉड्स को उपयुक्त नोड्स पर शेड्यूल करने के लिए कर सकते हैं।

उदाहरण के लिए:

# अपने नोड्स को उनके एक्सेलेरेटर प्रकार के साथ लेबल करें।
kubectl label nodes node1 accelerator=example-gpu-x100
kubectl label nodes node2 accelerator=other-gpu-k915

वह लेबल की accelerator केवल एक उदाहरण है; यदि आप चाहें तो एक अलग लेबल की का उपयोग कर सकते हैं।

स्वचालित नोड लेबलिंग

एक प्रशासक के रूप में, आप कुबेरनेटेस Node Feature Discovery (NFD) को डिप्लॉय करके अपने सभी GPU सक्षम नोड्स को स्वचालित रूप से खोज और लेबल कर सकते हैं। NFD एक कुबेरनेटेस क्लस्टर में प्रत्येक नोड पर उपलब्ध हार्डवेयर फीचर्स का पता लगाता है। आमतौर पर, NFD को उन फीचर्स को नोड लेबल्स के रूप में विज्ञापित करने के लिए कॉन्फ़िगर किया जाता है, लेकिन NFD विस्तारित रिसोर्स, एनोटेशन्स और नोड टेंट्स भी जोड़ सकता है। NFD कुबेरनेटेस के सभी समर्थित वर्जन के साथ संगत है। डिफ़ॉल्ट रूप से NFD पता लगाए गए फीचर्स के लिए फीचर लेबल्स बनाता है। प्रशासक NFD का उपयोग विशिष्ट फीचर्स वाले नोड्स को टेंट करने के लिए भी कर सकते हैं, ताकि केवल उन फीचर्स का अनुरोध करने वाले पॉड्स को उन नोड्स पर शेड्यूल किया जा सके।

आपको NFD के लिए एक प्लगइन की भी आवश्यकता होगी जो आपके नोड्स पर उपयुक्त लेबल्स जोड़ता है; ये जेनेरिक लेबल्स हो सकते हैं या वे विक्रेता विशिष्ट हो सकते हैं। आपका GPU विक्रेता NFD के लिए एक थर्ड पार्टी प्लगइन प्रदान कर सकता है; अधिक जानकारी के लिए उनके दस्तावेज़ीकरण की जाँच करें।

apiVersion: v1
kind: Pod
metadata:
  name: example-vector-add
spec:
  restartPolicy: OnFailure
  # आप इस पॉड को ऐसे नोड पर शेड्यूल करने के लिए कुबेरनेटेस नोड एफिनिटी का उपयोग कर सकते हैं
  # जो उस प्रकार का GPU प्रदान करता है जिसकी इसके कंटेनर को काम करने के लिए आवश्यकता है
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: "gpu.gpu-vendor.example/installed-memory"
            operator: Gt # (से अधिक)
            values: ["40535"]
          - key: "feature.node.कुबेरनेटेस.io/pci-10.present" # NFD फीचर लेबल
            values: ["true"] # (वैकल्पिक) केवल PCI डिवाइस 10 वाले नोड्स पर शेड्यूल करें
  containers:
    - name: example-vector-add
      image: "registry.example/example-vector-add:v42"
      resources:
        limits:
          gpu-vendor.example/example-gpu: 1 # 1 GPU का अनुरोध

GPU विक्रेता कार्यान्वयन

इस पृष्ठ की वस्तुओं अन्य पक्ष के उत्पादों या परियोजनाओं से जुड़ा है जो कुबेरनेट्स द्वारा आवश्यक कार्यक्षमता प्रदान करते हैं। कुबेरनेट्स परियोजना के लेखक इन अन्य पक्ष के उत्पादों या परियोजनाओं के लिए जिम्मेदार नहीं हैं। अधिक जानकारी के लिए यह CNCF वेबसाइट दिशानिर्देश पृष्ठ पढ़े।"

कोई नई अतिरिक्त अन्य पक्ष लिंक जोड़ने से पहले यह पृष्ठ विषय मार्गदर्शक पृष्ठ पढ़के ही परिवर्तन का प्रस्ताव प्रस्तुत करें।

Last modified May 22, 2025 at 10:58 PM PST: Updated Kubernetes to कुबेरनेटेस (dc84df6b6e)