Cách chuyển GPU NVIDIA sang bộ chứa Proxmox VE 8 để tăng tốc CUDA/AI và chuyển mã phương tiện

Cach Chuyen Gpu Nvidia Sang Bo Chua Proxmox Ve 8 De Tang Toc Cuda Ai Va Chuyen Ma Phuong Tien



Nếu bạn đã cài đặt GPU NVIDIA trên máy chủ Proxmox VE của mình, bạn có thể chuyển nó sang vùng chứa Proxmox VE LXC và sử dụng nó trong vùng chứa để tăng tốc CUDA/AI (ví dụ: TensorFlow, PyTorch). Bạn cũng có thể sử dụng GPU NVIDIA để chuyển mã phương tiện, truyền phát video, v.v. trong vùng chứa Proxmox VE LXC với Plex Media Server hoặc NextCloud đã cài đặt (ví dụ).

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách chuyển GPU NVIDIA sang vùng chứa Proxmox VE 8 LXC để bạn có thể sử dụng nó để tăng tốc CUDA/AI, chuyển mã phương tiện hoặc các tác vụ khác yêu cầu GPU NVIDIA.







Chủ đề Nội dung:

Cài đặt Trình điều khiển GPU NVIDIA trên Proxmox VE 8

Để chuyển GPU NVIDIA sang vùng chứa Proxmox VE LXC, bạn phải cài đặt trình điều khiển GPU NVIDIA trên máy chủ Proxmox VE 8 của mình. Nếu bạn cần bất kỳ trợ giúp nào trong việc cài đặt phiên bản mới nhất của trình điều khiển GPU NVIDIA chính thức trên máy chủ Proxmox VE 8 của mình, đọc bài viết này .



Đảm bảo các mô-đun hạt nhân GPU NVIDIA được tải tự động trong Proxmox VE 8

Sau khi cài đặt trình điều khiển GPU NVIDIA trên máy chủ Proxmox VE 8, bạn phải đảm bảo rằng các mô-đun hạt nhân GPU NVIDIA được tải tự động khi khởi động.



Trước tiên, hãy tạo một tệp mới như “nvidia.conf” trong thư mục “/etc/modules-load.d/” và mở tệp đó bằng trình soạn thảo văn bản nano.





$ nano / vân vân / mô-đun-load.d / nvidia.conf

Thêm các dòng sau và nhấn + X theo sau là “Y” và để lưu tệp “nvidia.conf”:



nvidia

nvidia_uvm

Để các thay đổi có hiệu lực, hãy cập nhật tệp “initramfs” bằng lệnh sau:

$ cập nhật-initramfs -TRONG

Vì lý do nào đó, Proxmox VE 8 không tạo các tệp thiết bị GPU NVIDIA cần thiết trong thư mục “/dev/”. Nếu không có các tệp thiết bị đó, vùng chứa Promox VE 8 LXC sẽ không thể sử dụng GPU NVIDIA.

Để đảm bảo Proxmox VE 8 tạo các tệp thiết bị GPU NVIDIA trong thư mục “/dev/” khi khởi động, hãy tạo tệp quy tắc udev “70-nvidia.rules” trong “/etc/udev/rules.d/” thư mục và mở nó bằng trình soạn thảo văn bản nano như sau:

$ nano / vân vân / udev / quy tắc.d / 70 -nvidia.rules

Nhập các dòng sau vào tệp “70-nvidia.rules” và nhấn + X theo sau là “Y” và để lưu tập tin:

# tạo các tập tin thiết bị NVIDIA cần thiết trong /dev/*

hạt nhân == 'nvidia' , CHẠY+= '/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 0666 /dev/nvidia*''

hạt nhân == 'nvidia_uvm' , CHẠY+= '/bin/bash -c '/usr/bin/nvidia-modtest -c0 -u && /bin/chmod 0666 /dev/nvidia-uvm*''

Để các thay đổi có hiệu lực, hãy khởi động lại máy chủ Proxmox VE 8 của bạn như sau:

$ khởi động lại

Khi máy chủ Proxmox VE 8 của bạn khởi động, các mô-đun hạt nhân NVIDIA sẽ được tải tự động như bạn có thể thấy trong ảnh chụp màn hình sau:

$ lsmod | nắm chặt nvidia

