Podman & GPU pass-through
Testando ollama per un progetto personale, mi sono chiestoq aunto sarebbe stato difficile configurare il pass-through di una GPU con Podman; seguendo le guide ufficiali non ho trovato particolare difficoltà, ma ho deciso di scrivere un articolo per condividere la mia esperienza.
Perchè può essere utile utilizzare le gpu con Podman?
Nel mio caso specifico l’utilizzo di una GPU con Ollama è fortemente consigliato per il carico di lavoro richeisto; la GPU può essere condivisa fra differenti container / pod per raggiungere l’efficienza richiesta.
Passaggi che ho dovuto verificare / eseguire per completare l’installazione
- Disabilitato temporaneamente le Selinux (per poi riattivarle con una regola appropriata terminati test)
- Modificato il file
bash /etc/containers/containers.conf
[engine]
runtime = "crun"
hooks_dir = ["/usr/share/containers/oci/hooks.d"]
- Verificato le impostazioni nel file
bash /etc/nvidia-container-runtime/config.toml
Infine ho eseguito due test: il primo prevede di eseguire un container con l’immagine nvidia/cuda
podman run --rm --device nvidia.com/gpu=all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
Se il risultato è simile a questo, siamo sulla buona strada:
Il secondo test, più specifico per la mia casistica, prevede di lanciare ollama tramite Podman e verificare che la GPU venga riconosciuta:
podman run --name ollama --gpus all -p 11434:11434 --replace ollama/ollama:latest
Nel caso in cui l’output corrisponda al seguente la GPU viene riconosciuta da ollama è ed pronta per essere utilizzata tramite Podman
Appunti finali
Importante ricordarsi che è necessario riattivare le Selinux e creare eventualmente una regola ad-hoc per gestirela condivisione fra *hosté e container in maniera sicura.
Nel caso in cui i test sopra non sembrino funzionare, conviene sempre verificare l’installazione dei driver sulla macchina host tramite il comando
nvidia-smi
Se l’output rileva la scheda video interessata allora si può procedere controllando i log di Podman, altrimenti è necessario installare / reinstallare i driver NVIDIA necessari.