Start by find the correct NVIDIA driver
https://www.nvidia.com/en-us/drivers
On the proxmox host :
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/570.144/NVIDIA-Linux-x86_64-570.144.run
chmod +x ./NVIDIA-Linux-x86_64-570.144.run
./NVIDIA-Linux-x86_64-570.144.run
sudo ./NVIDIA-Linux-x86_64-570.144.run -dkms
nvidia-smi
nano /etc/modules-load.d/modules.conf
nvidia
nvidia_uvm
ls -al /dev/nvidia*
root@pve:~# ls -al /dev/nvidia*
crw-rw-rw- 1 root root 195, 0 Apr 19 19:40 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Apr 19 19:40 /dev/nvidiactl
crw-rw-rw- 1 root root 510, 0 Apr 19 19:40 /dev/nvidia-uvm
crw-rw-rw- 1 root root 510, 1 Apr 19 19:40 /dev/nvidia-uvm-tools
/dev/nvidia-caps:
total 0
drwxr-xr-x 2 root root 80 Apr 19 19:40 .
drwxr-xr-x 20 root root 4760 Apr 19 19:40 ..
cr-------- 1 root root 236, 1 Apr 19 19:40 nvidia-cap1
cr--r--r-- 1 root root 236, 2 Apr 19 19:40 nvidia-cap2
nano /etc/pve/lxc/103.conf
lxc.cgroup2.devices.allow: c 195:* rwm
lxc.cgroup2.devices.allow: c 236:* rwm
lxc.cgroup2.devices.allow: c 510:* rwm
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-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
pct push 103 ./NVIDIA-Linux-x86_64-525.89.02.run /root/NVIDIA-Linux-x86_64-570.144.run
On Lxc :
sh NVIDIA-Linux-x86_64-570.144.run --no-kernel-module
nvidia-smi
For Docker:
# Add Nvidia repository key
curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/3bf863cc.pub | gpg --dearmor -o /etc/apt/keyrings/nvidia-archive-keyring.gpg
# Add Nvidia repository
echo "deb [signed-by=/etc/apt/keyrings/nvidia-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/ /" | tee /etc/apt/sources.list.d/nvidia-cuda-debian12.list
# Update package lists
apt update
# Install Nvidia container toolkit
apt install nvidia-container-toolkit
nano /etc/docker/daemon.json
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
sudo nvidia-ctk runtime configure --runtime=docker
nano /etc/nvidia-container-runtime/config.toml
# Set no-cgroups to true
no-cgroups = true
For testing
# Run a test Docker container to verify GPU usage
docker run --gpus all nvidia/cuda:12.6.1-base-ubuntu24.04 nvidia-smi

If needed before purge old nvidia driver
sudo apt remove --purge '^nvidia-.*'
sudo apt autoremove
Source :