Các tệp thiết bị NVIDIA bắt buộc cũng phải được điền vào thư mục “/dev” của máy chủ Proxmox VE 8 của bạn. Lưu ý ID CGroup của tệp thiết bị NVIDIA. Bạn phải cho phép các ID CGroup đó trên vùng chứa LXC nơi bạn muốn chuyển qua GPU NVIDIA từ máy chủ Proxmox VE 8 của mình. Trong trường hợp của chúng tôi, ID CGroup là 195, 237 và 226.

$ ls -lh / nhà phát triển / nvidia *

$ ls -lh / nhà phát triển / khô

Tạo Bộ chứa Proxmox VE 8 LXC để truyền qua GPU NVIDIA

Chúng tôi đã sử dụng bộ chứa Ubuntu 22.04 LTS Proxmox VE 8 LXC trong bài viết này để trình diễn vì thư viện NVIDIA CUDA và NVIDIA cuDNN rất dễ cài đặt trên Ubuntu 22.04 LTS từ kho gói Ubuntu và việc kiểm tra xem khả năng tăng tốc NVIDIA CUDA có hoạt động hay không cũng dễ dàng hơn . Nếu muốn, bạn cũng có thể sử dụng các bản phân phối Linux khác. Trong trường hợp đó, các lệnh cài đặt NVIDIA CUDA và NVIDIA cuDNN sẽ khác nhau. Đảm bảo làm theo hướng dẫn cài đặt NVIDIA CUDA và NVIDIA cuDNN cho bản phân phối Linux mà bạn mong muốn.

Nếu bạn cần bất kỳ trợ giúp nào trong việc tạo thùng chứa Proxmox VE 8 LXC, đọc bài viết này .

Định cấu hình Bộ chứa LXC để truyền qua GPU NVIDIA trên Promox VE 8

Để định cấu hình bộ chứa LXC (giả sử là bộ chứa 102) để truyền qua GPU NVIDIA, hãy mở tệp cấu hình bộ chứa LXC từ trình bao Proxmox VE bằng trình soạn thảo văn bản nano như sau:

$ nano / vân vân / pve / lxc / 102 .conf

Nhập các dòng sau vào cuối tệp cấu hình vùng chứa LXC:

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

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

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

lxc.mount.entry: / nhà phát triển / nvidia0          nhà phát triển / nvidia0          không có trói buộc ,không bắt buộc, tạo nên = tài liệu

lxc.mount.entry: / nhà phát triển / nvidiactl        dev / nvidiactl        không có trói buộc ,không bắt buộc, tạo nên = tài liệu

lxc.mount.entry: / nhà phát triển / nvidia-modeset   dev / nvidia-modeset   không có trói buộc ,không bắt buộc, tạo nên = tài liệu

lxc.mount.entry: / nhà phát triển / nvidia-uvm       dev / nvidia-uvm       không có trói buộc ,không bắt buộc, tạo nên = tài liệu

lxc.mount.entry: / nhà phát triển / nhà phát triển nvidia-uvm-tools / nvidia-uvm-tools không có trói buộc ,không bắt buộc, tạo nên = tài liệu

lxc.mount.entry: / nhà phát triển / dri              nhà phát triển / khô              không có trói buộc ,không bắt buộc, tạo nên = Bạn

Đảm bảo thay thế ID CGroup trong dòng “lxc.cgroup.devices.allow” của tệp cấu hình vùng chứa LXC. Khi bạn đã hoàn tất, hãy nhấn + X theo sau là “Y” và để lưu tệp cấu hình vùng chứa LXC.

Bây giờ, hãy khởi động vùng chứa LXC từ bảng điều khiển Proxmox VE 8.

Nếu quá trình truyền GPU NVIDIA thành công, vùng chứa LXC sẽ khởi động mà không gặp bất kỳ lỗi nào và bạn sẽ thấy các tệp thiết bị NVIDIA trong thư mục “/dev” của vùng chứa.

$ ls -lh / nhà phát triển / nvidia *

$ ls -lh / nhà phát triển / khô

Cài đặt Trình điều khiển GPU NVIDIA trên Bộ chứa Proxmox VE 8 LXC

Chúng tôi đang sử dụng bộ chứa Ubuntu 22.04 LTS LXC trên máy chủ Proxmox VE 8 để trình diễn. Nếu bạn đang sử dụng một bản phân phối Linux khác trên bộ chứa LXC, các lệnh của bạn sẽ hơi khác so với lệnh của chúng tôi. Vì vậy, hãy đảm bảo điều chỉnh các lệnh tùy thuộc vào bản phân phối Linux mà bạn đang sử dụng trên vùng chứa.

Bạn có thể tìm thấy phiên bản trình điều khiển GPU NVIDIA mà bạn đã cài đặt trên máy chủ Proxmox VE 8 bằng lệnh “nvidia-smi”. Như bạn có thể thấy, chúng tôi đã cài đặt trình điều khiển GPU NVIDIA phiên bản 535.146.02 trên máy chủ Proxmox VE 8. Vì vậy, chúng tôi cũng phải cài đặt trình điều khiển GPU NVIDIA phiên bản 535.146.02 trên vùng chứa LXC.

$ nvidia-smi

Đầu tiên, cài đặt CURL trên vùng chứa LXC như sau:

$ cập nhật thích hợp && đúng cách cài đặt Xoăn -Và

CURL nên được cài đặt trên vùng chứa LXC.

Để cài đặt trình điều khiển GPU NVIDIA phiên bản 535.146.02 (giả sử), hãy xuất biến môi trường NVIDIA_VERSION và chạy lệnh CURL (trên vùng chứa) để tải xuống phiên bản bắt buộc của tệp trình cài đặt trình điều khiển GPU NVIDIA.

$ xuất khẩu NVIDIA_VERSION = '535.146.02'

$ cuộn tròn -O 'https://us.download.nvidia.com/XFree86/Linux-x86_64/ ${NVIDIA_VERSION} /NVIDIA-Linux-x86_64- ${NVIDIA_VERSION} .chạy'

Phải tải xuống phiên bản chính xác của tệp trình cài đặt trình điều khiển GPU NVIDIA trên vùng chứa LXC như bạn có thể thấy trong ảnh chụp màn hình sau:

Bây giờ, hãy thêm quyền thực thi vào tệp trình cài đặt trình điều khiển GPU NVIDIA trên vùng chứa như sau:

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

Để cài đặt trình điều khiển GPU NVIDIA trên vùng chứa, hãy chạy tệp trình cài đặt trình điều khiển GPU NVIDIA với “–no-kernel-module” tùy chọn như sau:

$ . / NVIDIA-Linux-x86_64-535.146.02.run --no-kernel-mô-đun

Khi bạn thấy tùy chọn này, hãy chọn “OK” và nhấn .

Chọn “OK” và nhấn .

Chọn “Có” và nhấn .

Chọn “OK” và nhấn .

Trình điều khiển GPU NVIDIA đang được cài đặt trên vùng chứa LXC. Phải mất vài giây để hoàn thành.

Khi bạn thấy lời nhắc này, hãy chọn “Có” và nhấn .

Chọn “OK” và nhấn . Trình điều khiển GPU NVIDIA phải được cài đặt trên vùng chứa LXC.

Để xác nhận xem trình điều khiển GPU NVIDIA đã được cài đặt và hoạt động hay chưa, hãy chạy lệnh “nvidia-smi” trên vùng chứa LXC. Như bạn có thể thấy, trình điều khiển GPU NVIDIA phiên bản 535.146.02 (cùng phiên bản được cài đặt trên máy chủ Proxmox VE 8) đã được cài đặt trên bộ chứa LXC và nó đã phát hiện chính xác GPU NVIDIA RTX 4070 của chúng tôi.

$ nvidia-smi

Cài đặt NVIDIA CUDA và cuDNN trên Proxmox VE 8 LXC Container

Chúng tôi đang sử dụng bộ chứa Ubuntu 22.04 LTS LXC trên máy chủ Proxmox VE 8 để trình diễn. Nếu bạn đang sử dụng một bản phân phối Linux khác trên bộ chứa LXC, các lệnh của bạn sẽ hơi khác so với lệnh của chúng tôi. Vì vậy, hãy đảm bảo điều chỉnh các lệnh tùy thuộc vào bản phân phối Linux mà bạn đang sử dụng trên vùng chứa.

Để cài đặt NVIDIA CUDA và cuDNN trên bộ chứa Ubuntu 22.04 LTS Proxmox VE 8, hãy chạy lệnh sau trên bộ chứa:

$ đúng cách cài đặt build-essential nvidia-cuda-toolkit nvidia-cudnn

Để xác nhận cài đặt, nhấn “Y” rồi nhấn .

Các gói cần thiết đang được tải xuống và cài đặt. Phải mất một thời gian để hoàn thành.

Khi bạn nhìn thấy cửa sổ này, hãy chọn “OK” và nhấn .

Chọn “Tôi đồng ý” và nhấn .

Quá trình cài đặt sẽ tiếp tục.

Trình cài đặt đang tải xuống kho lưu trữ thư viện NVIDIA cuDNN từ NVIDIA. Đó là một tập tin lớn nên phải mất nhiều thời gian để hoàn thành.

Sau khi tải xuống kho lưu trữ thư viện NVIDIA cuDNN, quá trình cài đặt sẽ tiếp tục như bình thường.

Tại thời điểm này, NVIDIA CUDA và cuDNN phải được cài đặt trên bộ chứa Ubuntu 22.04 LTS Proxmox VE 8 LXC.

Kiểm tra xem Bộ tăng tốc NVIDIA CUDA có hoạt động trên Vùng chứa Proxmox VE 8 LXC không

Để xác minh xem NVIDIA CUDA có được cài đặt chính xác hay không, hãy kiểm tra xem lệnh “nvcc” có sẵn trên vùng chứa Proxmox VE 8 hay không như sau:

$ nvcc --phiên bản

Như bạn có thể thấy, chúng tôi đã cài đặt NVIDIA CUDA 11.5 trên vùng chứa Proxmox VE 8 của chúng tôi.

Bây giờ, hãy viết, biên dịch và chạy một chương trình CUDA C đơn giản và xem mọi thứ có hoạt động như mong đợi không.

Trước tiên, hãy tạo thư mục dự án “~/code” trên vùng chứa Proxmox VE 8 để sắp xếp các tệp.

$ mkdir ~ / mã số

Điều hướng đến thư mục dự án “~/code” như sau:

$ đĩa CD `/ mã số

Tạo một tệp mới như “hello.cu” trong thư mục “~/code” của vùng chứa Proxmox VE 8 và mở tệp đó bằng trình soạn thảo văn bản nano:

$ nano xin chào.cu

Nhập các dòng mã sau vào tệp “hello.cu”:

#include

__global__ void sayXin chào ( ) {
printf ( 'Xin chào thế giới từ GPU! \N ' ) ;
}

int chính ( ) {
printf ( 'Xin chào thế giới từ CPU! \N ' ) ;

nóiXin chào << 1 , 1 >> ( ) ;
cudaThiết bịĐồng bộ hóa ( ) ;

trở lại 0 ;
}

Khi bạn đã hoàn tất, hãy nhấn + X theo sau là “Y” để lưu tệp “hello.cu”.

Để biên dịch chương trình CUDA “hello.cu” trên vùng chứa Proxmox VE 8, hãy chạy các lệnh sau:

$ nvcc hello.cu -O Xin chào

Giờ đây, bạn có thể chạy chương trình CUDA “xin chào” trên vùng chứa Proxmox VE 8 như sau:

$ . / Xin chào

Nếu bộ chứa Proxmox VE 8 có thể sử dụng GPU NVIDIA để tăng tốc NVIDIA CUDA, chương trình sẽ in hai dòng như trong ảnh chụp màn hình sau.

Nếu GPU NVIDIA không thể truy cập được từ vùng chứa Proxmox VE 8, chương trình sẽ chỉ in dòng đầu tiên là “Xin chào thế giới từ CPU!”, chứ không phải dòng thứ hai.

Phần kết luận

Trong bài viết này, chúng tôi đã hướng dẫn bạn cách chuyển GPU NVIDIA từ máy chủ Proxmox VE 8 sang vùng chứa Proxmox VE 8 LXC. Chúng tôi cũng đã hướng dẫn bạn cách cài đặt cùng một phiên bản trình điều khiển GPU NVIDIA trên vùng chứa Proxmox VE 8 làm máy chủ Proxmox VE. Cuối cùng, chúng tôi đã hướng dẫn bạn cách cài đặt NVIDIA CUDA và NVIDIA cuDNN trên bộ chứa Ubuntu 22.04 LTS Proxmox VE 8, đồng thời biên dịch và chạy chương trình NVIDIA CUDA đơn giản trên bộ chứa Proxmox VE 8.

Người giới thiệu: