วิธีการส่งผ่าน NVIDIA GPU ไปยังคอนเทนเนอร์ Proxmox VE 8 สำหรับการเร่งความเร็ว CUDA/AI และการแปลงรหัสสื่อ

Withi Kar Sng Phan Nvidia Gpu Pi Yang Khxnthennexr Proxmox Ve 8 Sahrab Kar Reng Khwamrew Cuda Ai Laea Kar Paelng Rhas Sux



หากคุณติดตั้ง NVIDIA GPU บนเซิร์ฟเวอร์ Proxmox VE ของคุณ คุณสามารถส่งต่อไปยังคอนเทนเนอร์ Proxmox VE LXC และใช้ในคอนเทนเนอร์เพื่อการเร่งความเร็ว CUDA/AI (เช่น TensorFlow, PyTorch) คุณยังสามารถใช้ NVIDIA GPU สำหรับการแปลงรหัสสื่อ การสตรีมวิดีโอ ฯลฯ ในคอนเทนเนอร์ Proxmox VE LXC ที่มี Plex Media Server หรือ NextCloud ที่ติดตั้งไว้ (ตัวอย่าง)

ในบทความนี้ เราจะแสดงวิธีส่งผ่าน NVIDIA GPU ไปยังคอนเทนเนอร์ Proxmox VE 8 LXC เพื่อให้คุณสามารถใช้สำหรับการเร่งความเร็ว CUDA/AI การแปลงรหัสสื่อ หรืองานอื่นๆ ที่ต้องใช้ NVIDIA GPU







หัวข้อเนื้อหา:

การติดตั้งไดรเวอร์ NVIDIA GPU บน Proxmox VE 8

หากต้องการส่งผ่าน NVIDIA GPU ไปยังคอนเทนเนอร์ Proxmox VE LXC คุณต้องติดตั้งไดรเวอร์ NVIDIA GPU บนเซิร์ฟเวอร์ Proxmox VE 8 ของคุณ หากคุณต้องการความช่วยเหลือในการติดตั้งไดรเวอร์ NVIDIA GPU อย่างเป็นทางการเวอร์ชันล่าสุดบนเซิร์ฟเวอร์ Proxmox VE 8 ของคุณ อ่านบทความนี้ -



ตรวจสอบให้แน่ใจว่าโมดูลเคอร์เนล NVIDIA GPU ถูกโหลดใน Proxmox VE 8 โดยอัตโนมัติ

เมื่อคุณติดตั้งไดรเวอร์ NVIDIA GPU บนเซิร์ฟเวอร์ Proxmox VE 8 แล้ว คุณต้องตรวจสอบให้แน่ใจว่าโมดูลเคอร์เนล NVIDIA GPU ถูกโหลดโดยอัตโนมัติในเวลาบูต



ขั้นแรก สร้างไฟล์ใหม่ เช่น 'nvidia.conf' ในไดเรกทอรี '/etc/modules-load.d/' แล้วเปิดด้วยโปรแกรมแก้ไขข้อความ nano





- นาโน - ฯลฯ - โมดูล-load.d - nvidia.conf

เพิ่มบรรทัดต่อไปนี้แล้วกด - เอ็กซ์ ตามด้วย “Y” และ <ป้อน> หากต้องการบันทึกไฟล์ 'nvidia.conf' ให้ทำดังนี้



NVIDIA

nvidia_uvm

เพื่อให้การเปลี่ยนแปลงมีผล ให้อัพเดตไฟล์ “initramfs” ด้วยคำสั่งต่อไปนี้:

- อัปเดต-initramfs -ใน

ด้วยเหตุผลบางประการ Proxmox VE 8 จะไม่สร้างไฟล์อุปกรณ์ NVIDIA GPU ที่จำเป็นในไดเรกทอรี “/dev/” หากไม่มีไฟล์อุปกรณ์เหล่านั้น คอนเทนเนอร์ Promox VE 8 LXC จะไม่สามารถใช้ NVIDIA GPU ได้

เพื่อให้แน่ใจว่า Proxmox VE 8 สร้างไฟล์อุปกรณ์ NVIDIA GPU ในไดเรกทอรี “/dev/” ในขณะบูต ให้สร้างไฟล์กฎ udev “70-nvidia.rules” ใน “/etc/udev/rules.d/” ไดเร็กทอรีและเปิดด้วยโปรแกรมแก้ไขข้อความนาโนดังนี้:

- นาโน - ฯลฯ - อูเดฟ - กฎ.d - 70 -nvidia.rules

พิมพ์บรรทัดต่อไปนี้ในไฟล์ “70-nvidia.rules” แล้วกด - เอ็กซ์ ตามด้วย “Y” และ <ป้อน> เพื่อบันทึกไฟล์:

# สร้างไฟล์อุปกรณ์ NVIDIA ที่จำเป็นใน /dev/*

เคอร์เนล - 'เอ็นวิเดีย' , รัน+= '/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 0666 /dev/nvidia*''

เคอร์เนล - 'nvidia_uvm' , รัน+= '/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 ที่จำเป็นควรรวมอยู่ในไดเรกทอรี “/dev” ของเซิร์ฟเวอร์ Proxmox VE 8 ของคุณด้วย สังเกตรหัสกลุ่ม CG ของไฟล์อุปกรณ์ NVIDIA คุณต้องอนุญาต CGroup ID เหล่านั้นบนคอนเทนเนอร์ LXC ที่คุณต้องการส่งผ่าน NVIDIA GPU จากเซิร์ฟเวอร์ Proxmox VE 8 ของคุณ ในกรณีของเรา รหัสกลุ่ม CG คือ 195, 237 และ 226

- LS -ล - ผู้พัฒนา - NVIDIA -

- LS -ล - ผู้พัฒนา - ดร

การสร้างคอนเทนเนอร์ Proxmox VE 8 LXC สำหรับ NVIDIA GPU Passthrough

เราใช้คอนเทนเนอร์ Ubuntu 22.04 LTS Proxmox VE 8 LXC ในบทความนี้สำหรับการสาธิตเนื่องจากไลบรารี NVIDIA CUDA และ NVIDIA cuDNN นั้นติดตั้งง่ายบน Ubuntu 22.04 LTS จากที่เก็บแพ็คเกจ Ubuntu และง่ายกว่าที่จะทดสอบว่าการเร่งความเร็ว NVIDIA CUDA ทำงานหรือไม่ . หากต้องการ คุณสามารถใช้ลีนุกซ์รุ่นอื่นๆ ได้เช่นกัน ในกรณีดังกล่าว คำสั่งการติดตั้ง NVIDIA CUDA และ NVIDIA cuDNN จะแตกต่างกันไป ตรวจสอบให้แน่ใจว่าได้ปฏิบัติตามคำแนะนำในการติดตั้ง NVIDIA CUDA และ NVIDIA cuDNN สำหรับการแจกจ่าย Linux ที่คุณต้องการ

หากคุณต้องการความช่วยเหลือในการสร้างคอนเทนเนอร์ Proxmox VE 8 LXC อ่านบทความนี้ -

การกำหนดค่าคอนเทนเนอร์ LXC สำหรับ NVIDIA GPU Passthrough บน Promox VE 8

หากต้องการกำหนดค่าคอนเทนเนอร์ LXC (คอนเทนเนอร์ 102 สมมติว่า) สำหรับ NVIDIA GPU passthrough ให้เปิดไฟล์การกำหนดค่าคอนเทนเนอร์ LXC จากเชลล์ Proxmox VE ด้วยโปรแกรมแก้ไขข้อความ nano ดังนี้:

- นาโน - ฯลฯ - พีวีเอ - lxc - 102 .conf

พิมพ์บรรทัดต่อไปนี้ที่ส่วนท้ายของไฟล์การกำหนดค่าคอนเทนเนอร์ LXC:

lxc.cgroup.devices.allow: ค 195 - - รอบ

lxc.cgroup.devices.allow: ค 237 - - รอบ

lxc.cgroup.devices.allow: ค 226 - - รอบ

lxc.mount.รายการ: - ผู้พัฒนา - nvidia0          การพัฒนา - nvidia0          ไม่มี ผูก ,ไม่จำเป็น, สร้าง - ไฟล์

lxc.mount.รายการ: - ผู้พัฒนา - nvidiactl        ผู้พัฒนา - nvidiactl        ไม่มี ผูก ,ไม่จำเป็น, สร้าง - ไฟล์

lxc.mount.รายการ: - ผู้พัฒนา - nvidia-modeset   dev - nvidia-modeset   ไม่มี ผูก ,ไม่จำเป็น, สร้าง - ไฟล์

lxc.mount.รายการ: - ผู้พัฒนา - nvidia-uvm       การพัฒนา - nvidia-uvm       ไม่มี ผูก ,ไม่จำเป็น, สร้าง - ไฟล์

lxc.mount.รายการ: - ผู้พัฒนา - nvidia-uvm-เครื่องมือ dev - nvidia-uvm-tools ไม่มี ผูก ,ไม่จำเป็น, สร้าง - ไฟล์

lxc.mount.รายการ: - ผู้พัฒนา - ไดรฟ์               dev - แห้ง              ไม่มี ผูก ,ไม่จำเป็น, สร้าง - คุณ

อย่าลืมเปลี่ยนรหัส CGroup ในบรรทัด 'lxc.cgroup.devices.allow' ของไฟล์การกำหนดค่าคอนเทนเนอร์ LXC เมื่อเสร็จแล้วให้กด - เอ็กซ์ ตามด้วย “Y” และ <ป้อน> เพื่อบันทึกไฟล์การกำหนดค่าคอนเทนเนอร์ LXC

ตอนนี้ เริ่มต้นคอนเทนเนอร์ LXC จากแดชบอร์ด Proxmox VE 8

หากการส่งผ่าน NVIDIA GPU สำเร็จ คอนเทนเนอร์ LXC ควรเริ่มทำงานโดยไม่มีข้อผิดพลาด และคุณควรเห็นไฟล์อุปกรณ์ NVIDIA ในไดเรกทอรี “/dev” ของคอนเทนเนอร์

- LS -ล - ผู้พัฒนา - NVIDIA -

- LS -ล - ผู้พัฒนา - ดร

การติดตั้งไดรเวอร์ NVIDIA GPU บนคอนเทนเนอร์ Proxmox VE 8 LXC

เรากำลังใช้คอนเทนเนอร์ Ubuntu 22.04 LTS LXC บนเซิร์ฟเวอร์ Proxmox VE 8 ของเราเพื่อการสาธิต หากคุณใช้การกระจาย Linux อื่นบนคอนเทนเนอร์ LXC คำสั่งของคุณจะแตกต่างจากของเราเล็กน้อย ดังนั้นตรวจสอบให้แน่ใจว่าได้ปรับคำสั่งตามการกระจาย Linux ที่คุณใช้บนคอนเทนเนอร์

คุณสามารถค้นหาเวอร์ชันไดรเวอร์ NVIDIA GPU ที่ติดตั้งบนเซิร์ฟเวอร์ Proxmox VE 8 ได้ด้วยคำสั่ง “nvidia-smi” อย่างที่คุณเห็น เรามีไดรเวอร์ NVIDIA GPU เวอร์ชัน 535.146.02 ติดตั้งอยู่บนเซิร์ฟเวอร์ Proxmox VE 8 ของเรา ดังนั้นเราจึงต้องติดตั้งไดรเวอร์ NVIDIA GPU เวอร์ชัน 535.146.02 บนคอนเทนเนอร์ LXC ของเราด้วย

- nvidia-smi

ขั้นแรก ติดตั้ง CURL บนคอนเทนเนอร์ LXC ดังนี้:

- ปรับปรุงฉลาด - ฉลาด ติดตั้ง ขด -และ

ควรติดตั้ง CURL บนคอนเทนเนอร์ LXC

หากต้องการติดตั้งไดรเวอร์ NVIDIA GPU เวอร์ชัน 535.146.02 (สมมุติ) ให้ส่งออกตัวแปรสภาพแวดล้อม NVIDIA_VERSION และเรียกใช้คำสั่ง CURL (บนคอนเทนเนอร์) เพื่อดาวน์โหลดไฟล์ติดตั้งไดรเวอร์ NVIDIA GPU เวอร์ชันที่ต้องการ

- ส่งออก NVIDIA_VERSION - '535.146.02'

$ ขด -โอ 'https://us.download.nvidia.com/XFree86/Linux-x86_64/ ${NVIDIA_VERSION} /NVIDIA-Linux-x86_64- ${NVIDIA_VERSION} .วิ่ง'

ควรดาวน์โหลดไฟล์ตัวติดตั้งไดรเวอร์ NVIDIA GPU เวอร์ชันที่ถูกต้องบนคอนเทนเนอร์ LXC ดังที่คุณเห็นในภาพหน้าจอต่อไปนี้:

ตอนนี้ให้เพิ่มสิทธิ์ปฏิบัติการให้กับไฟล์ตัวติดตั้งไดรเวอร์ NVIDIA GPU บนคอนเทนเนอร์ดังต่อไปนี้:

- โครโมด +x NVIDIA-Linux-x86_64-535.146.02.run

หากต้องการติดตั้งไดรเวอร์ NVIDIA GPU บนคอนเทนเนอร์ ให้เรียกใช้ไฟล์ตัวติดตั้งไดรเวอร์ NVIDIA GPU ด้วย “–no-kernel-module” ตัวเลือกดังต่อไปนี้:

- - - NVIDIA-Linux-x86_64-535.146.02.run --ไม่มีเคอร์เนลโมดูล

เมื่อคุณเห็นตัวเลือกนี้ ให้เลือก 'ตกลง' แล้วกด <ป้อน> -

เลือก “ตกลง” แล้วกด <ป้อน> -

เลือก “ใช่” แล้วกด <ป้อน> -

เลือก “ตกลง” แล้วกด <ป้อน> -

กำลังติดตั้งไดรเวอร์ NVIDIA GPU บนคอนเทนเนอร์ LXC ใช้เวลาไม่กี่วินาทีในการดำเนินการให้เสร็จสิ้น

เมื่อคุณเห็นข้อความแจ้งนี้ ให้เลือก 'ใช่' แล้วกด <ป้อน> -

เลือก “ตกลง” แล้วกด <ป้อน> - ควรติดตั้งไดรเวอร์ NVIDIA GPU บนคอนเทนเนอร์ LXC

เพื่อยืนยันว่าไดรเวอร์ NVIDIA GPU ได้รับการติดตั้งและใช้งานได้หรือไม่ ให้เรียกใช้คำสั่ง 'nvidia-smi' บนคอนเทนเนอร์ LXC อย่างที่คุณเห็น มีการติดตั้งไดรเวอร์ NVIDIA GPU เวอร์ชัน 535.146.02 (เวอร์ชันเดียวกับที่ติดตั้งบนเซิร์ฟเวอร์ Proxmox VE 8) บนคอนเทนเนอร์ LXC และตรวจพบ NVIDIA RTX 4070 GPU ของเราอย่างถูกต้อง

- nvidia-smi

การติดตั้ง NVIDIA CUDA และ cuDNN บนคอนเทนเนอร์ Proxmox VE 8 LXC

เรากำลังใช้คอนเทนเนอร์ Ubuntu 22.04 LTS LXC บนเซิร์ฟเวอร์ Proxmox VE 8 ของเราเพื่อการสาธิต หากคุณใช้การกระจาย Linux อื่นบนคอนเทนเนอร์ LXC คำสั่งของคุณจะแตกต่างจากของเราเล็กน้อย ดังนั้นตรวจสอบให้แน่ใจว่าได้ปรับคำสั่งตามการกระจาย Linux ที่คุณใช้บนคอนเทนเนอร์

หากต้องการติดตั้ง NVIDIA CUDA และ cuDNN บนคอนเทนเนอร์ Ubuntu 22.04 LTS Proxmox VE 8 ให้รันคำสั่งต่อไปนี้บนคอนเทนเนอร์:

- ฉลาด ติดตั้ง build-essential nvidia-cuda-toolkit nvidia-cudnn

เพื่อยืนยันการติดตั้ง ให้กด “Y” จากนั้นกด <ป้อน> -

กำลังดาวน์โหลดและติดตั้งแพ็คเกจที่จำเป็น ใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์

เมื่อคุณเห็นหน้าต่างนี้ ให้เลือก 'ตกลง' แล้วกด <ป้อน> -

เลือก “ฉันยอมรับ” แล้วกด <ป้อน> -

การติดตั้งควรดำเนินการต่อ

โปรแกรมติดตั้งกำลังดาวน์โหลดไฟล์เก็บถาวรไลบรารี NVIDIA cuDNN จาก NVIDIA มันเป็นไฟล์ขนาดใหญ่จึงใช้เวลานานจึงจะเสร็จสมบูรณ์

เมื่อดาวน์โหลดไฟล์เก็บถาวรไลบรารี 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 หรือไม่ ดังนี้

- เอ็นวีซีซี --รุ่น

อย่างที่คุณเห็น เราได้ติดตั้ง NVIDIA CUDA 11.5 บนคอนเทนเนอร์ Proxmox VE 8 ของเราแล้ว

ตอนนี้ มาเขียน คอมไพล์ และรันโปรแกรม CUDA C ง่ายๆ แล้วดูว่าทุกอย่างทำงานตามที่คาดไว้หรือไม่

ขั้นแรก สร้างไดเรกทอรีโปรเจ็กต์ “~/code” บนคอนเทนเนอร์ Proxmox VE 8 เพื่อจัดระเบียบไฟล์

- mkdir - - รหัส

ไปที่ไดเรกทอรีโครงการ “~/code” ดังนี้:

- ซีดี - รหัส

สร้างไฟล์ใหม่ เช่น “hello.cu” ในไดเรกทอรี “~/code” ของคอนเทนเนอร์ Proxmox VE 8 แล้วเปิดด้วยโปรแกรมแก้ไขข้อความ nano

- นาโน สวัสดี.cu

พิมพ์โค้ดบรรทัดต่อไปนี้ในไฟล์ 'hello.cu':

#รวม

__global__ ถือเป็นโมฆะ กล่าวสวัสดี - - -
พิมพ์ฉ - 'สวัสดีชาวโลกจาก GPU! \n - - -
-

int หลัก - - -
พิมพ์ฉ - “สวัสดีชาวโลกจากซีพียู! \n - - -

พูดสวัสดี - 1 - 1 - - - -
cudaDeviceซิงโครไนซ์ - - -

กลับ 0 -
-

เมื่อเสร็จแล้วให้กด - เอ็กซ์ ตามด้วย “ย” และ <ป้อน> เพื่อบันทึกไฟล์ “hello.cu”

หากต้องการคอมไพล์โปรแกรม CUDA “hello.cu” บนคอนเทนเนอร์ Proxmox VE 8 ให้รันคำสั่งต่อไปนี้

- nvcc hello.cu -โอ สวัสดี

ตอนนี้คุณสามารถเรียกใช้โปรแกรม CUDA “hello” บนคอนเทนเนอร์ Proxmox VE 8 ได้ดังนี้

- - - สวัสดี

หากคอนเทนเนอร์ Proxmox VE 8 สามารถใช้ NVIDIA GPU สำหรับการเร่งความเร็ว NVIDIA CUDA โปรแกรมจะพิมพ์สองบรรทัดดังที่แสดงในภาพหน้าจอต่อไปนี้

หากไม่สามารถเข้าถึง NVIDIA GPU จากคอนเทนเนอร์ Proxmox VE 8 โปรแกรมจะพิมพ์เฉพาะบรรทัดแรกซึ่งก็คือ “Hello world from the CPU!” ไม่ใช่บรรทัดที่สอง

บทสรุป

ในบทความนี้ เราได้แสดงให้คุณเห็นถึงวิธีการส่งผ่าน NVIDIA GPU จากโฮสต์ Proxmox VE 8 ไปยังคอนเทนเนอร์ Proxmox VE 8 LXC นอกจากนี้เรายังแสดงวิธีติดตั้งไดรเวอร์ NVIDIA GPU เวอร์ชันเดียวกันบนคอนเทนเนอร์ Proxmox VE 8 เป็นโฮสต์ Proxmox VE สุดท้าย เราได้แสดงวิธีการติดตั้ง NVIDIA CUDA และ NVIDIA cuDNN บนคอนเทนเนอร์ Ubuntu 22.04 LTS Proxmox VE 8 และคอมไพล์และรันโปรแกรม NVIDIA CUDA แบบง่ายๆ บนคอนเทนเนอร์ Proxmox VE 8

อ้างอิง: