Εάν έχετε εγκαταστήσει μια GPU NVIDIA στον διακομιστή σας Proxmox VE, μπορείτε να τη μεταβιβάσετε σε ένα κοντέινερ Proxmox VE LXC και να τη χρησιμοποιήσετε στο κοντέινερ για επιτάχυνση CUDA/AI (δηλαδή TensorFlow, PyTorch). Μπορείτε επίσης να χρησιμοποιήσετε τη GPU NVIDIA για διακωδικοποίηση πολυμέσων, ροή βίντεο κ.λπ. σε κοντέινερ Proxmox VE LXC με τον εγκατεστημένο διακομιστή Plex Media Server ή NextCloud (για παράδειγμα).
Σε αυτό το άρθρο, θα σας δείξουμε πώς να περάσετε μια GPU NVIDIA σε ένα κοντέινερ Proxmox VE 8 LXC, ώστε να μπορείτε να το χρησιμοποιήσετε για επιτάχυνση CUDA/AI, διακωδικοποίηση πολυμέσων ή άλλες εργασίες που απαιτούν GPU NVIDIA.
Θέμα Περιεχομένων:
Εγκατάσταση των προγραμμάτων οδήγησης GPU NVIDIA στο Proxmox VE 8
Για να περάσετε από μια GPU NVIDIA σε ένα κοντέινερ Proxmox VE LXC, πρέπει να έχετε εγκατεστημένα τα προγράμματα οδήγησης GPU NVIDIA στον διακομιστή σας Proxmox VE 8. Εάν χρειάζεστε βοήθεια για την εγκατάσταση της πιο πρόσφατης έκδοσης των επίσημων προγραμμάτων οδήγησης GPU NVIDIA στον διακομιστή σας Proxmox VE 8, διαβάστε αυτό το άρθρο .
Βεβαιωθείτε ότι οι μονάδες πυρήνα GPU της NVIDIA φορτώνονται αυτόματα στο Proxmox VE 8
Αφού εγκαταστήσετε τα προγράμματα οδήγησης NVIDIA GPU στον διακομιστή σας Proxmox VE 8, πρέπει να βεβαιωθείτε ότι οι μονάδες πυρήνα GPU της NVIDIA φορτώνονται αυτόματα κατά την εκκίνηση.
Αρχικά, δημιουργήστε ένα νέο αρχείο όπως το 'nvidia.conf' στον κατάλογο «/etc/modules-load.d/» και ανοίξτε το με το πρόγραμμα επεξεργασίας κειμένου nano.
$ νανο / και τα λοιπά / modules-load.δ / nvidia.conf
Προσθέστε τις ακόλουθες γραμμές και πατήστε
nvidia
nvidia_uvm
Για να τεθούν σε ισχύ οι αλλαγές, ενημερώστε το αρχείο 'initramfs' με την ακόλουθη εντολή:
$ ενημέρωση-initramfs -σε
Για κάποιο λόγο, το Proxmox VE 8 δεν δημιουργεί τα απαιτούμενα αρχεία συσκευής GPU NVIDIA στον κατάλογο '/dev/'. Χωρίς αυτά τα αρχεία συσκευής, τα κοντέινερ Promox VE 8 LXC δεν θα μπορούν να χρησιμοποιήσουν τη GPU NVIDIA.
Για να βεβαιωθείτε ότι το Proxmox VE 8 δημιουργεί τα αρχεία συσκευής GPU NVIDIA στον κατάλογο '/dev/' κατά την εκκίνηση, δημιουργήστε ένα αρχείο κανόνων udev '70-nvidia.rules' στο '/etc/udev/rules.d/' κατάλογο και ανοίξτε τον με τον επεξεργαστή κειμένου nano ως εξής:
$ νανο / και τα λοιπά / udev / κανόνες.δ / 70 -nvidia.rules
Πληκτρολογήστε τις ακόλουθες γραμμές στο αρχείο '70-nvidia.rules' και πατήστε
ΠΥΡΗΝΑΣ == 'nvidia' , RUN+= '/bin/bash -c '/usr/bin/nvidia-smi -L && /bin/chmod 0666 /dev/nvidia*''
ΠΥΡΗΝΑΣ == 'nvidia_uvm' , RUN+= '/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. Σημειώστε τα αναγνωριστικά CGroup των αρχείων της συσκευής NVIDIA. Πρέπει να επιτρέψετε αυτά τα αναγνωριστικά CGroup στο κοντέινερ LXC όπου θέλετε να περάσουν οι GPU της NVIDIA από τον διακομιστή σας Proxmox VE 8. Στην περίπτωσή μας, τα αναγνωριστικά CGroup είναι 195, 237 και 226.
$ ls -λχ / dev / nvidia *$ ls -λχ / dev / dri
Δημιουργία κοντέινερ Proxmox VE 8 LXC για NVIDIA GPU Passthrough
Χρησιμοποιήσαμε ένα κοντέινερ Ubuntu 22.04 LTS Proxmox VE 8 LXC σε αυτό το άρθρο για την επίδειξη, καθώς οι βιβλιοθήκες NVIDIA CUDA και NVIDIA cuDNN είναι εύκολο να εγκατασταθούν στο Ubuntu 22.04 LTS από τα αποθετήρια πακέτων του Ubuntu και είναι πιο εύκολο να ελέγξετε εάν ο acceler λειτουργεί CUDA . Εάν θέλετε, μπορείτε να χρησιμοποιήσετε και άλλες διανομές Linux. Σε αυτήν την περίπτωση, οι εντολές εγκατάστασης NVIDIA CUDA και NVIDIA cuDNN θα διαφέρουν. Βεβαιωθείτε ότι ακολουθείτε τις οδηγίες εγκατάστασης NVIDIA CUDA και NVIDIA cuDNN για τη διανομή Linux που επιθυμείτε.
Εάν χρειάζεστε οποιαδήποτε βοήθεια για τη δημιουργία ενός δοχείου Proxmox VE 8 LXC, διαβάστε αυτό το άρθρο .
Διαμόρφωση κοντέινερ LXC για NVIDIA GPU Passthrough στο Promox VE 8
Για να διαμορφώσετε ένα κοντέινερ LXC (κοντέινερ 102, ας πούμε) για διέλευση GPU NVIDIA, ανοίξτε το αρχείο διαμόρφωσης κοντέινερ LXC από το κέλυφος Proxmox VE με το πρόγραμμα επεξεργασίας κειμένου nano ως εξής:
$ νανο / και τα λοιπά / πβε / lxc / 102 .conf
Πληκτρολογήστε τις ακόλουθες γραμμές στο τέλος του αρχείου διαμόρφωσης κοντέινερ LXC:
lxc.cgroup.devices.allow: γ 195 : * rwmlxc.cgroup.devices.allow: γ 237 : * rwm
lxc.cgroup.devices.allow: γ 226 : * rwm
lxc.mount.entry: / dev / nvidia0 dev / nvidia0 κανένα δένω ,προαιρετικός, δημιουργώ = αρχείο
lxc.mount.entry: / dev / nvidiactl dev / nvidiactl κανένα δένω ,προαιρετικός, δημιουργώ = αρχείο
lxc.mount.entry: / dev / nvidia-modeset dev / nvidia-modeset κανένα δένω ,προαιρετικός, δημιουργώ = αρχείο
lxc.mount.entry: / dev / nvidia-uvm dev / nvidia-uvm κανένα δένω ,προαιρετικός, δημιουργώ = αρχείο
lxc.mount.entry: / dev / nvidia-uvm-tools dev / nvidia-uvm-tools κανένα δένω ,προαιρετικός, δημιουργώ = αρχείο
lxc.mount.entry: / dev / dri dev / dri κανένα δένω ,προαιρετικός, δημιουργώ = εσείς
Βεβαιωθείτε ότι έχετε αντικαταστήσει τα αναγνωριστικά CGroup στις γραμμές 'lxc.cgroup.devices.allow' του αρχείου διαμόρφωσης κοντέινερ LXC. Μόλις τελειώσετε, πατήστε
Τώρα, ξεκινήστε το κοντέινερ LXC από τον πίνακα εργαλείων Proxmox VE 8.
Εάν η διέλευση GPU NVIDIA είναι επιτυχής, το κοντέινερ LXC θα πρέπει να ξεκινήσει χωρίς κανένα σφάλμα και θα πρέπει να δείτε τα αρχεία της συσκευής NVIDIA στον κατάλογο '/dev' του κοντέινερ.
$ ls -λχ / dev / nvidia *$ ls -λχ / dev / dri
Εγκατάσταση των προγραμμάτων οδήγησης GPU NVIDIA στο κοντέινερ Proxmox VE 8 LXC
Χρησιμοποιούμε ένα κοντέινερ Ubuntu 22.04 LTS LXC στον διακομιστή μας Proxmox VE 8 για επίδειξη. Εάν χρησιμοποιείτε άλλη διανομή Linux στο κοντέινερ LXC, οι εντολές σας θα διαφέρουν ελαφρώς από τις δικές μας. Επομένως, φροντίστε να προσαρμόσετε τις εντολές ανάλογα με τη διανομή Linux που χρησιμοποιείτε στο κοντέινερ.
Μπορείτε να βρείτε την έκδοση των προγραμμάτων οδήγησης NVIDIA GPU που εγκαταστήσατε στον διακομιστή σας Proxmox VE 8 με την εντολή 'nvidia-smi'. Όπως μπορείτε να δείτε, έχουμε εγκαταστήσει τα προγράμματα οδήγησης GPU NVIDIA έκδοση 535.146.02 στον διακομιστή μας Proxmox VE 8. Επομένως, πρέπει να εγκαταστήσουμε τα προγράμματα οδήγησης GPU NVIDIA έκδοση 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 στο κοντέινερ ως εξής:
$ chmod +x NVIDIA-Linux-x86_64-535.146.02.runΓια να εγκαταστήσετε τα προγράμματα οδήγησης NVIDIA GPU στο κοντέινερ, εκτελέστε το αρχείο εγκατάστασης προγραμμάτων οδήγησης NVIDIA GPU με το '–no-kernel-module' επιλογή ως εξής:
$ . / NVIDIA-Linux-x86_64-535.146.02.run --no-kernel-moduleΜόλις δείτε αυτήν την επιλογή, επιλέξτε 'OK' και πατήστε <Εισαγωγή> .
Επιλέξτε 'OK' και πατήστε <Εισαγωγή> .
Επιλέξτε «Ναι» και πατήστε <Εισαγωγή> .
Επιλέξτε 'OK' και πατήστε <Εισαγωγή> .
Τα προγράμματα οδήγησης GPU NVIDIA εγκαθίστανται στο κοντέινερ LXC. Χρειάζονται μερικά δευτερόλεπτα για να ολοκληρωθεί.
Μόλις δείτε αυτό το μήνυμα, επιλέξτε «Ναι» και πατήστε <Εισαγωγή> .
Επιλέξτε 'OK' και πατήστε <Εισαγωγή> . Τα προγράμματα οδήγησης GPU της NVIDIA θα πρέπει να είναι εγκατεστημένα στο κοντέινερ LXC.
Για να επιβεβαιώσετε εάν τα προγράμματα οδήγησης GPU της NVIDIA είναι εγκατεστημένα και λειτουργούν, εκτελέστε την εντολή 'nvidia-smi' στο κοντέινερ LXC. Όπως μπορείτε να δείτε, το πρόγραμμα οδήγησης NVIDIA GPU έκδοση 535.146.02 (η ίδια έκδοση με αυτή που είναι εγκατεστημένη στον διακομιστή Proxmox VE 8) είναι εγκατεστημένο στο κοντέινερ LXC και εντόπισε σωστά τη GPU NVIDIA RTX 4070.
$ 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' και στη συνέχεια πατήστε <Εισαγωγή> .
Γίνεται λήψη και εγκατάσταση των απαιτούμενων πακέτων. Χρειάζεται λίγος χρόνος για να ολοκληρωθεί.
Μόλις δείτε αυτό το παράθυρο, επιλέξτε 'OK' και πατήστε <Εισαγωγή> .
Επιλέξτε «Συμφωνώ» και πατήστε <Εισαγωγή> .
Η εγκατάσταση πρέπει να συνεχιστεί.
Το πρόγραμμα εγκατάστασης πραγματοποιεί λήψη του αρχείου βιβλιοθήκης NVIDIA cuDNN από τη NVIDIA. Είναι ένα μεγάλο αρχείο, οπότε χρειάζεται πολύς χρόνος για να ολοκληρωθεί.
Μόλις γίνει λήψη του αρχείου της βιβλιοθήκης NVIDIA cuDNN, η εγκατάσταση θα πρέπει να συνεχιστεί ως συνήθως.
Σε αυτό το σημείο, το NVIDIA CUDA και το cuDNN θα πρέπει να εγκατασταθούν στο κοντέινερ Ubuntu 22.04 LTS Proxmox VE 8 LXC.
Έλεγχος εάν το NVIDIA CUDA Acceleration λειτουργεί στο κοντέινερ Proxmox VE 8 LXC
Για να επαληθεύσετε εάν το NVIDIA CUDA έχει εγκατασταθεί σωστά, ελέγξτε εάν η εντολή 'nvcc' είναι διαθέσιμη στο κοντέινερ Proxmox VE 8 ως εξής:
$ nvcc --εκδοχήΌπως μπορείτε να δείτε, έχουμε εγκαταστήσει το NVIDIA CUDA 11.5 στο κοντέινερ Proxmox VE 8.
Τώρα, ας γράψουμε, ας μεταγλωττίσουμε και εκτελέσουμε ένα απλό πρόγραμμα CUDA C και ας δούμε αν όλα λειτουργούν όπως αναμένεται.
Αρχικά, δημιουργήστε έναν κατάλογο έργου '~/code' στο κοντέινερ Proxmox VE 8 για να διατηρήσετε τα αρχεία οργανωμένα.
$ mkdir ~ / κώδικαςΜεταβείτε στον κατάλογο του έργου '~/code' ως εξής:
$ CD `/ κώδικαςΔημιουργήστε ένα νέο αρχείο όπως το 'hello.cu' στον κατάλογο '~/code' του κοντέινερ Proxmox VE 8 και ανοίξτε το με το πρόγραμμα επεξεργασίας κειμένου nano:
$ νανο γεια σου.cuΠληκτρολογήστε τις ακόλουθες γραμμές κώδικα στο αρχείο 'hello.cu':
#include__global__ void sayHello ( ) {
printf ( «Γεια σου κόσμο από την GPU! \n ' ) ;
}
int main ( ) {
printf ( «Γεια σου κόσμο από την CPU! \n ' ) ;
πες γεια << 1 , 1 >> ( ) ;
cudaDeviceSynchronize ( ) ;
ΕΠΙΣΤΡΟΦΗ 0 ;
}
Μόλις τελειώσετε, πατήστε
Για να μεταγλωττίσετε το πρόγραμμα 'hello.cu' CUDA στο κοντέινερ Proxmox VE 8, εκτελέστε τις ακόλουθες εντολές:
$ nvcc γεια σου.cu -Ο Γειά σουΤώρα, μπορείτε να εκτελέσετε το πρόγραμμα 'hello' CUDA στο κοντέινερ Proxmox VE 8 ως εξής:
$ . / Γειά σουΕάν το κοντέινερ Proxmox VE 8 μπορεί να χρησιμοποιήσει τη GPU NVIDIA για επιτάχυνση NVIDIA CUDA, το πρόγραμμα θα εκτυπώσει δύο γραμμές όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.
Εάν η GPU της NVIDIA δεν είναι προσβάσιμη από το κοντέινερ Proxmox VE 8, το πρόγραμμα θα εκτυπώσει μόνο την πρώτη γραμμή που είναι 'Hello world from the CPU!', όχι τη δεύτερη γραμμή.
συμπέρασμα
Σε αυτό το άρθρο, σας δείξαμε πώς να περάσετε μια GPU NVIDIA από τον κεντρικό υπολογιστή Proxmox VE 8 σε ένα κοντέινερ Proxmox VE 8 LXC. Σας δείξαμε επίσης πώς να εγκαταστήσετε την ίδια έκδοση των προγραμμάτων οδήγησης GPU NVIDIA στο κοντέινερ Proxmox VE 8 με τον κεντρικό υπολογιστή Proxmox VE. Τέλος, σας δείξαμε πώς να εγκαταστήσετε το NVIDIA CUDA και το NVIDIA cuDNN σε ένα κοντέινερ Ubuntu 22.04 LTS Proxmox VE 8 και να μεταγλωττίσετε και να εκτελέσετε ένα απλό πρόγραμμα NVIDIA CUDA στο κοντέινερ Proxmox VE 8.