CUDA/AI Hızlandırma ve Medya Kod Dönüştürme için NVIDIA GPU'yu Proxmox VE 8 Konteynerlerine Aktarma

Cuda Ai Hizlandirma Ve Medya Kod Donusturme Icin Nvidia Gpu Yu Proxmox Ve 8 Konteynerlerine Aktarma



Proxmox VE sunucunuzda kurulu bir NVIDIA GPU'nuz varsa bunu bir Proxmox VE LXC konteynerine aktarabilir ve CUDA/AI hızlandırması için konteynerde kullanabilirsiniz (ör. TensorFlow, PyTorch). NVIDIA GPU'yu, yüklü Plex Media Server veya NextCloud (örneğin) ile bir Proxmox VE LXC kapsayıcısında medya kod dönüştürme, video akışı vb. için de kullanabilirsiniz.

Bu makalede, CUDA/AI hızlandırma, medya kod dönüştürme veya NVIDIA GPU gerektiren diğer görevler için kullanabilmeniz için bir NVIDIA GPU'yu Proxmox VE 8 LXC konteynerine nasıl aktaracağınızı göstereceğiz.







İçeriğin Konusu:

NVIDIA GPU Sürücülerini Proxmox VE 8'e Yükleme

Bir NVIDIA GPU'yu Proxmox VE LXC konteynerine geçirmek için Proxmox VE 8 sunucunuzda NVIDIA GPU sürücülerinin kurulu olması gerekir. Resmi NVIDIA GPU sürücülerinin en son sürümünü Proxmox VE 8 sunucunuza yükleme konusunda yardıma ihtiyacınız olursa, bu makaleyi oku .



NVIDIA GPU Çekirdek Modüllerinin Proxmox VE 8'e Otomatik Olarak Yüklendiğinden Emin Olma

Proxmox VE 8 sunucunuza NVIDIA GPU sürücülerini yükledikten sonra, NVIDIA GPU çekirdek modüllerinin önyükleme sırasında otomatik olarak yüklendiğinden emin olmalısınız.



Öncelikle '/etc/modules-load.d/' dizininde 'nvidia.conf' gibi yeni bir dosya oluşturun ve onu nano metin düzenleyiciyle açın.





$ nano / vesaire / modül yükü.d / nvidia.conf

Aşağıdaki satırları ekleyin ve tuşuna basın + X ardından “Y” ve 'nvidia.conf' dosyasını kaydetmek için:



nvidia

nvidia_uvm

Değişikliklerin etkili olması için “initramfs” dosyasını aşağıdaki komutla güncelleyin:

$ güncelleme-initramfs -içinde

Bazı nedenlerden dolayı Proxmox VE 8, gerekli NVIDIA GPU cihaz dosyalarını '/dev/' dizininde oluşturmaz. Bu cihaz dosyaları olmadan Promox VE 8 LXC konteynerleri NVIDIA GPU'yu kullanamayacaktır.

Proxmox VE 8'in önyükleme sırasında '/dev/' dizininde NVIDIA GPU cihaz dosyalarını oluşturduğundan emin olmak için '/etc/udev/rules.d/' içinde '70-nvidia.rules' adlı bir udev kuralları dosyası oluşturun. dizini seçin ve nano metin düzenleyiciyle aşağıdaki gibi açın:

$ nano / vesaire / udev / kurallar.d / 70 -nvidia.rules

“70-nvidia.rules” dosyasına aşağıdaki satırları yazın ve tuşuna basın + X ardından “Y” ve dosyayı kaydetmek için:

# /dev/* dizininde gerekli NVIDIA aygıt dosyalarını oluşturun

ÇEKİRDEK == 'Nvidia' , ÇALIŞTIR+= '/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 0666 /dev/nvidia*''

ÇEKİRDEK == 'nvidia_uvm' , ÇALIŞTIR+= '/bin/bash -c '/usr/bin/nvidia-modtest -c0 -u && /bin/chmod 0666 /dev/nvidia-uvm*''

Değişikliklerin etkili olması için Proxmox VE 8 sunucunuzu aşağıdaki şekilde yeniden başlatın:

$ yeniden başlat

