Cara Melewati GPU NVIDIA ke Kontainer Proxmox VE 8 untuk Akselerasi CUDA/AI dan Transcoding Media

Cara Melewati Gpu Nvidia Ke Kontainer Proxmox Ve 8 Untuk Akselerasi Cuda Ai Dan Transcoding Media



Jika Anda memiliki GPU NVIDIA yang terinstal di server Proxmox VE, Anda dapat meneruskannya ke container Proxmox VE LXC dan menggunakannya dalam container untuk akselerasi CUDA/AI (yaitu TensorFlow, PyTorch). Anda juga dapat menggunakan GPU NVIDIA untuk transcoding media, streaming video, dll. dalam wadah Proxmox VE LXC dengan Plex Media Server atau NextCloud yang terinstal (misalnya).

Pada artikel ini, kami akan menunjukkan kepada Anda cara meneruskan GPU NVIDIA ke wadah Proxmox VE 8 LXC sehingga Anda dapat menggunakannya untuk akselerasi CUDA/AI, transcoding media, atau tugas lain yang memerlukan GPU NVIDIA.







Topik Isi:

Menginstal Driver GPU NVIDIA di Proxmox VE 8

Untuk meneruskan GPU NVIDIA ke wadah Proxmox VE LXC, Anda harus menginstal driver GPU NVIDIA di server Proxmox VE 8 Anda. Jika Anda memerlukan bantuan dalam menginstal versi terbaru driver GPU NVIDIA resmi di server Proxmox VE 8 Anda, membaca artikel ini .



Memastikan Modul Kernel GPU NVIDIA Dimuat di Proxmox VE 8 Secara Otomatis

Setelah Anda menginstal driver GPU NVIDIA di server Proxmox VE 8, Anda harus memastikan bahwa modul kernel GPU NVIDIA dimuat secara otomatis saat boot.



Pertama, buat file baru seperti “nvidia.conf” di direktori “/etc/modules-load.d/” dan buka dengan editor teks nano.





$ nano / dll. / modul-beban.d / nvidia.conf

Tambahkan baris berikut dan tekan + X diikuti oleh “Y” dan untuk menyimpan file “nvidia.conf”:



nvidia

nvidia_uvm

Agar perubahan diterapkan, perbarui file “initramfs” dengan perintah berikut:

$ pembaruan-initramfs -di dalam

Karena alasan tertentu, Proxmox VE 8 tidak membuat file perangkat GPU NVIDIA yang diperlukan di direktori “/dev/”. Tanpa file perangkat tersebut, container Promox VE 8 LXC tidak akan dapat menggunakan GPU NVIDIA.

Untuk memastikan Proxmox VE 8 membuat file perangkat GPU NVIDIA di direktori “/dev/” pada saat boot, buat file aturan udev “70-nvidia.rules” di “/etc/udev/rules.d/” direktori dan buka dengan editor teks nano sebagai berikut:

$ nano / dll. / udev / aturan.d / 70 -nvidia.aturan

Ketik baris berikut di file “70-nvidia.rules” dan tekan + X diikuti oleh “Y” dan untuk menyimpan file:

# buat file perangkat NVIDIA yang diperlukan di /dev/*

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

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

Agar perubahan diterapkan, reboot server Proxmox VE 8 Anda sebagai berikut:

$ menyalakan ulang

Setelah server Proxmox VE 8 Anda melakukan booting, modul kernel NVIDIA akan dimuat secara otomatis seperti yang Anda lihat pada tangkapan layar berikut:

$ lsmod | pegangan nvidia

File perangkat NVIDIA yang diperlukan juga harus diisi di direktori “/dev” server Proxmox VE 8 Anda. Catat ID CGroup dari file perangkat NVIDIA. Anda harus mengizinkan ID CGroup tersebut pada kontainer LXC tempat Anda ingin melewati GPU NVIDIA dari server Proxmox VE 8 Anda. Dalam kasus kami, ID CGroup adalah 195, 237, dan 226.

$ aku -lh / dev / nvidia *

$ aku -lh / dev / dri

Membuat Kontainer Proxmox VE 8 LXC untuk NVIDIA GPU Passthrough

Kami menggunakan wadah Ubuntu 22.04 LTS Proxmox VE 8 LXC dalam artikel ini untuk demonstrasi karena pustaka NVIDIA CUDA dan NVIDIA cuDNN mudah dipasang di Ubuntu 22.04 LTS dari repositori paket Ubuntu dan lebih mudah untuk menguji apakah akselerasi NVIDIA CUDA berfungsi . Jika mau, Anda juga bisa menggunakan distro Linux lainnya. Dalam hal ini, perintah instalasi NVIDIA CUDA dan NVIDIA cuDNN akan berbeda-beda. Pastikan untuk mengikuti petunjuk instalasi NVIDIA CUDA dan NVIDIA cuDNN untuk distribusi Linux yang Anda inginkan.

Jika Anda memerlukan bantuan dalam membuat wadah Proxmox VE 8 LXC, membaca artikel ini .

Mengonfigurasi Kontainer LXC untuk NVIDIA GPU Passthrough di Promox VE 8

Untuk mengonfigurasi container LXC (misalnya container 102) untuk passthrough GPU NVIDIA, buka file konfigurasi container LXC dari shell Proxmox VE dengan editor teks nano sebagai berikut:

$ nano / dll. / hal / lxc / 102 .conf

Ketik baris berikut di akhir file konfigurasi kontainer LXC:

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

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

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

lxc.mount.entri: / dev / nvidia0          pengembangan / nvidia0          tidak ada mengikat ,opsional, membuat = mengajukan

lxc.mount.entri: / dev / nvidiactl        pengembangan / nvidiactl        tidak ada mengikat ,opsional, membuat = mengajukan

lxc.mount.entri: / dev / nvidia-modeset   dev / nvidia-modeset   tidak ada mengikat ,opsional, membuat = mengajukan

lxc.mount.entri: / dev / nvidia-uvm       pengembangan / nvidia-uvm       tidak ada mengikat ,opsional, membuat = mengajukan

lxc.mount.entri: / dev / pengembang nvidia-uvm-tools / nvidia-uvm-alat tidak ada mengikat ,opsional, membuat = mengajukan

lxc.mount.entri: / dev / dri              dev / tidak ada mengikat ,opsional, membuat = Anda

Pastikan untuk mengganti ID CGroup di baris “lxc.cgroup.devices.allow” pada file konfigurasi container LXC. Setelah selesai, tekan + X diikuti dengan “Y” dan untuk menyimpan file konfigurasi kontainer LXC.

Sekarang, mulai container LXC dari dashboard Proxmox VE 8.

Jika passthrough GPU NVIDIA berhasil, container LXC akan dimulai tanpa error apa pun dan Anda akan melihat file perangkat NVIDIA di direktori “/dev” pada container.

$ aku -lh / dev / nvidia *

$ aku -lh / dev / dri

Menginstal Driver GPU NVIDIA pada Kontainer Proxmox VE 8 LXC

Kami menggunakan wadah Ubuntu 22.04 LTS LXC di server Proxmox VE 8 kami untuk demonstrasi. Jika Anda menggunakan distribusi Linux lain pada wadah LXC, perintah Anda akan sedikit berbeda dari perintah kami. Jadi, pastikan untuk menyesuaikan perintah tergantung pada distribusi Linux yang Anda gunakan pada container.

Anda dapat menemukan versi driver GPU NVIDIA yang Anda instal di server Proxmox VE 8 dengan perintah “nvidia-smi”. Seperti yang Anda lihat, kami telah menginstal driver GPU NVIDIA versi 535.146.02 di server Proxmox VE 8 kami. Jadi, kita juga harus menginstal driver GPU NVIDIA versi 535.146.02 di container LXC kita.

$ nvidia-smi

Pertama, instal CURL pada container LXC sebagai berikut:

$ pembaruan yang tepat && tepat Install keriting -Dan

CURL harus diinstal pada wadah LXC.

Untuk menginstal driver GPU NVIDIA versi 535.146.02 (katakanlah), ekspor variabel lingkungan NVIDIA_VERSION dan jalankan perintah CURL (pada container) untuk mendownload versi file penginstal driver GPU NVIDIA yang diperlukan.

$ ekspor NVIDIA_VERSION = '535.146.02'

$ keriting -HAI 'https://us.download.nvidia.com/XFree86/Linux-x86_64/ ${NVIDIA_VERSION} /NVIDIA-Linux-x86_64- ${NVIDIA_VERSION} .berlari'

Versi file penginstal driver GPU NVIDIA yang benar harus diunduh pada wadah LXC seperti yang Anda lihat pada tangkapan layar berikut:

Sekarang, tambahkan izin yang dapat dieksekusi ke file penginstal driver GPU NVIDIA pada kontainer sebagai berikut:

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

Untuk menginstal driver GPU NVIDIA pada container, jalankan file penginstal driver GPU NVIDIA dengan “–no-kernel-module” pilihan sebagai berikut:

$ . / NVIDIA-Linux-x86_64-535.146.02.jalankan --tidak ada-kernel-modul

Setelah Anda melihat opsi ini, pilih 'OK' dan tekan .

Pilih 'OK' dan tekan .

Pilih 'Ya' dan tekan .

Pilih 'OK' dan tekan .

Driver GPU NVIDIA sedang diinstal pada wadah LXC. Diperlukan beberapa detik untuk menyelesaikannya.

Setelah Anda melihat perintah ini, pilih 'Ya' dan tekan .

Pilih 'OK' dan tekan . Driver GPU NVIDIA harus diinstal pada wadah LXC.

Untuk mengonfirmasi apakah driver GPU NVIDIA telah diinstal dan berfungsi, jalankan perintah “nvidia-smi” pada container LXC. Seperti yang Anda lihat, driver GPU NVIDIA versi 535.146.02 (versi yang sama seperti yang diinstal pada server Proxmox VE 8) diinstal pada container LXC dan mendeteksi GPU NVIDIA RTX 4070 kami dengan benar.

$ nvidia-smi

Menginstal NVIDIA CUDA dan cuDNN pada Kontainer Proxmox VE 8 LXC

Kami menggunakan wadah Ubuntu 22.04 LTS LXC di server Proxmox VE 8 kami untuk demonstrasi. Jika Anda menggunakan distribusi Linux lain pada wadah LXC, perintah Anda akan sedikit berbeda dari perintah kami. Jadi, pastikan untuk menyesuaikan perintah tergantung pada distribusi Linux yang Anda gunakan pada container.

Untuk menginstal NVIDIA CUDA dan cuDNN pada container Ubuntu 22.04 LTS Proxmox VE 8, jalankan perintah berikut pada container:

$ tepat Install build-esensial nvidia-cuda-toolkit nvidia-cudnn

Untuk mengonfirmasi instalasi, tekan 'Y' lalu tekan .

Paket yang diperlukan sedang diunduh dan diinstal. Butuh beberapa saat untuk menyelesaikannya.

Setelah Anda melihat jendela ini, pilih 'OK' dan tekan .

Pilih “Saya Setuju” dan tekan .

Instalasi harus dilanjutkan.

Penginstal sedang mengunduh arsip perpustakaan NVIDIA cuDNN dari NVIDIA. Ini file besar, jadi butuh waktu lama untuk menyelesaikannya.

Setelah arsip perpustakaan NVIDIA cuDNN diunduh, instalasi akan dilanjutkan seperti biasa.

Pada titik ini, NVIDIA CUDA dan cuDNN harus diinstal pada container Ubuntu 22.04 LTS Proxmox VE 8 LXC.

Memeriksa Apakah Akselerasi NVIDIA CUDA Berfungsi pada Kontainer Proxmox VE 8 LXC

Untuk memverifikasi apakah NVIDIA CUDA diinstal dengan benar, periksa apakah perintah “nvcc” tersedia di container Proxmox VE 8 sebagai berikut:

$ nvcc --Versi: kapan

Seperti yang Anda lihat, kami telah menginstal NVIDIA CUDA 11.5 di container Proxmox VE 8 kami.

Sekarang, mari kita menulis, mengkompilasi, dan menjalankan program CUDA C sederhana dan melihat apakah semuanya berjalan sesuai harapan.

Pertama, buat direktori proyek “~/code” di container Proxmox VE 8 untuk menjaga file tetap teratur.

$ mkdir ~ / kode

Arahkan ke direktori proyek “~/code” sebagai berikut:

$ CD `/ kode

Buat file baru seperti “hello.cu” di direktori “~/code” pada container Proxmox VE 8 dan buka dengan editor teks nano:

$ nano halo.cu

Ketik baris kode berikut di file “hello.cu”:

#termasuk

__global__ batal ucapkan Halo ( ) {
printf ( 'Halo dunia dari GPU! \N ' ) ;
}

ke utama ( ) {
printf ( 'Halo dunia dari CPU! \N ' ) ;

katakan halo << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;

kembali 0 ;
}

Setelah selesai, tekan + X diikuti oleh “Y” Dan untuk menyimpan file “hello.cu”.

Untuk mengkompilasi program CUDA “hello.cu” pada container Proxmox VE 8, jalankan perintah berikut:

$ nvcc halo.cu -HAI Halo

Sekarang, Anda dapat menjalankan program CUDA “hello” pada container Proxmox VE 8 sebagai berikut:

$ . / Halo

Jika container Proxmox VE 8 dapat menggunakan GPU NVIDIA untuk akselerasi NVIDIA CUDA, program akan mencetak dua baris seperti yang ditunjukkan pada gambar layar berikut.

Jika GPU NVIDIA tidak dapat diakses dari wadah Proxmox VE 8, program hanya akan mencetak baris pertama yaitu “Halo dunia dari CPU!”, bukan baris kedua.

Kesimpulan

Pada artikel ini, kami menunjukkan kepada Anda cara meneruskan GPU NVIDIA dari host Proxmox VE 8 ke wadah Proxmox VE 8 LXC. Kami juga menunjukkan kepada Anda cara menginstal versi driver GPU NVIDIA yang sama pada wadah Proxmox VE 8 dengan host Proxmox VE. Terakhir, kami menunjukkan kepada Anda cara menginstal NVIDIA CUDA dan NVIDIA cuDNN pada container Ubuntu 22.04 LTS Proxmox VE 8 dan mengkompilasi serta menjalankan program NVIDIA CUDA sederhana pada container Proxmox VE 8.

Referensi: