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.