CUDA/AI ایکسلریشن اور میڈیا ٹرانس کوڈنگ کے لیے NVIDIA GPU کو Proxmox VE 8 کنٹینرز تک کیسے منتقل کیا جائے

Cuda Ai Aykslryshn Awr My Ya Rans Kw Ng K Ly Nvidia Gpu Kw Proxmox Ve 8 Kn Ynrz Tk Kys Mntql Kya Jay



اگر آپ کے Proxmox VE سرور پر NVIDIA GPU انسٹال ہے، تو آپ اسے Proxmox VE LXC کنٹینر میں منتقل کر سکتے ہیں اور اسے CUDA/AI ایکسلریشن (یعنی TensorFlow، PyTorch) کے لیے کنٹینر میں استعمال کر سکتے ہیں۔ آپ NVIDIA GPU کو میڈیا ٹرانس کوڈنگ، ویڈیو اسٹریمنگ وغیرہ کے لیے Proxmox VE LXC کنٹینر میں انسٹال کردہ Plex میڈیا سرور یا NextCloud (مثال کے طور پر) کے لیے بھی استعمال کر سکتے ہیں۔

اس آرٹیکل میں، ہم آپ کو دکھائیں گے کہ 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' جیسی نئی فائل بنائیں اور اسے نینو ٹیکسٹ ایڈیٹر کے ساتھ کھولیں۔





$ نینو / وغیرہ / modules-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 ڈیوائس فائلیں بنائیں

کرنل == 'nvidia' , RUN+= '/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 0666 /dev/nvidia*''

کرنل == 'nvidia_uvm' , RUN+= '/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 IDs کو نوٹ کریں۔ آپ کو ان CGroup IDs کو LXC کنٹینر پر اجازت دینی چاہیے جہاں آپ اپنے Proxmox VE 8 سرور سے NVIDIA GPUs کو پاس کرنا چاہتے ہیں۔ ہمارے معاملے میں، CGroup IDs 195، 237، اور 226 ہیں۔

$ ls -lh / دیو / nvidia *

$ ls -lh / دیو / dri

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 کنٹینر کنفیگریشن فائل کو نینو ٹیکسٹ ایڈیٹر کے ساتھ اس طرح کھولیں:

$ نینو / وغیرہ / pve / lxc / 102 .conf

LXC کنٹینر کنفیگریشن فائل کے آخر میں درج ذیل لائنوں میں ٹائپ کریں:

lxc.cgroup.devices.allow: c 195 : * rwm

lxc.cgroup.devices.allow: c 237 : * rwm

lxc.cgroup.devices.allow: c 226 : * rwm

lxc.mount.entry: / دیو / nvidia0          dev / nvidia0          کوئی نہیں۔ باندھنا ،اختیاری، بنانا = فائل

lxc.mount.entry: / دیو / nvidiactl        dev / nvidiactl        کوئی نہیں۔ باندھنا ،اختیاری، بنانا = فائل

lxc.mount.entry: / دیو / nvidia-modset   dev / nvidia-modeset   کوئی نہیں۔ باندھنا ،اختیاری، بنانا = فائل

lxc.mount.entry: / دیو / nvidia-uvm       dev / nvidia-uvm کوئی نہیں۔ باندھنا ،اختیاری، بنانا = فائل

lxc.mount.entry: / دیو / nvidia-uvm-tools dev / nvidia-uvm-tools کوئی نہیں۔ باندھنا ،اختیاری، بنانا = فائل

lxc.mount.entry: / دیو / dri               دیو / dri              کوئی نہیں۔ باندھنا ،اختیاری، بنانا = تم

LXC کنٹینر کنفیگریشن فائل کی 'lxc.cgroup.devices.allow' لائنوں میں CGroup IDs کو تبدیل کرنا یقینی بنائیں۔ ایک بار جب آپ کام کر لیں، دبائیں۔ + ایکس اس کے بعد 'Y' اور <درج کریں> LXC کنٹینر کنفیگریشن فائل کو محفوظ کرنے کے لیے۔

اب، Proxmox VE 8 ڈیش بورڈ سے LXC کنٹینر شروع کریں۔

اگر NVIDIA GPU پاس تھرو کامیاب ہو جاتا ہے تو LXC کنٹینر کو بغیر کسی خرابی کے شروع ہونا چاہیے اور آپ کو NVIDIA ڈیوائس فائلز کو کنٹینر کی '/dev' ڈائریکٹری میں دیکھنا چاہیے۔

$ ls -lh / دیو / nvidia *

$ ls -lh / دیو / dri

Proxmox VE 8 LXC کنٹینر پر NVIDIA GPU ڈرائیوروں کو انسٹال کرنا

ہم مظاہرے کے لیے اپنے Proxmox VE 8 سرور پر Ubuntu 22.04 LTS LXC کنٹینر استعمال کر رہے ہیں۔ اگر آپ LXC کنٹینر پر ایک اور لینکس ڈسٹری بیوشن استعمال کر رہے ہیں، تو آپ کے کمانڈز ہمارے حکم سے قدرے مختلف ہوں گے۔ لہذا، یقینی بنائیں کہ آپ کنٹینر پر استعمال کر رہے لینکس کی تقسیم کے لحاظ سے کمانڈز کو ایڈجسٹ کریں۔

آپ NVIDIA GPU ڈرائیور ورژن تلاش کر سکتے ہیں جسے آپ نے 'nvidia-smi' کمانڈ کے ساتھ اپنے Proxmox VE 8 سرور پر انسٹال کیا ہے۔ جیسا کہ آپ دیکھ سکتے ہیں، ہمارے پاس ہمارے Proxmox VE 8 سرور پر NVIDIA GPU ڈرائیور ورژن 535.146.02 انسٹال ہے۔ لہذا، ہمیں اپنے LXC کنٹینر پر NVIDIA GPU ڈرائیور ورژن 535.146.02 کو بھی انسٹال کرنا چاہیے۔

$ nvidia-smi

سب سے پہلے، مندرجہ ذیل طور پر LXC کنٹینر پر CURL انسٹال کریں:

$ مناسب اپ ڈیٹ && مناسب انسٹال کریں curl -اور

CURL کو LXC کنٹینر پر انسٹال کیا جانا چاہئے۔

NVIDIA GPU ڈرائیورز ورژن 535.146.02 (آئیے کہتے ہیں) انسٹال کرنے کے لیے، NVIDIA_VERSION ماحولیاتی متغیر کو برآمد کریں اور NVIDIA GPU ڈرائیورز انسٹالر فائل کا مطلوبہ ورژن ڈاؤن لوڈ کرنے کے لیے CURL کمانڈ (کنٹینر پر) چلائیں۔

$ برآمد NVIDIA_VERSION = '535.146.02'

$ curl -O 'https://us.download.nvidia.com/XFree86/Linux-x86_64/ ${NVIDIA_VERSION} /NVIDIA-Linux-x86_64- ${NVIDIA_VERSION} .رن'

NVIDIA GPU ڈرائیورز انسٹالر فائل کا صحیح ورژن LXC کنٹینر پر ڈاؤن لوڈ کیا جانا چاہئے جیسا کہ آپ درج ذیل اسکرین شاٹ میں دیکھ سکتے ہیں:

اب، مندرجہ ذیل طور پر کنٹینر پر NVIDIA GPU ڈرائیور انسٹالر فائل میں ایک قابل عمل اجازت شامل کریں:

$ chmod +x NVIDIA-Linux-x86_64-535.146.02.run

NVIDIA GPU ڈرائیوروں کو کنٹینر پر انسٹال کرنے کے لیے، NVIDIA GPU ڈرائیورز انسٹالر فائل کو '-no-kernel-module' کے ساتھ چلائیں۔ مندرجہ ذیل اختیار:

$ . / NVIDIA-Linux-x86_64-535.146.02.run --no-kernel-module

ایک بار جب آپ یہ آپشن دیکھیں تو 'OK' کو منتخب کریں اور دبائیں۔ <درج کریں> .

'ٹھیک ہے' کو منتخب کریں اور دبائیں۔ <درج کریں> .

'ہاں' کو منتخب کریں اور دبائیں۔ <درج کریں> .

'ٹھیک ہے' کو منتخب کریں اور دبائیں۔ <درج کریں> .

NVIDIA GPU ڈرائیور LXC کنٹینر پر نصب کیے جا رہے ہیں۔ اسے مکمل ہونے میں چند سیکنڈ لگتے ہیں۔

ایک بار جب آپ اس پرامپٹ کو دیکھیں تو، 'ہاں' کو منتخب کریں اور دبائیں۔ <درج کریں> .

'ٹھیک ہے' کو منتخب کریں اور دبائیں۔ <درج کریں> . NVIDIA GPU ڈرائیوروں کو LXC کنٹینر پر انسٹال کیا جانا چاہئے۔

یہ تصدیق کرنے کے لیے کہ آیا NVIDIA GPU ڈرائیورز انسٹال اور کام کر رہے ہیں، LXC کنٹینر پر 'nvidia-smi' کمانڈ چلائیں۔ جیسا کہ آپ دیکھ سکتے ہیں، NVIDIA GPU ڈرائیور ورژن 535.146.02 (Proxmox VE 8 سرور پر انسٹال کردہ وہی ورژن) LXC کنٹینر پر انسٹال ہے اور اس نے ہمارے NVIDIA RTX 4070 GPU کا صحیح پتہ لگایا ہے۔

$ nvidia-smi

Proxmox VE 8 LXC کنٹینر پر NVIDIA CUDA اور cuDNN انسٹال کرنا

ہم مظاہرے کے لیے اپنے Proxmox VE 8 سرور پر Ubuntu 22.04 LTS LXC کنٹینر استعمال کر رہے ہیں۔ اگر آپ LXC کنٹینر پر ایک اور لینکس ڈسٹری بیوشن استعمال کر رہے ہیں، تو آپ کے کمانڈز ہمارے حکم سے قدرے مختلف ہوں گے۔ لہذا، یقینی بنائیں کہ آپ کنٹینر پر استعمال کر رہے لینکس کی تقسیم کے لحاظ سے کمانڈز کو ایڈجسٹ کریں۔

Ubuntu 22.04 LTS Proxmox VE 8 کنٹینر پر NVIDIA CUDA اور cuDNN انسٹال کرنے کے لیے، کنٹینر پر درج ذیل کمانڈ چلائیں:

$ مناسب انسٹال کریں تعمیر ضروری Nvidia-cuda-toolkit nvidia-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 ~ / کوڈ

ذیل میں '~/code' پروجیکٹ ڈائرکٹری پر جائیں:

$ سی ڈی `/ کوڈ

Proxmox VE 8 کنٹینر کی '~/code' ڈائرکٹری میں 'hello.cu' جیسی نئی فائل بنائیں اور اسے نینو ٹیکسٹ ایڈیٹر کے ساتھ کھولیں:

$ نینو hello.cu

'hello.cu' فائل میں درج ذیل کوڈ کی لائنیں ٹائپ کریں:

# شامل کریں

__global__ void sayHello ( ) {
printf ( 'جی پی یو کی طرف سے ہیلو ورلڈ! \n ' ) ;
}

اہم int ( ) {
printf ( 'سی پی یو کی طرف سے ہیلو ورلڈ! \n ' ) ;

ہیلو کہنا << 1 ، 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;

واپسی 0 ;
}

ایک بار جب آپ کام کر لیں، دبائیں۔ + ایکس اس کے بعد 'Y' اور <درج کریں> 'hello.cu' فائل کو محفوظ کرنے کے لیے۔

Proxmox VE 8 کنٹینر پر 'hello.cu' CUDA پروگرام مرتب کرنے کے لیے، درج ذیل کمانڈز چلائیں:

$ nvcc hello.cu -O ہیلو

اب، آپ Proxmox VE 8 کنٹینر پر 'ہیلو' CUDA پروگرام کو اس طرح چلا سکتے ہیں:

$ . / ہیلو

اگر Proxmox VE 8 کنٹینر NVIDIA CUDA ایکسلریشن کے لیے NVIDIA GPU استعمال کر سکتا ہے، تو پروگرام دو لائنیں پرنٹ کرے گا جیسا کہ درج ذیل اسکرین شاٹ میں دکھایا گیا ہے۔

اگر NVIDIA GPU Proxmox VE 8 کنٹینر سے قابل رسائی نہیں ہے، تو پروگرام صرف پہلی لائن پرنٹ کرے گا جو کہ 'CPU سے ہیلو ورلڈ!' ہے، دوسری لائن نہیں۔

نتیجہ

اس آرٹیکل میں، ہم نے آپ کو دکھایا کہ NVIDIA GPU کو Proxmox VE 8 میزبان سے Proxmox VE 8 LXC کنٹینر میں کیسے منتقل کیا جائے۔ ہم نے آپ کو یہ بھی دکھایا کہ NVIDIA GPU ڈرائیوروں کا وہی ورژن Proxmox VE 8 کنٹینر پر Proxmox VE میزبان کے طور پر کیسے انسٹال کیا جائے۔ آخر میں، ہم نے آپ کو دکھایا کہ کس طرح Ubuntu 22.04 LTS Proxmox VE 8 کنٹینر پر NVIDIA CUDA اور NVIDIA cuDNN کو انسٹال کرنا ہے اور Proxmox VE 8 کنٹینر پر ایک سادہ NVIDIA CUDA پروگرام کو مرتب اور چلانا ہے۔

حوالہ جات: