Paano Ipasa ang NVIDIA GPU sa Proxmox VE 8 Container para sa CUDA/AI Acceleration at Media Transcoding

Paano Ipasa Ang Nvidia Gpu Sa Proxmox Ve 8 Container Para Sa Cuda Ai Acceleration At Media Transcoding



Kung mayroon kang NVIDIA GPU na naka-install sa iyong Proxmox VE server, maaari mo itong ipasa sa isang Proxmox VE LXC container at gamitin ito sa container para sa CUDA/AI acceleration (i.e. TensorFlow, PyTorch). Maaari mo ring gamitin ang NVIDIA GPU para sa media transcoding, video streaming, atbp. sa isang Proxmox VE LXC container na may naka-install na Plex Media Server o NextCloud (halimbawa).

Sa artikulong ito, ipapakita namin sa iyo kung paano ipasa ang isang NVIDIA GPU sa isang Proxmox VE 8 LXC container para magamit mo ito para sa CUDA/AI acceleration, media transcoding, o iba pang mga gawain na nangangailangan ng NVIDIA GPU.







Paksa ng Nilalaman:

Pag-install ng NVIDIA GPU Drivers sa Proxmox VE 8

Upang makapasa sa isang NVIDIA GPU sa isang Proxmox VE LXC container, dapat ay mayroon kang mga NVIDIA GPU driver na naka-install sa iyong Proxmox VE 8 server. Kung kailangan mo ng anumang tulong sa pag-install ng pinakabagong bersyon ng mga opisyal na driver ng NVIDIA GPU sa iyong Proxmox VE 8 server, basahin ang artikulong ito .



Siguraduhing Awtomatikong Na-load ang NVIDIA GPU Kernel Module sa Proxmox VE 8

Kapag na-install mo na ang mga driver ng NVIDIA GPU sa iyong Proxmox VE 8 server, dapat mong tiyakin na ang mga NVIDIA GPU kernel module ay awtomatikong na-load sa oras ng boot.



Una, gumawa ng bagong file tulad ng “nvidia.conf” sa “/etc/modules-load.d/” directory at buksan ito gamit ang nano text editor.





$ nano / atbp / modules-load.d / nvidia.conf

Idagdag ang mga sumusunod na linya at pindutin + X sinundan ng 'Y' at para i-save ang “nvidia.conf” file:



nvidia

nvidia_uvm

Para magkabisa ang mga pagbabago, i-update ang 'initramfs' file gamit ang sumusunod na command:

$ update-initramfs -sa

Para sa ilang kadahilanan, hindi ginagawa ng Proxmox VE 8 ang mga kinakailangang NVIDIA GPU device file sa “/dev/” directory. Kung wala ang mga file ng device na iyon, hindi magagamit ng mga container ng Promox VE 8 LXC ang NVIDIA GPU.

Para matiyak na ginagawa ng Proxmox VE 8 ang mga NVIDIA GPU device file sa “/dev/” directory sa oras ng boot, gumawa ng udev rules file na “70-nvidia.rules” sa “/etc/udev/rules.d/” direktoryo at buksan ito gamit ang nano text editor tulad ng sumusunod:

$ nano / atbp / udev / tuntunin.d / 70 -nvidia.rules

I-type ang mga sumusunod na linya sa '70-nvidia.rules' na file at pindutin + X sinundan ng 'Y' at para i-save ang file:

# lumikha ng mga kinakailangang file ng device ng NVIDIA sa /dev/*

KERNEL == 'nvidia' , RUN+= '/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 0666 /dev/nvidia*''

KERNEL == 'nvidia_uvm' , RUN+= '/bin/bash -c '/usr/bin/nvidia-modtest -c0 -u && /bin/chmod 0666 /dev/nvidia-uvm*''

Para magkabisa ang mga pagbabago, i-reboot ang iyong Proxmox VE 8 server gaya ng sumusunod:

$ i-reboot