Proxmox VE 8 sunucunuz önyüklendiğinde, aşağıdaki ekran görüntüsünde görebileceğiniz gibi NVIDIA çekirdek modülleri otomatik olarak yüklenmelidir:

$ lsmod | kavramak nvidia

Gerekli NVIDIA cihaz dosyalarının Proxmox VE 8 sunucunuzun '/dev' dizinine de doldurulması gerekir. NVIDIA aygıt dosyalarının CGrup kimliklerini not edin. Proxmox VE 8 sunucunuzdan NVIDIA GPU'ları geçirmek istediğiniz LXC kapsayıcısında bu CGroup kimliklerine izin vermelisiniz. Bizim durumumuzda CGrup ID'leri 195, 237 ve 226'dır.

$ ls -h / geliştirici / nvidia *

$ ls -h / geliştirici / kuru

NVIDIA GPU Geçişi için Proxmox VE 8 LXC Kapsayıcı Oluşturma

NVIDIA CUDA ve NVIDIA cuDNN kitaplıklarının Ubuntu paket depolarından Ubuntu 22.04 LTS'ye kurulumu kolay olduğundan ve NVIDIA CUDA hızlandırmasının çalışıp çalışmadığını test etmek daha kolay olduğundan, bu makalede gösteri için bir Ubuntu 22.04 LTS Proxmox VE 8 LXC kapsayıcısı kullandık. . İsterseniz diğer Linux dağıtımlarını da kullanabilirsiniz. Bu durumda NVIDIA CUDA ve NVIDIA cuDNN kurulum komutları farklılık gösterecektir. İstediğiniz Linux dağıtımı için NVIDIA CUDA ve NVIDIA cuDNN kurulum talimatlarını takip ettiğinizden emin olun.

Proxmox VE 8 LXC konteyneri oluşturma konusunda yardıma ihtiyacınız olursa bu makaleyi oku .

Promox VE 8'de NVIDIA GPU Geçişi için LXC Kapsayıcısını Yapılandırma

NVIDIA GPU geçişi için bir LXC kapsayıcısını (örneğin kapsayıcı 102) yapılandırmak için, Proxmox VE kabuğundan LXC kapsayıcı yapılandırma dosyasını nano metin düzenleyiciyle aşağıdaki gibi açın:

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

LXC konteyner yapılandırma dosyasının sonuna aşağıdaki satırları yazın:

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

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

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

lxc.mount.entry: / geliştirici / nvidia0          dev / nvidia0          yok bağlamak ,isteğe bağlı, yaratmak = dosya

lxc.mount.entry: / geliştirici / nvidiactl        dev / nvidiactl        yok bağlamak ,isteğe bağlı, yaratmak = dosya

lxc.mount.entry: / geliştirici / nvidia-modeset   dev / nvidia-modeset   yok bağlamak ,isteğe bağlı, yaratmak = dosya

lxc.mount.entry: / geliştirici / nvidia-uvm       dev / nvidia-uvm       yok bağlamak ,isteğe bağlı, yaratmak = dosya

lxc.mount.entry: / geliştirici / nvidia-uvm-tools geliştirici / nvidia-uvm-tools hiçbiri bağlamak ,isteğe bağlı, yaratmak = dosya

lxc.mount.entry: / geliştirici / dri              dev / dri              hiçbiri bağlamak ,isteğe bağlı, yaratmak = Sen

LXC kapsayıcı yapılandırma dosyasının 'lxc.cgroup.devices.allow' satırlarındaki CGrup kimliklerini değiştirdiğinizden emin olun. İşiniz bittiğinde tuşuna basın + X ardından 'Y' ve LXC konteyner yapılandırma dosyasını kaydetmek için.

Şimdi LXC konteynerini Proxmox VE 8 kontrol panelinden başlatın.

NVIDIA GPU geçişi başarılı olursa LXC kapsayıcısı hatasız başlamalı ve kapsayıcının '/dev' dizininde NVIDIA cihaz dosyalarını görmelisiniz.

$ ls -h / geliştirici / nvidia *

$ ls -h / geliştirici / kuru

NVIDIA GPU Sürücülerini Proxmox VE 8 LXC Kabına Yükleme

Gösterim amacıyla Proxmox VE 8 sunucumuzda Ubuntu 22.04 LTS LXC konteyneri kullanıyoruz. LXC kapsayıcısında başka bir Linux dağıtımı kullanıyorsanız komutlarınız bizimkinden biraz farklı olacaktır. Bu nedenle, kapta kullandığınız Linux dağıtımına bağlı olarak komutları ayarladığınızdan emin olun.

Proxmox VE 8 sunucunuza yüklediğiniz NVIDIA GPU sürücülerinin sürümünü “nvidia-smi” komutuyla bulabilirsiniz. Gördüğünüz gibi Proxmox VE 8 sunucumuzda NVIDIA GPU sürücülerinin 535.146.02 sürümü yüklü. Bu nedenle, NVIDIA GPU sürücülerinin 535.146.02 sürümünü LXC konteynerimize de yüklememiz gerekiyor.

$ nvidia-smi

İlk olarak, LXC konteynerine CURL'yi aşağıdaki gibi kurun:

$ uygun güncelleme && uygun düzenlemek kıvırmak -Ve

CURL, LXC konteynerine kurulmalıdır.

NVIDIA GPU sürücülerinin 535.146.02 sürümünü (diyelim ki) yüklemek için, NVIDIA_VERSION ortam değişkenini dışa aktarın ve NVIDIA GPU sürücüleri yükleyici dosyasının gerekli sürümünü indirmek için CURL komutunu (kapsayıcıda) çalıştırın.

$ ihracat NVIDIA_VERSION = '535.146.02'

$ kıvırmak 'https://us.download.nvidia.com/XFree86/Linux-x86_64/ ${NVIDIA_VERSION} /NVIDIA-Linux-x86_64- ${NVIDIA_VERSION} .koşmak'

Aşağıdaki ekran görüntüsünde görebileceğiniz gibi, NVIDIA GPU sürücüleri yükleyici dosyasının doğru sürümü LXC kapsayıcısına indirilmelidir:

Şimdi, kapsayıcıdaki NVIDIA GPU sürücüleri yükleyici dosyasına aşağıdaki gibi yürütülebilir bir izin ekleyin:

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

NVIDIA GPU sürücülerini konteynere yüklemek için, NVIDIA GPU sürücüleri yükleyici dosyasını “–no-kernel-module” ile çalıştırın seçeneği şu şekilde:

$ . / NVIDIA-Linux-x86_64-535.146.02.run --çekirdek modülü yok

Bu seçeneği gördüğünüzde “Tamam”ı seçin ve tuşuna basın. .

“Tamam”ı seçin ve tuşuna basın .

“Evet”i seçin ve tuşuna basın .

“Tamam”ı seçin ve tuşuna basın .

NVIDIA GPU sürücüleri LXC konteynerine kuruluyor. Tamamlanması birkaç saniye sürer.

Bu istemi gördüğünüzde “Evet”i seçin ve tuşuna basın. .

“Tamam”ı seçin ve tuşuna basın . NVIDIA GPU sürücüleri LXC konteynerine kurulmalıdır.

NVIDIA GPU sürücülerinin yüklü ve çalışır durumda olup olmadığını doğrulamak için LXC kapsayıcısında 'nvidia-smi' komutunu çalıştırın. Gördüğünüz gibi, NVIDIA GPU sürücüsü sürümü 535.146.02 (Proxmox VE 8 sunucusunda yüklü olanla aynı sürüm) LXC kapsayıcısına kuruludur ve NVIDIA RTX 4070 GPU'muzu doğru şekilde algılamıştır.

$ nvidia-smi

NVIDIA CUDA ve cuDNN'yi Proxmox VE 8 LXC Kabına Yükleme

Gösterim amacıyla Proxmox VE 8 sunucumuzda Ubuntu 22.04 LTS LXC konteyneri kullanıyoruz. LXC kapsayıcısında başka bir Linux dağıtımı kullanıyorsanız komutlarınız bizimkinden biraz farklı olacaktır. Bu nedenle, kapta kullandığınız Linux dağıtımına bağlı olarak komutları ayarladığınızdan emin olun.

Ubuntu 22.04 LTS Proxmox VE 8 konteynerine NVIDIA CUDA ve cuDNN yüklemek için konteynerde aşağıdaki komutu çalıştırın:

$ uygun düzenlemek build-essential nvidia-cuda-araç seti nvidia-cudnn

Kurulumu onaylamak için “Y” tuşuna basın ve ardından tuşuna basın. .

Gerekli paketler indirilip kuruluyor. Tamamlanması biraz zaman alır.

Bu pencereyi gördüğünüzde “Tamam”ı seçin ve tuşuna basın. .

“Kabul Ediyorum”u seçin ve tuşuna basın .

Kurulum devam etmelidir.

Yükleyici, NVIDIA cuDNN kütüphane arşivini NVIDIA'dan indiriyor. Büyük bir dosya olduğundan tamamlanması uzun zaman alıyor.

NVIDIA cuDNN kütüphane arşivi indirildikten sonra kurulum her zamanki gibi devam etmelidir.

Bu noktada Ubuntu 22.04 LTS Proxmox VE 8 LXC konteynerine NVIDIA CUDA ve cuDNN kurulmalıdır.

NVIDIA CUDA Hızlandırmasının Proxmox VE 8 LXC Kabında Çalışıp Çalışmadığını Kontrol Etme

NVIDIA CUDA'nın doğru şekilde kurulup kurulmadığını doğrulamak için Proxmox VE 8 kapsayıcısında 'nvcc' komutunun mevcut olup olmadığını aşağıdaki şekilde kontrol edin:

$ nvcc --versiyon

Gördüğünüz gibi Proxmox VE 8 konteynerimizde NVIDIA CUDA 11.5 kurulu.

Şimdi basit bir CUDA C programı yazalım, derleyelim, çalıştıralım ve her şeyin beklendiği gibi çalışıp çalışmadığını görelim.

Öncelikle dosyaları düzenli tutmak için Proxmox VE 8 kapsayıcısında bir '~/code' proje dizini oluşturun.

$ mkdir ~ / kod

“~/code” proje dizinine aşağıdaki gibi gidin:

$ CD `/ kod

Proxmox VE 8 kapsayıcısının '~/code' dizininde 'hello.cu' gibi yeni bir dosya oluşturun ve bunu nano metin düzenleyiciyle açın:

$ nano merhaba.cu

'Hello.cu' dosyasına aşağıdaki kod satırlarını yazın:

#include

__global__ geçersiz sayMerhaba ( ) {
baskı ( 'GPU'dan merhaba dünya! \N ' ) ;
}

int ana ( ) {
baskı ( 'CPU'dan merhaba dünya! \N ' ) ;

Merhaba de << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;

geri dönmek 0 ;
}

İşiniz bittiğinde tuşuna basın + X ardından “Y” Ve 'hello.cu' dosyasını kaydetmek için.

'Hello.cu' CUDA programını Proxmox VE 8 kapsayıcısında derlemek için aşağıdaki komutları çalıştırın:

$ nvcc merhaba.cu Merhaba

Artık Proxmox VE 8 kapsayıcısında 'merhaba' CUDA programını şu şekilde çalıştırabilirsiniz:

$ . / Merhaba

Proxmox VE 8 konteyneri NVIDIA CUDA hızlandırması için NVIDIA GPU'yu kullanabiliyorsa program aşağıdaki ekran görüntüsünde gösterildiği gibi iki satır yazdıracaktır.

NVIDIA GPU'ya Proxmox VE 8 konteynerinden erişilemiyorsa program ikinci satırı değil yalnızca 'CPU'dan merhaba dünya!' olan ilk satırı yazdıracaktır.

Çözüm

Bu makalede, bir NVIDIA GPU'yu Proxmox VE 8 ana bilgisayarından Proxmox VE 8 LXC konteynerine nasıl geçireceğinizi gösterdik. Ayrıca NVIDIA GPU sürücülerinin aynı sürümünü Proxmox VE 8 konteynerine Proxmox VE ana bilgisayarıyla nasıl kuracağınızı da gösterdik. Son olarak Ubuntu 22.04 LTS Proxmox VE 8 konteynerine NVIDIA CUDA ve NVIDIA cuDNN kurulumunun nasıl yapılacağını ve Proxmox VE 8 konteyneri üzerinde basit bir NVIDIA CUDA programının nasıl derlenip çalıştırılacağını gösterdik.

Referanslar: