Ik liep al een tijdje rond met de gedachte om een NVIDIA video-kaart aan te schaffen voor mijn Debian systeem om de volgende redenen:
- Versnellen TDarr transcoding via hardware van de NVIDIA video-kaart
- Versnellen Plex transcoding via hardware van de NVIDIA video-kaart
- Ollama gebruik laten maken van NVIDIA video-kaart voor AI taken
Na wat zoeken ben ik uitgekomen op de ASUS Geforce RTX 3060 DUAL-RTX 3060-O12G video-kaart die op het moment van schrijven van deze blog Euro 279,= kost. Dit is dus een vriendelijk geprijsde video-kaart die bovendien zuinig is en niet zo groot (lang) waardoor deze gemakkelijk in mijn Debian Server systeem ingebouwd kan worden. Verder is deze heel erg stil wat erg fijn is.
NVIDIA drivers
Om een NVIDIA kaart goed te kunnen gebruiken in Debian moet je drivers installeren. Voer de volgende commando’s uit:
sudo apt install nvidia-kernel-dkms nvidia-driver firmware-misc-nonfree
Reboot hierna je systeem zodat deze driver actief is.
Je kunt met de volgende commando’s controleren of het goed is gegaan:
dkms status nvidia-smi nvtop
Hierna kun je nog wat extra settings uitvoeren:
Enable kernel modesetting met de NVIDIA driver
Voer de volgende commando’s uit:
echo 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX nvidia-drm.modeset=1 nvidia-drm.fbdev=1"' > /etc/default/grub.d/nvidia-modeset.cfg update-grub
Enable ook nog de helpers scripts voor het ‘nvidia-supsend-common’ pakket:
systemctl enable nvidia-suspend.service systemctl enable nvidia-hibernate.service systemctl enable nvidia-resume.service
Tenslotte moet je nog controleren of de ‘PreserveVideoMemoryAllocations’ NVIDIA module parameter aanstaat. Als dit niet het geval is dan zal deze via udev rules in /usr/lib/udev/rules.d/61-gdm.rules terugvallen op X11. Om deze waarde te controleren voer je het volgende commando uit:
cat /proc/driver/nvidia/params | grep PreserveVideoMemoryAllocations
Deze moet waarde ‘PreserveVideoMemoryAllocations: 1’ teruggeven. Als de waarde 0 is dan kunnen we deze aanpassen met de configuratie in ‘modprobe.d’. Voer het volgende commando uit:
echo 'options nvidia NVreg_PreserveVideoMemoryAllocations=1' > /etc/modprobe.d/nvidia-power-management.conf
Reboot hierna het systeem.
Nvidia GPU in Docker
Om de NVidia GPU in docker containers te gebruiken moet je de ‘NVIDIA Container Toolkit’ installeren. Dit doe je door de volgende stappen te volgen:
Configureer repository
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
Installeer ‘NVIDIA Container Toolkit’ package
sudo apt-get update sudo apt-get install -y nvidia-container-toolkit
Configureer dat Docker gebruik maakt van de Nvidia driver
sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker
Programma’s
Zoals aangegeven heb ik de NVIDIA video-kaart aangeschaft voor het versnellen van transcoding met TDarr en Plex en tevens sneller antwoorden te krijgen van Ollama. Dit blijkt ontzettend goed te werken. Hieronder vertel ik welke aanpassingen ik hiervoor nog specifiek moest maken.
TDarr
In TDarr vertel je in de ‘Transcode Options’ van je specifieke Library hoe dit precies moet gebeuren. Kies hier nu bij Plugins de community plugin ‘Migz Transcode using Nvidia GPU & FFMPEG’:
Plex
Voor Plex ga je naar ‘Instellingen > Server > Transcoder’ en Enable je de volgende settings:
Ollama
Voor Ollama moet je een aanpassing in je ‘docker-compose.yml’ file maken:
services: ollama: image: ollama/ollama:latest container_name: ollama ports: - 11434:11434 deploy: resources: reservations: devices: - driver: nvidia capabilities: ["gpu"] count: all volumes: - /home/henri/openai/ollama:/root/.ollama restart: unless-stopped open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui depends_on: - ollama ports: - 3000:8080 volumes: - /home/henri/openai/open-webui:/app/backend/data environment: - OLLAMA_BASE_URL=http://ollama:11434 - WEBUI_SECRET_KEY= - TZ=Europe/Amsterdam extra_hosts: - host.docker.internal:host-gateway restart: unless-stopped
Pas de ‘volumes’ sectie naar jouw directory-structuur aan. Zie ook mijn eerdere blog over het zelf hosten van OpenAI.
Conclusie
Het toevoegen van een NVIDIA video-kaart levert enorme prestatie verbeteringen op bij software die dit ondersteunt. Je hoeft echt niet een dure video-kaart aan te schaffen. Een NVIDIA RTX 3060 is voor de meeste mensen al voldoende.