« GPU Passthrough » : différence entre les versions
| (12 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
= NVidia = | = NVidia LXC = | ||
[https://matthieu.yiptong.ca/2020/12/06/nvidia-gpu-passthrough-to-lxc-containers-on-proxmox-6-for-nvenc-in-plex/ Source] [https://theorangeone.net/posts/lxc-nvidia-gpu-passthrough/ Autre source] [https://medium.com/@MARatsimbazafy/journey-to-deep-learning-nvidia-gpu-passthrough-to-lxc-container-97d0bc474957 Encore une autre] | [https://matthieu.yiptong.ca/2020/12/06/nvidia-gpu-passthrough-to-lxc-containers-on-proxmox-6-for-nvenc-in-plex/ Source] [https://theorangeone.net/posts/lxc-nvidia-gpu-passthrough/ Autre source] [https://medium.com/@MARatsimbazafy/journey-to-deep-learning-nvidia-gpu-passthrough-to-lxc-container-97d0bc474957 Encore une autre] | ||
{{Méta bandeau | {{Méta bandeau | ||
| Ligne 15 : | Ligne 15 : | ||
| texte = Astuce : Il est possible d'utiliser un '''[[Bindmount|montage interne]]''' pour partager les fichiers : | | texte = Astuce : Il est possible d'utiliser un '''[[Bindmount|montage interne]]''' pour partager les fichiers : | ||
}} | }} | ||
Si nécessaire on | Si nécessaire on installe git : | ||
# apt install git | # apt install git | ||
Puis on récupère les fichiers : | Puis on récupère les fichiers : | ||
# mkdir /opt/nvidia | # mkdir /opt/nvidia-driver | ||
# cd /opt/nvidia/ | # cd /opt/nvidia-driver/ | ||
# wget <nowiki>https://</nowiki>international.download.nvidia.com/XFree86/Linux-x86_64/<font color = green>470.74</font>/NVIDIA-Linux-x86_64-<font color = green>470.74</font>.run | # wget <nowiki>https://</nowiki>international.download.nvidia.com/XFree86/Linux-x86_64/<font color = green>470.74</font>/NVIDIA-Linux-x86_64-<font color = green>470.74</font>.run | ||
# git clone <nowiki>https://</nowiki>github.com/keylase/nvidia-patch | # git clone <nowiki>https://</nowiki>github.com/keylase/nvidia-patch | ||
| Ligne 25 : | Ligne 25 : | ||
==ProxMox== | ==ProxMox== | ||
* On installe les prérequis si nécessaire : | * On installe les prérequis si nécessaire : | ||
# apt install pve-headers | proxmox:~# apt install pve-headers | ||
* On installe le pilote : | * On installe le pilote : | ||
# bash /opt/nvidia/NVIDIA-Linux-x86_64-<font color = green>470.74</font>.run | proxmox:~# bash /opt/nvidia-driver/NVIDIA-Linux-x86_64-<font color = green>470.74</font>.run | ||
---- | ---- | ||
Si nécessaire on demande à l'installateur de remplacer le pilote "nouveau" au démarrage : | Si nécessaire on demande à l'installateur de remplacer le pilote "nouveau" au démarrage : | ||
| Ligne 34 : | Ligne 34 : | ||
On le décharge : | On le décharge : | ||
# rmmod nouveau | proxmox:~# rmmod nouveau | ||
On relance l'installation : | On relance l'installation : | ||
# bash /opt/nvidia/NVIDIA-Linux-x86_64-<font color = green>470.74</font>.run | proxmox:~# bash /opt/nvidia-driver/NVIDIA-Linux-x86_64-<font color = green>470.74</font>.run | ||
---- | ---- | ||
* On accepte d'enregistrer le module dans DKMS pour éviter de devoir le réinstaller lors de la mise à jour du kernel : | * On accepte d'enregistrer le module dans DKMS pour éviter de devoir le réinstaller lors de la mise à jour du kernel : | ||
| Ligne 47 : | Ligne 47 : | ||
*On applique le patch pour supprimer la limite de sessions : | *On applique le patch pour supprimer la limite de sessions : | ||
# bash /opt/nvidia/nvidia-patch/patch.sh | proxmox:~# bash /opt/nvidia-driver/nvidia-patch/patch.sh | ||
On peut également appliquer le patch pour autoriser "NvFBC" : | On peut également appliquer le patch pour autoriser "NvFBC" : | ||
# bash /opt/nvidia/nvidia-patch/patch-fbc.sh | proxmox:~# bash /opt/nvidia-driver/nvidia-patch/patch-fbc.sh | ||
* On force le chargement de modules au démarrage : | * On force le chargement de modules au démarrage : | ||
# vi /etc/modules-load.d/modules.conf | proxmox:~# vi /etc/modules-load.d/modules.conf | ||
<font color = grey>...</font> | <font color = grey>...</font> | ||
| Ligne 57 : | Ligne 57 : | ||
nvidia | nvidia | ||
nvidia_uvm | nvidia_uvm | ||
nvidia_modeset | |||
nvidia_drm | |||
# update-initramfs -u -k all | proxmox:~# update-initramfs -u -k all | ||
* On force la création de fichiers qui en utilisation normale ne sont créés qu'a la demande : | |||
# vi /etc/ | * On force la création de fichiers au démarrage qui en utilisation normale ne sont créés qu'a la demande : | ||
# vi /etc/systemd/system/nvidia-devnodes.service | |||
[Unit] | |||
Description=Create NVIDIA device nodes | |||
After=systemd-modules-load.service | |||
[Service] | |||
Type=oneshot | |||
ExecStart=/usr/bin/nvidia-modprobe -u -m | |||
[Install] | |||
WantedBy=multi-user.target | |||
Et on active le nouveau service : | |||
# systemctl daemon-reload | |||
# systemctl enable nvidia-devnodes.service | |||
# systemctl start nvidia-devnodes.service | |||
* On redémarre le serveur, on peut ensuite vérifier l'installation avec la commande "nvidia-smi" | * On redémarre le serveur, on peut ensuite vérifier l'installation avec la commande "nvidia-smi" | ||
# nvidia-smi | proxmox:~# nvidia-smi | ||
* Ensuite il faut noter le numéro du "cgroup" à autoriser pour le conteneur : | |||
proxmox:~# ls -l /dev/nvidia* | |||
crw-rw-rw- 1 root root <font color = blue>195</font>, 0 Oct 23 15:59 /dev/nvidia0 | |||
crw-rw-rw- 1 root root <font color = blue>195</font>, 255 Oct 23 15:59 /dev/nvidiactl | |||
crw-rw-rw- 1 root root <font color = blue>507</font>, 0 Oct 23 15:59 /dev/nvidia-uvm | |||
crw-rw-rw- 1 root root <font color = blue>507</font>, 1 Oct 23 15:59 /dev/nvidia-uvm-tools | |||
/dev/nvidia-caps: | |||
total 0 | |||
cr-------- 1 root root <font color = blue>511</font>, 1 Mar 1 14:55 nvidia-cap1 | |||
cr--r--r-- 1 root root <font color = blue>511</font>, 2 Mar 1 14:55 nvidia-cap2 | |||
On édite la configuration du conteneur LXC, ici pour exemple le conteneur "<font color = green>101</font>" : | |||
proxmox:~# vi /etc/pve/lxc/<font color = green>101</font>.conf | |||
# Allow cgroup access | |||
lxc.<font color = green>cgroup2</font>.devices.allow: c <font color = blue>195</font>:* rwm | |||
lxc.<font color = green>cgroup2</font>.devices.allow: c <font color = blue>507</font>:* rwm | |||
lxc.<font color = green>cgroup2</font>.devices.allow: c <font color = blue>511</font>:* rwm | |||
# Pass through device files | |||
lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file | |||
lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file | |||
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file | |||
lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file | |||
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file | |||
lxc.mount.entry: /dev/nvidia-caps dev/nvidia-caps none bind,optional,create=dir | |||
{{Méta bandeau | |||
| niveau = information | |||
| icône = loupe | |||
| texte = "<font color = green>cgroup'''2'''</font>" à partir de ProxMox 7, sinon utiliser "cgroup". | |||
}} | |||
= Conteneur LXC = | |||
* Après avoir démarré ou redémarré le conteneur, on installe le pilote : | |||
LXC:~# bash /opt/nvidia-driver/NVIDIA-Linux-x86_64-<font color = green>470.74</font>.run --no-kernel-module | |||
* On installe le patch pour supprimer la limite de sessions : | |||
LXC:~# bash /opt/nvidia-driver/nvidia-patch/patch.sh | |||
Optionnelement on peut activer "NvFBC" | |||
LXC:~# bash /opt/nvidia-driver/nvidia-patch/patch-fbc.sh | |||
Et pour finir on vérifie l'installation avec la commande "nvidia-smi" : | |||
LXC:~# nvidia-smi | |||
Dernière version du 15 mars 2026 à 10:26
NVidia LXC
Source Autre source Encore une autre
Sur le serveur ProxMox l'on peut installé DKMS pour ne pas perdre le module du pilote lorsque le kernel est mise à jour :
# apt update && apt upgrade # apt install dkms
Se rendre sur ce site et choisir un pilote compatible avec le patch pour supprimé la limite de sessions, télécharger l'ensemble sur le serveur et les containeurs :
Si nécessaire on installe git :
# apt install git
Puis on récupère les fichiers :
# mkdir /opt/nvidia-driver # cd /opt/nvidia-driver/ # wget https://international.download.nvidia.com/XFree86/Linux-x86_64/470.74/NVIDIA-Linux-x86_64-470.74.run # git clone https://github.com/keylase/nvidia-patch
Ensuite on commence par configurer ProxMox :
ProxMox
- On installe les prérequis si nécessaire :
proxmox:~# apt install pve-headers
- On installe le pilote :
proxmox:~# bash /opt/nvidia-driver/NVIDIA-Linux-x86_64-470.74.run
Si nécessaire on demande à l'installateur de remplacer le pilote "nouveau" au démarrage :
On le décharge :
proxmox:~# rmmod nouveau
On relance l'installation :
proxmox:~# bash /opt/nvidia-driver/NVIDIA-Linux-x86_64-470.74.run
- On accepte d'enregistrer le module dans DKMS pour éviter de devoir le réinstaller lors de la mise à jour du kernel :
- On applique le patch pour supprimer la limite de sessions :
proxmox:~# bash /opt/nvidia-driver/nvidia-patch/patch.sh
On peut également appliquer le patch pour autoriser "NvFBC" :
proxmox:~# bash /opt/nvidia-driver/nvidia-patch/patch-fbc.sh
- On force le chargement de modules au démarrage :
proxmox:~# vi /etc/modules-load.d/modules.conf
... # Nvidia modules nvidia nvidia_uvm nvidia_modeset nvidia_drm
proxmox:~# update-initramfs -u -k all
- On force la création de fichiers au démarrage qui en utilisation normale ne sont créés qu'a la demande :
# vi /etc/systemd/system/nvidia-devnodes.service
[Unit] Description=Create NVIDIA device nodes After=systemd-modules-load.service [Service] Type=oneshot ExecStart=/usr/bin/nvidia-modprobe -u -m [Install] WantedBy=multi-user.target
Et on active le nouveau service :
# systemctl daemon-reload # systemctl enable nvidia-devnodes.service # systemctl start nvidia-devnodes.service
- On redémarre le serveur, on peut ensuite vérifier l'installation avec la commande "nvidia-smi"
proxmox:~# nvidia-smi
- Ensuite il faut noter le numéro du "cgroup" à autoriser pour le conteneur :
proxmox:~# ls -l /dev/nvidia*
crw-rw-rw- 1 root root 195, 0 Oct 23 15:59 /dev/nvidia0 crw-rw-rw- 1 root root 195, 255 Oct 23 15:59 /dev/nvidiactl crw-rw-rw- 1 root root 507, 0 Oct 23 15:59 /dev/nvidia-uvm crw-rw-rw- 1 root root 507, 1 Oct 23 15:59 /dev/nvidia-uvm-tools /dev/nvidia-caps: total 0 cr-------- 1 root root 511, 1 Mar 1 14:55 nvidia-cap1 cr--r--r-- 1 root root 511, 2 Mar 1 14:55 nvidia-cap2
On édite la configuration du conteneur LXC, ici pour exemple le conteneur "101" :
proxmox:~# vi /etc/pve/lxc/101.conf
# Allow cgroup access lxc.cgroup2.devices.allow: c 195:* rwm lxc.cgroup2.devices.allow: c 507:* rwm lxc.cgroup2.devices.allow: c 511:* rwm # Pass through device files lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file lxc.mount.entry: /dev/nvidia-caps dev/nvidia-caps none bind,optional,create=dir
Conteneur LXC
- Après avoir démarré ou redémarré le conteneur, on installe le pilote :
LXC:~# bash /opt/nvidia-driver/NVIDIA-Linux-x86_64-470.74.run --no-kernel-module
- On installe le patch pour supprimer la limite de sessions :
LXC:~# bash /opt/nvidia-driver/nvidia-patch/patch.sh
Optionnelement on peut activer "NvFBC"
LXC:~# bash /opt/nvidia-driver/nvidia-patch/patch-fbc.sh
Et pour finir on vérifie l'installation avec la commande "nvidia-smi" :
LXC:~# nvidia-smi