Kapag ang iyong Proxmox VE 8 server boots, ang NVIDIA kernel modules ay dapat na awtomatikong mai-load tulad ng makikita mo sa sumusunod na screenshot:

$ lsmod | mahigpit na pagkakahawak nvidia

Dapat ding i-populate ang mga kinakailangang file ng NVIDIA device sa “/dev” directory ng iyong Proxmox VE 8 server. Tandaan ang mga CGroup ID ng mga file ng NVIDIA device. Dapat mong payagan ang mga CGroup ID na iyon sa LXC container kung saan mo gustong dumaan sa mga NVIDIA GPU mula sa iyong Proxmox VE 8 server. Sa aming kaso, ang mga CGroup ID ay 195, 237, at 226.

$ ls -lh / dev / nvidia *

$ ls -lh / dev / dri

Paggawa ng Proxmox VE 8 LXC Container para sa NVIDIA GPU Passthrough

Gumamit kami ng Ubuntu 22.04 LTS Proxmox VE 8 LXC container sa artikulong ito para sa demonstration dahil ang NVIDIA CUDA at NVIDIA cuDNN library ay madaling i-install sa Ubuntu 22.04 LTS mula sa Ubuntu package repository at mas madaling subukan kung gumagana ang NVIDIA CUDA acceleration . Kung gusto mo, maaari mo ring gamitin ang iba pang mga pamamahagi ng Linux. Sa kasong iyon, ang mga utos sa pag-install ng NVIDIA CUDA at NVIDIA cuDNN ay mag-iiba. Tiyaking sundin ang mga tagubilin sa pag-install ng NVIDIA CUDA at NVIDIA cuDNN para sa iyong gustong pamamahagi ng Linux.

Kung kailangan mo ng anumang tulong sa paggawa ng Proxmox VE 8 LXC container, basahin ang artikulong ito .

Pag-configure ng LXC Container para sa NVIDIA GPU Passthrough sa Promox VE 8

Para mag-configure ng LXC container (container 102, sabihin natin) para sa NVIDIA GPU passthrough, buksan ang LXC container configuration file mula sa Proxmox VE shell gamit ang nano text editor tulad ng sumusunod:

$ nano / atbp / pve / lxc / 102 .conf

I-type ang mga sumusunod na linya sa dulo ng LXC container configuration file:

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

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

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

lxc.mount.entry: / dev / nvidia0          dev / nvidia0          wala magbigkis ,opsyonal, lumikha = file

lxc.mount.entry: / dev / nvidiactl        dev / nvidiactl        wala magbigkis ,opsyonal, lumikha = file

lxc.mount.entry: / dev / nvidia-modeset   dev / nvidia-modeset   wala magbigkis ,opsyonal, lumikha = file

lxc.mount.entry: / dev / nvidia-uvm       dev / nvidia-uvm       wala magbigkis ,opsyonal, lumikha = file

lxc.mount.entry: / dev / nvidia-uvm-tools dev / nvidia-uvm-tools wala magbigkis ,opsyonal, lumikha = file

lxc.mount.entry: / dev / dri              dev / dri              wala magbigkis ,opsyonal, lumikha = ikaw

Tiyaking palitan ang mga CGroup ID sa mga linya ng “lxc.cgroup.devices.allow” ng LXC container configuration file. Kapag tapos ka na, pindutin + X sinusundan ng 'Y' at para i-save ang LXC container configuration file.

Ngayon, simulan ang LXC container mula sa Proxmox VE 8 dashboard.

Kung matagumpay ang NVIDIA GPU passthrough, dapat magsimula ang LXC container nang walang anumang error at dapat mong makita ang NVIDIA device files sa “/dev” directory ng container.

$ ls -lh / dev / nvidia *

$ ls -lh / dev / dri

Pag-install ng NVIDIA GPU Drivers sa Proxmox VE 8 LXC Container

Gumagamit kami ng Ubuntu 22.04 LTS LXC na lalagyan sa aming Proxmox VE 8 server para sa pagpapakita. Kung gumagamit ka ng isa pang pamamahagi ng Linux sa lalagyan ng LXC, ang iyong mga utos ay bahagyang mag-iiba mula sa amin. Kaya, siguraduhing isaayos ang mga command depende sa Linux distribution na ginagamit mo sa container.

Mahahanap mo ang bersyon ng mga driver ng NVIDIA GPU na na-install mo sa iyong Proxmox VE 8 server gamit ang command na “nvidia-smi”. Gaya ng nakikita mo, mayroon kaming bersyon 535.146.02 ng NVIDIA GPU driver na naka-install sa aming Proxmox VE 8 server. Kaya, dapat naming i-install ang NVIDIA GPU drivers na bersyon 535.146.02 sa aming LXC container din.

$ nvidia-smi

Una, i-install ang CURL sa LXC container gaya ng sumusunod:

$ angkop na pag-update && apt i-install kulot -at

Dapat na naka-install ang CURL sa LXC container.

Para i-install ang NVIDIA GPU drivers version 535.146.02 (sabihin na natin), i-export ang NVIDIA_VERSION environment variable at patakbuhin ang CURL command (sa container) para i-download ang kinakailangang bersyon ng NVIDIA GPU drivers installer file.

$ i-export NVIDIA_VERSION = '535.146.02'

$ kulot -O 'https://us.download.nvidia.com/XFree86/Linux-x86_64/ ${NVIDIA_VERSION} /NVIDIA-Linux-x86_64- ${NVIDIA_VERSION} .takbo'

Ang tamang bersyon ng NVIDIA GPU drivers installer file ay dapat ma-download sa LXC container gaya ng makikita mo sa sumusunod na screenshot:

Ngayon, magdagdag ng executable na pahintulot sa NVIDIA GPU drivers installer file sa container gaya ng sumusunod:

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

Para i-install ang mga driver ng NVIDIA GPU sa container, patakbuhin ang installer file ng NVIDIA GPU drivers gamit ang “–no-kernel-module” pagpipilian tulad ng sumusunod:

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

Kapag nakita mo ang pagpipiliang ito, piliin ang 'OK' at pindutin .

Piliin ang 'OK' at pindutin .

Piliin ang 'Oo' at pindutin .

Piliin ang 'OK' at pindutin .

Ang mga driver ng NVIDIA GPU ay ini-install sa LXC container. Ito ay tumatagal ng ilang segundo upang makumpleto.

Sa sandaling makita mo ang prompt na ito, piliin ang 'Oo' at pindutin .

Piliin ang 'OK' at pindutin . Ang mga driver ng NVIDIA GPU ay dapat na naka-install sa LXC container.

Para kumpirmahin kung naka-install at gumagana ang mga driver ng NVIDIA GPU, patakbuhin ang command na “nvidia-smi” sa LXC container. Gaya ng nakikita mo, ang bersyon ng driver ng NVIDIA GPU na 535.146.02 (kaparehong bersyon na naka-install sa Proxmox VE 8 server) ay naka-install sa LXC container at natukoy nito nang tama ang aming NVIDIA RTX 4070 GPU.

$ nvidia-smi

Pag-install ng NVIDIA CUDA at cuDNN sa Proxmox VE 8 LXC Container

Gumagamit kami ng Ubuntu 22.04 LTS LXC na lalagyan sa aming Proxmox VE 8 server para sa pagpapakita. Kung gumagamit ka ng isa pang pamamahagi ng Linux sa lalagyan ng LXC, ang iyong mga utos ay bahagyang mag-iiba mula sa amin. Kaya, siguraduhing isaayos ang mga command depende sa Linux distribution na ginagamit mo sa container.

Para i-install ang NVIDIA CUDA at cuDNN sa Ubuntu 22.04 LTS Proxmox VE 8 container, patakbuhin ang sumusunod na command sa container:

$ apt i-install build-essential nvidia-cuda-toolkit nvidia-cudnn

Upang kumpirmahin ang pag-install, pindutin ang 'Y' at pagkatapos ay pindutin .

Ang mga kinakailangang pakete ay dina-download at ini-install. Ito ay tumatagal ng ilang sandali upang makumpleto.

Sa sandaling makita mo ang window na ito, piliin ang 'OK' at pindutin .

Piliin ang 'Sumasang-ayon Ako' at pindutin .

Ang pag-install ay dapat magpatuloy.

Ang installer ay nagda-download ng NVIDIA cuDNN library archive mula sa NVIDIA. Ito ay isang malaking file, kaya ito ay tumatagal ng mahabang oras upang makumpleto.

Kapag na-download na ang NVIDIA cuDNN library archive, dapat magpatuloy ang pag-install gaya ng dati.

Sa puntong ito, dapat na mai-install ang NVIDIA CUDA at cuDNN sa lalagyan ng Ubuntu 22.04 LTS Proxmox VE 8 LXC.

Sinusuri Kung Gumagana ang NVIDIA CUDA Acceleration sa Proxmox VE 8 LXC Container

Para i-verify kung tama ang pagkaka-install ng NVIDIA CUDA, tingnan kung available ang command na “nvcc” sa Proxmox VE 8 container gaya ng sumusunod:

$ nvcc --bersyon

Gaya ng nakikita mo, mayroon kaming NVIDIA CUDA 11.5 na naka-install sa aming Proxmox VE 8 container.

Ngayon, magsulat, mag-compile, at magpatakbo tayo ng simpleng CUDA C program at tingnan kung gumagana ang lahat gaya ng inaasahan.

Una, gumawa ng “~/code” direktoryo ng proyekto sa Proxmox VE 8 container para mapanatiling maayos ang mga file.

$ mkdir ~ / code

Mag-navigate sa '~/code' na direktoryo ng proyekto tulad ng sumusunod:

$ cd `/ code

Gumawa ng bagong file tulad ng “hello.cu” sa “~/code” directory ng Proxmox VE 8 container at buksan ito gamit ang nano text editor:

$ nano hello.cu

I-type ang mga sumusunod na linya ng code sa “hello.cu” file:

#include

__global__ void sayHello ( ) {
printf ( 'Kumusta mundo mula sa GPU! \n ' ) ;
}

int pangunahing ( ) {
printf ( 'Kumusta mundo mula sa CPU! \n ' ) ;

Bumati ka << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;

bumalik 0 ;
}

Kapag tapos ka na, pindutin + X sinundan ng 'Y' at para i-save ang “hello.cu” file.

Para i-compile ang “hello.cu” CUDA program sa Proxmox VE 8 container, patakbuhin ang mga sumusunod na command:

$ nvcc hello.cu -O Kamusta

Ngayon, maaari mong patakbuhin ang programang “hello” CUDA sa Proxmox VE 8 container gaya ng sumusunod:

$ . / Kamusta

Kung magagamit ng Proxmox VE 8 container ang NVIDIA GPU para sa NVIDIA CUDA acceleration, magpi-print ang program ng dalawang linya tulad ng ipinapakita sa sumusunod na screenshot.

Kung ang NVIDIA GPU ay hindi naa-access mula sa Proxmox VE 8 container, ang program ay magpi-print lamang ng unang linya na 'Hello world mula sa CPU!', hindi ang pangalawang linya.

Konklusyon

Sa artikulong ito, ipinakita namin sa iyo kung paano ipasa ang isang NVIDIA GPU mula sa Proxmox VE 8 host patungo sa isang Proxmox VE 8 LXC container. Ipinakita rin namin sa iyo kung paano i-install ang parehong bersyon ng mga driver ng NVIDIA GPU sa Proxmox VE 8 container bilang host ng Proxmox VE. Sa wakas, ipinakita namin sa iyo kung paano i-install ang NVIDIA CUDA at NVIDIA cuDNN sa isang Ubuntu 22.04 LTS Proxmox VE 8 container at mag-compile at magpatakbo ng isang simpleng NVIDIA CUDA program sa Proxmox VE 8 container.

Mga sanggunian: