หากคุณติดตั้ง 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
เพิ่มบรรทัดต่อไปนี้แล้วกด
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” แล้วกด
เคอร์เนล - 'เอ็นวิเดีย' , รัน+= '/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 เมื่อเสร็จแล้วให้กด
ตอนนี้ เริ่มต้นคอนเทนเนอร์ 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 -
-
เมื่อเสร็จแล้วให้กด
หากต้องการคอมไพล์โปรแกรม 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