CUDA/AI त्वरण और मीडिया ट्रांसकोडिंग के लिए Proxmox VE 8 कंटेनरों में NVIDIA GPU को कैसे पार करें

Cuda Ai Tvarana Aura Midiya Transakodinga Ke Li E Proxmox Ve 8 Kantenarom Mem Nvidia Gpu Ko Kaise Para Karem



यदि आपके पास अपने Proxmox VE सर्वर पर NVIDIA GPU स्थापित है, तो आप इसे Proxmox VE LXC कंटेनर में पास कर सकते हैं और इसे CUDA/AI त्वरण (यानी TensorFlow, PyTorch) के लिए कंटेनर में उपयोग कर सकते हैं। आप स्थापित Plex Media Server या NextCloud (उदाहरण के लिए) के साथ Proxmox VE LXC कंटेनर में मीडिया ट्रांसकोडिंग, वीडियो स्ट्रीमिंग आदि के लिए NVIDIA GPU का भी उपयोग कर सकते हैं।

इस लेख में, हम आपको दिखाएंगे कि NVIDIA GPU को Proxmox VE 8 LXC कंटेनर में कैसे डाला जाए ताकि आप इसका उपयोग CUDA/AI त्वरण, मीडिया ट्रांसकोडिंग, या अन्य कार्यों के लिए कर सकें जिनके लिए NVIDIA GPU की आवश्यकता होती है।







सामग्री का विषय:

Proxmox VE 8 पर NVIDIA GPU ड्राइवर स्थापित करना

एक NVIDIA GPU को Proxmox VE LXC कंटेनर में स्थानांतरित करने के लिए, आपके पास अपने Proxmox VE 8 सर्वर पर NVIDIA GPU ड्राइवर स्थापित होना चाहिए। यदि आपको अपने Proxmox VE 8 सर्वर पर आधिकारिक NVIDIA GPU ड्राइवरों के नवीनतम संस्करण को स्थापित करने में किसी सहायता की आवश्यकता है, इस लेख को पढ़ें .



यह सुनिश्चित करना कि NVIDIA GPU कर्नेल मॉड्यूल स्वचालित रूप से Proxmox VE 8 में लोड हो गए हैं

एक बार जब आप अपने Proxmox VE 8 सर्वर पर NVIDIA GPU ड्राइवर स्थापित कर लेते हैं, तो आपको यह सुनिश्चित करना होगा कि NVIDIA GPU कर्नेल मॉड्यूल बूट समय पर स्वचालित रूप से लोड हो जाते हैं।



सबसे पहले, '/etc/modules-load.d/' निर्देशिका में 'nvidia.conf' जैसी एक नई फ़ाइल बनाएं और इसे नैनो टेक्स्ट एडिटर के साथ खोलें।





$ नैनो / वगैरह / मॉड्यूल-load.d / nvidia.conf

निम्नलिखित पंक्तियाँ जोड़ें और दबाएँ + एक्स उसके बाद 'Y' और <दर्ज करें> “nvidia.conf” फ़ाइल को सहेजने के लिए:



NVIDIA

nvidia_uvm

परिवर्तनों को प्रभावी करने के लिए, 'initramfs' फ़ाइल को निम्न आदेश के साथ अद्यतन करें:

$ अद्यतन-initramfs -में

किसी कारण से, Proxmox VE 8 '/dev/' निर्देशिका में आवश्यक NVIDIA GPU डिवाइस फ़ाइलें नहीं बनाता है। उन डिवाइस फ़ाइलों के बिना, Promox VE 8 LXC कंटेनर NVIDIA GPU का उपयोग करने में सक्षम नहीं होंगे।

यह सुनिश्चित करने के लिए कि Proxmox VE 8 बूट समय पर '/dev/' निर्देशिका में NVIDIA GPU डिवाइस फ़ाइलें बनाता है, '/etc/udev/rules.d/' में एक udev नियम फ़ाइल '70-nvidia.rules' बनाएं। निर्देशिका बनाएं और इसे नैनो टेक्स्ट संपादक के साथ निम्नानुसार खोलें:

$ नैनो / वगैरह / udev / नियम.डी / 70 -nvidia.rules

'70-nvidia.rules' फ़ाइल में निम्नलिखित पंक्तियाँ टाइप करें और दबाएँ + एक्स उसके बाद 'Y' और <दर्ज करें> फ़ाइल को सहेजने के लिए:

# /dev/* में आवश्यक NVIDIA डिवाइस फ़ाइलें बनाएं

कर्नेल == 'एनवीडिया' , भागो+= '/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 0666 /dev/nvidia*''

कर्नेल == 'एनवीडिया_यूवीएम' , भागो+= '/bin/bash -c '/usr/bin/nvidia-modtest -c0 -u && /bin/chmod 0666 /dev/nvidia-uvm*''

परिवर्तनों को प्रभावी करने के लिए, अपने Proxmox VE 8 सर्वर को निम्नानुसार रीबूट करें:

$ रिबूट

एक बार जब आपका Proxmox VE 8 सर्वर बूट हो जाता है, तो NVIDIA कर्नेल मॉड्यूल स्वचालित रूप से लोड हो जाना चाहिए जैसा कि आप निम्नलिखित स्क्रीनशॉट में देख सकते हैं:

$ lsmod | पकड़ NVIDIA

आवश्यक NVIDIA डिवाइस फ़ाइलें आपके Proxmox VE 8 सर्वर की '/dev' निर्देशिका में भी भरी जानी चाहिए। NVIDIA डिवाइस फ़ाइलों की CGroup ID नोट करें। आपको उन CGroup ID को LXC कंटेनर पर अनुमति देनी होगी जहां आप अपने Proxmox VE 8 सर्वर से NVIDIA GPU को पार करना चाहते हैं। हमारे मामले में, सीजीग्रुप आईडी 195, 237 और 226 हैं।

$ रास -एलएच / देव / NVIDIA *

$ रास -एलएच / देव / डीआरआई

NVIDIA GPU पासथ्रू के लिए Proxmox VE 8 LXC कंटेनर बनाना

हमने प्रदर्शन के लिए इस लेख में Ubuntu 22.04 LTS Proxmox VE 8 LXC कंटेनर का उपयोग किया है क्योंकि NVIDIA CUDA और NVIDIA cuDNN लाइब्रेरीज़ को Ubuntu पैकेज रिपॉजिटरी से Ubuntu 22.04 LTS पर स्थापित करना आसान है और यह परीक्षण करना आसान है कि NVIDIA CUDA त्वरण काम कर रहा है या नहीं। . यदि आप चाहें, तो आप अन्य लिनक्स वितरणों का भी उपयोग कर सकते हैं। उस स्थिति में, NVIDIA CUDA और NVIDIA cuDNN इंस्टॉलेशन कमांड अलग-अलग होंगे। अपने इच्छित लिनक्स वितरण के लिए NVIDIA CUDA और NVIDIA cuDNN इंस्टॉलेशन निर्देशों का पालन करना सुनिश्चित करें।

यदि आपको Proxmox VE 8 LXC कंटेनर बनाने में किसी सहायता की आवश्यकता है, इस लेख को पढ़ें .

Promox VE 8 पर NVIDIA GPU पासथ्रू के लिए LXC कंटेनर को कॉन्फ़िगर करना

NVIDIA GPU पासथ्रू के लिए एक LXC कंटेनर (कंटेनर 102, मान लीजिए) को कॉन्फ़िगर करने के लिए, नैनो टेक्स्ट एडिटर के साथ Proxmox VE शेल से LXC कंटेनर कॉन्फ़िगरेशन फ़ाइल को निम्नानुसार खोलें:

$ नैनो / वगैरह / पी.वी.ई / एलएक्ससी / 102 .conf

LXC कंटेनर कॉन्फ़िगरेशन फ़ाइल के अंत में निम्नलिखित पंक्तियाँ टाइप करें:

lxc.cgroup.devices.allow: सी 195 : * आरडब्ल्यूएम

lxc.cgroup.devices.allow: सी 237 : * आरडब्ल्यूएम

lxc.cgroup.devices.allow: सी 226 : * आरडब्ल्यूएम

एलएक्ससी.माउंट.एंट्री: / देव / nvidia0 ----------------------देव / nvidia0          कोई नहीं बाँध ,वैकल्पिक, बनाएं = फ़ाइल

एलएक्ससी.माउंट.एंट्री: / देव / nvidiactl ------देव / nvidiactl       कोई नहीं बाँध ,वैकल्पिक, बनाएं = फ़ाइल

एलएक्ससी.माउंट.एंट्री: / देव / एनवीडिया-मोडसेट dev / एनवीडिया-मोडसेट कोई नहीं बाँध ,वैकल्पिक, बनाएं = फ़ाइल

एलएक्ससी.माउंट.एंट्री: / देव / एनवीडिया-यूवीएम ----------------देव / एनवीडिया-यूवीएम ----------------कोई नहीं बाँध ,वैकल्पिक, बनाएं = फ़ाइल

एलएक्ससी.माउंट.एंट्री: / देव / एनवीडिया-यूवीएम-टूल्स देव / एनवीडिया-यूवीएम-टूल्स कोई नहीं बाँध ,वैकल्पिक, बनाएं = फ़ाइल

एलएक्ससी.माउंट.एंट्री: / देव / डॉ ‍             देव / द्रि -------------------------------------- कोई नहीं बाँध ,वैकल्पिक, बनाएं = आप

LXC कंटेनर कॉन्फ़िगरेशन फ़ाइल की 'lxc.cgroup.devices.allow' पंक्तियों में CGroup ID को बदलना सुनिश्चित करें। एक बार जब आपका काम पूरा हो जाए, तो दबाएँ + एक्स उसके बाद 'Y' और <दर्ज करें> LXC कंटेनर कॉन्फ़िगरेशन फ़ाइल को सहेजने के लिए।

अब, Proxmox VE 8 डैशबोर्ड से LXC कंटेनर प्रारंभ करें।

यदि NVIDIA GPU पासथ्रू सफल है, तो LXC कंटेनर को बिना किसी त्रुटि के प्रारंभ होना चाहिए और आपको कंटेनर की '/dev' निर्देशिका में NVIDIA डिवाइस फ़ाइलें दिखनी चाहिए।

$ रास -एलएच / देव / NVIDIA *

$ रास -एलएच / देव / डीआरआई

Proxmox VE 8 LXC कंटेनर पर NVIDIA GPU ड्राइवर स्थापित करना

हम प्रदर्शन के लिए अपने Proxmox VE 8 सर्वर पर Ubuntu 22.04 LTS LXC कंटेनर का उपयोग कर रहे हैं। यदि आप एलएक्ससी कंटेनर पर किसी अन्य लिनक्स वितरण का उपयोग कर रहे हैं, तो आपके आदेश हमारे से थोड़े भिन्न होंगे। इसलिए, कंटेनर पर आपके द्वारा उपयोग किए जा रहे लिनक्स वितरण के आधार पर कमांड को समायोजित करना सुनिश्चित करें।

आप NVIDIA GPU ड्राइवर संस्करण पा सकते हैं जिसे आपने 'nvidia-smi' कमांड के साथ अपने Proxmox VE 8 सर्वर पर इंस्टॉल किया है। जैसा कि आप देख सकते हैं, हमारे Proxmox VE 8 सर्वर पर NVIDIA GPU ड्राइवर संस्करण 535.146.02 स्थापित है। इसलिए, हमें अपने LXC कंटेनर पर भी NVIDIA GPU ड्राइवर संस्करण 535.146.02 स्थापित करना होगा।

$ एनवीडिया-एसएमआई

सबसे पहले, LXC कंटेनर पर CURL को निम्नानुसार स्थापित करें:

$ उपयुक्त अद्यतन && अपार्ट स्थापित करना कर्ल -और

एलएक्ससी कंटेनर पर कर्ल स्थापित किया जाना चाहिए।

NVIDIA GPU ड्राइवर संस्करण 535.146.02 (मान लें) स्थापित करने के लिए, NVIDIA_VERSION एनवायरमेंट वेरिएबल निर्यात करें और NVIDIA GPU ड्राइवर इंस्टॉलर फ़ाइल के आवश्यक संस्करण को डाउनलोड करने के लिए CURL कमांड (कंटेनर पर) चलाएँ।

$ निर्यात NVIDIA_संस्करण = '535.146.02'

$ कर्ल -ओ 'https://us.download.nvidia.com/XFree86/Linux-x86_64/ ${NVIDIA_VERSION} /एनवीडिया-लिनक्स-x86_64- ${NVIDIA_VERSION} ।दौड़ना'

NVIDIA GPU ड्राइवर इंस्टॉलर फ़ाइल का सही संस्करण LXC कंटेनर पर डाउनलोड किया जाना चाहिए जैसा कि आप निम्नलिखित स्क्रीनशॉट में देख सकते हैं:

अब, कंटेनर पर NVIDIA GPU ड्राइवर इंस्टॉलर फ़ाइल में एक निष्पादन योग्य अनुमति निम्नानुसार जोड़ें:

$ चामोद +x NVIDIA-Linux-x86_64-535.146.02.run

कंटेनर पर NVIDIA GPU ड्राइवर स्थापित करने के लिए, NVIDIA GPU ड्राइवर इंस्टॉलर फ़ाइल को '-नो-कर्नेल-मॉड्यूल' के साथ चलाएँ। विकल्प इस प्रकार है:

$ . / NVIDIA-Linux-x86_64-535.146.02.run --नो-कर्नेल-मॉड्यूल

एक बार जब आपको यह विकल्प दिखाई दे, तो 'ओके' चुनें और दबाएँ <दर्ज करें> .

'ओके' चुनें और दबाएँ <दर्ज करें> .

'हाँ' चुनें और दबाएँ <दर्ज करें> .

'ओके' चुनें और दबाएँ <दर्ज करें> .

NVIDIA GPU ड्राइवर LXC कंटेनर पर स्थापित किए जा रहे हैं। इसे पूरा होने में कुछ सेकंड लगते हैं.

एक बार जब आप यह संकेत देख लें, तो 'हाँ' चुनें और दबाएँ <दर्ज करें> .

'ओके' चुनें और दबाएँ <दर्ज करें> . NVIDIA GPU ड्राइवरों को LXC कंटेनर पर स्थापित किया जाना चाहिए।

यह पुष्टि करने के लिए कि क्या NVIDIA GPU ड्राइवर स्थापित हैं और काम कर रहे हैं, LXC कंटेनर पर 'nvidia-smi' कमांड चलाएँ। जैसा कि आप देख सकते हैं, NVIDIA GPU ड्राइवर संस्करण 535.146.02 (Proxmox VE 8 सर्वर पर स्थापित वही संस्करण) LXC कंटेनर पर स्थापित है और इसने हमारे NVIDIA RTX 4070 GPU का सही ढंग से पता लगाया है।

$ एनवीडिया-एसएमआई

Proxmox VE 8 LXC कंटेनर पर NVIDIA CUDA और cuDNN स्थापित करना

हम प्रदर्शन के लिए अपने Proxmox VE 8 सर्वर पर Ubuntu 22.04 LTS LXC कंटेनर का उपयोग कर रहे हैं। यदि आप एलएक्ससी कंटेनर पर किसी अन्य लिनक्स वितरण का उपयोग कर रहे हैं, तो आपके आदेश हमारे से थोड़े भिन्न होंगे। इसलिए, कंटेनर पर आपके द्वारा उपयोग किए जा रहे लिनक्स वितरण के आधार पर कमांड को समायोजित करना सुनिश्चित करें।

Ubuntu 22.04 LTS Proxmox VE 8 कंटेनर पर NVIDIA CUDA और cuDNN स्थापित करने के लिए, कंटेनर पर निम्नलिखित कमांड चलाएँ:

$ अपार्ट स्थापित करना बिल्ड-एसेंशियल एनवीडिया-क्यूडा-टूलकिट एनवीडिया-सीयूडीएन

स्थापना की पुष्टि करने के लिए, 'Y' दबाएँ और फिर दबाएँ <दर्ज करें> .

आवश्यक पैकेज डाउनलोड और इंस्टॉल किए जा रहे हैं। इसे पूरा होने में थोड़ा समय लगता है.

एक बार जब आप यह विंडो देख लें, तो 'ओके' चुनें और दबाएँ <दर्ज करें> .

'मैं सहमत हूं' चुनें और दबाएँ <दर्ज करें> .

स्थापना जारी रहनी चाहिए.

इंस्टॉलर NVIDIA से NVIDIA cuDNN लाइब्रेरी संग्रह डाउनलोड कर रहा है। यह एक बड़ी फ़ाइल है, इसलिए इसे पूरा होने में लंबा समय लगता है।

एक बार NVIDIA cuDNN लाइब्रेरी संग्रह डाउनलोड हो जाने के बाद, इंस्टॉलेशन हमेशा की तरह जारी रहना चाहिए।

इस बिंदु पर, NVIDIA CUDA और cuDNN को Ubuntu 22.04 LTS Proxmox VE 8 LXC कंटेनर पर स्थापित किया जाना चाहिए।

जाँच कर रहा है कि क्या NVIDIA CUDA एक्सेलेरेशन Proxmox VE 8 LXC कंटेनर पर काम कर रहा है

यह सत्यापित करने के लिए कि क्या NVIDIA CUDA सही तरीके से स्थापित है, जांचें कि क्या 'nvcc' कमांड Proxmox VE 8 कंटेनर पर निम्नानुसार उपलब्ध है:

$ एनवीसीसी --संस्करण

जैसा कि आप देख सकते हैं, हमारे Proxmox VE 8 कंटेनर पर NVIDIA CUDA 11.5 स्थापित है।

अब, आइए एक सरल CUDA C प्रोग्राम लिखें, संकलित करें और चलाएं और देखें कि क्या सब कुछ अपेक्षा के अनुरूप काम कर रहा है।

सबसे पहले, फ़ाइलों को व्यवस्थित रखने के लिए Proxmox VE 8 कंटेनर पर एक '~/code' प्रोजेक्ट निर्देशिका बनाएं।

$ mkdir ~ / कोड

निम्नानुसार '~/कोड' प्रोजेक्ट निर्देशिका पर नेविगेट करें:

$ सीडी `/ कोड

Proxmox VE 8 कंटेनर की '~/code' निर्देशिका में 'hello.cu' जैसी एक नई फ़ाइल बनाएं और इसे नैनो टेक्स्ट एडिटर के साथ खोलें:

$ नैनो नमस्ते.cu

“hello.cu” फ़ाइल में कोड की निम्नलिखित पंक्तियाँ टाइप करें:

#शामिल

__वैश्विक__शून्य नमस्ते कहो ( ) {
printf ( 'जीपीयू की ओर से हेलो वर्ल्ड! \एन ' ) ;
}

मुख्य प्रवेश बिंदु ( ) {
printf ( 'सीपीयू की ओर से हेलो वर्ल्ड! \एन ' ) ;

हैलो कहें << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;

वापस करना 0 ;
}

एक बार जब आपका काम पूरा हो जाए, तो दबाएँ + एक्स उसके बाद 'Y' और <दर्ज करें> “hello.cu” फ़ाइल को सहेजने के लिए।

Proxmox VE 8 कंटेनर पर 'hello.cu' CUDA प्रोग्राम को संकलित करने के लिए, निम्नलिखित कमांड चलाएँ:

$ nvcc hello.cu -ओ नमस्ते

अब, आप Proxmox VE 8 कंटेनर पर 'हैलो' CUDA प्रोग्राम इस प्रकार चला सकते हैं:

$ . / नमस्ते

यदि Proxmox VE 8 कंटेनर NVIDIA CUDA त्वरण के लिए NVIDIA GPU का उपयोग कर सकता है, तो प्रोग्राम दो पंक्तियों को प्रिंट करेगा जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है।

यदि NVIDIA GPU Proxmox VE 8 कंटेनर से पहुंच योग्य नहीं है, तो प्रोग्राम केवल पहली पंक्ति प्रिंट करेगा जो कि 'सीपीयू से हैलो वर्ल्ड!' है, दूसरी पंक्ति नहीं।

निष्कर्ष

इस लेख में, हमने आपको दिखाया कि Proxmox VE 8 होस्ट से Proxmox VE 8 LXC कंटेनर में NVIDIA GPU को कैसे पास किया जाए। हमने आपको यह भी दिखाया कि Proxmox VE 8 कंटेनर पर Proxmox VE होस्ट के समान NVIDIA GPU ड्राइवर कैसे स्थापित करें। अंत में, हमने आपको दिखाया कि Ubuntu 22.04 LTS Proxmox VE 8 कंटेनर पर NVIDIA CUDA और NVIDIA cuDNN कैसे स्थापित करें और Proxmox VE 8 कंटेनर पर एक सरल NVIDIA CUDA प्रोग्राम को संकलित और चलाएं।

सन्दर्भ: