TL;DR
Draai ollama ps terwijl een model geladen is: de kolom PROCESSOR vertelt de waarheid. 100% GPU betekent dat de GPU het doet en je kunt stoppen met lezen. Een splitsing als 40%/60% CPU/GPU betekent dat het model niet in de VRAM paste — neem een kleinere quant. 100% CPU betekent dat Ollama geen bruikbare GPU vond: meestal een verouderde driver, een ontbrekend groepslidmaatschap (AMD op Linux), een vastgepinde OLLAMA_LLM_LIBRARY, of een container zonder GPU-toegang. Fix de oorzaak die het log noemt; er zijn er maar ongeveer vijf.
Hoe controleer ik of Ollama echt de GPU gebruikt?
Twee commando’s, geen gokken.
# In one terminal: load a model
ollama run llama3.2 "hello"
# In another: see where it runs
ollama ps NAME ID SIZE PROCESSOR UNTIL
llama3.2:latest a80c4de17cd9 3.3 GB 100% GPU 4 minutes from now De kolom PROCESSOR heeft drie toestanden:
100% GPU— elke laag offload. Klaar.48%/52% CPU/GPU— gedeeltelijke offload. De GPU werkt, maar model plus context paste niet in de VRAM. Zie hieronder de VRAM-sectie.100% CPU— de inferentie draait op de CPU. De GPU is niet gedetecteerd of bewust uitgezet.
Lees dan het serverlog, dat benoemt welke hardware Ollama bij het opstarten echt vond:
journalctl -u ollama --no-pager | grep -i "inference compute" Op een gezonde NVIDIA-doos wil je een regel als:
inference compute id=GPU-xxxx library=CUDA compute=8.9 driver=12.4 name=NVIDIA GeForce RTX 4070 Geen regel, of één die eindigt op een CPU-only-fallback-boodschap, en je probleem is gevonden. De rest van dit bericht is de vijf oorzaken, waarschijnlijkste eerst.
Waarom zegt Ollama ‘no compatible GPU discovered’?
Op NVIDIA is de gebruikelijke boosdoener de driver, niet CUDA. Ollama levert zijn eigen CUDA-runtimebibliotheken mee, dus je hoeft de CUDA-toolkit niet te installeren — maar de gebundelde runtime wil een driver die nieuw genoeg is om ermee te praten. Een werkende nvidia-smi is geen bewijs; het bewijst alleen dat er een driver is, niet dat die recent genoeg is.
nvidia-smi --query-gpu=driver_version --format=csv,noheader Zit de versie jaren achter, update en herboot:
# Debian/Ubuntu family
sudo apt install nvidia-driver-570
# Arch family
sudo pacman -S nvidia Na een driver-update herstart je de Ollama-service zodat hij apparaten opnieuw detecteert — detectie gebeurt eenmaal bij het opstarten, niet per request:
sudo systemctl restart ollama Print het log nu je GPU met library=CUDA, dan ben je klaar. Weigert hij nog, controleer dan of OLLAMA_LLM_LIBRARY nergens staat — zie de sectie ‘na een update’.
Waarom gebruikt Ollama de GPU voor maar een deel van het model?
Gedeeltelijke offload is rekenwerk, geen bug: de modelgewichten plus de KV-cache voor je contextvenster moeten in de VRAM passen. Een 7B-model op Q4 is ruwweg 4–5 GB; geef het 8K context en de cache telt extra op. Op een kaart van 8 GB moet iets op de CPU blijven en ollama ps toont de splitsing.
Drie manieren om het gat te dichten, goedkoopste eerst:
- Kleinere quant. Van Q8 naar Q4 halveert de gewichtsgrootte met bescheiden kwaliteitskost. De trade-offs staan uiteengezet in GGUF-kwantisatieniveaus uitgelegd.
- Kortere context.
num_ctxdomineert de cachegrootte. 32K context op een kaart van 8 GB betekent dat de meeste lagen op de CPU blijven. - Minder GPU-lagen. De optie
num_gpubeperkt hoeveel lagen offloaden. Zet hem onder het aantal lagen en een splitsing is gegarandeerd — heeft iemand hem in een Modelfile of API-call gezet, haal hem weg.
Let ook op de omgekeerde valkuil: een GPU die 100% GPU toont maar trager draait dan verwacht, kan swappen via het systeem-RAM. Zet de SIZE uit ollama ps naast je echte VRAM.
Waarom gebruikt Ollama mijn AMD-GPU niet?
AMD op Linux heeft drie dingen nodig en alle drie zijn te controleren:
1. ROCm-ondersteuning in de build. Het officiële Linux-installscript bundelt een ROCm-build. Bevestig wat de server detecteerde:
journalctl -u ollama --no-pager | grep -iE "rocm|inference compute" 2. Groepslidmaatschap. De ROCm-runtime heeft toegang tot /dev/kfd en /dev/dri nodig, oftewel de groepen render en video:
sudo usermod -aG render,video $USER
# log out and back in, then:
sudo systemctl restart ollama Dit ene ontbrekende groepslidmaatschap is de meest voorkomende ‘Ollama gebruikt geen GPU op Ubuntu’-post op elk forum, en het overleeft driverherinstallaties omdat de driver nooit het probleem was.
3. Een ondersteunde GPU — of een override. Niet-ondersteunde RDNA2-consumerkaarten (gfx1031, gfx1032) zakken voor de detectie, ook met een werkende ROCm-stack. De standaardworkaround is het claimen van een compatibel target:
sudo systemctl edit ollama [Service]
Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0" Dan sudo systemctl restart ollama. Dit is een niet-ondersteunde maar breed gebruikte override; stokert hij, haal hem weg en je zit weer in officieel ondersteund gebied. Wil je liever zelf de hand hebben over backends dan vechten met autodetectie: dat is het kernverschil uit llama.cpp vs Ollama.
Op Windows is AMD-ondersteuning nauwer — check de lijst met ondersteunde GPU’s van Ollama voor je kaart, voordat je aanneemt dat de installatie kapot is.
Waarom stopte Ollama met de GPU na een update?
Updates veranderen een van drie dingen, in deze volgorde van waarschijnlijkheid:
- Een vastgepinde backendbibliotheek.
OLLAMA_LLM_LIBRARYforceert een specifieke runner (cuda_v11,rocm, of zelfscpu). Bedoeld voor debugging, hij zet autodetectie stilletjes buiten werking en overleeft in shell-profielen en service-files lang nadat de reden vergeten is. Vind hem en haal hem weg:
systemctl show ollama --property=Environment | grep -i llm_library
env | grep OLLAMA - De driver zakte achterop de runtime. Ollama-upgrades bundelen een nieuwere CUDA-runtime; je driver beweegt niet tot jij hem beweegt. Zelfde fix als in de driversectie hierboven.
- De service is een container en de flags zijn weg. Een opnieuw aangemaakte container zonder GPU-flags is een CPU-only-container. De NVIDIA-aanroep is:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 ollama/ollama Voor AMD-containers is het equivalent device-passthrough plus groepen toevoegen:
docker run -d --device=/dev/kfd --device=/dev/dri
--group-add video --group-add render
-v ollama:/root/.ollama -p 11434:11434 ollama/ollama Geen --gpus=all, geen GPU — Docker heeft geen reden gul te zijn.
Werkt Ollama in WSL2?
Ja, met de juiste driver op de juiste plek: installeer de Windows-NVIDIA-driver, nooit een Linux-driver in de distro — een driver ín WSL breekt CUDA-passthrough in plaats van het te fixen. Update dan WSL zelf en bevestig dat het passthrough-device bestaat:
wsl --update # from PowerShell
ls /dev/dxg # inside WSL — must exist for GPU use Met /dev/dxg aanwezig en een actuele Windows-driver offload Ollama in WSL2 naar de GPU als een native installatie. Wil je de omweg liever overslaan: de Windows-build van Ollama draait native en ziet de GPU zonder WSL.
Heeft Ollama überhaupt een GPU nodig?
Nee — een CPU-only-run is functioneel identiek, alleen trager, en voor kleine modellen op een snelle CPU prima bruikbaar. Op Apple Silicon verdwijnt de vraag: Metal gebruikt unified memory automatisch en de enige limiet is hoeveel RAM je met het model wilt delen.
De checklist van vijf minuten
| Symptoom | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
100% CPU in ollama ps, NVIDIA-kaart aanwezig | Driver te oud voor de gebundelde CUDA | Driver updaten, herboot, service herstarten |
100% CPU, AMD op Linux | Ontbrekende groep render/video | usermod -aG render,video, opnieuw inloggen |
100% CPU, niet-ondersteunde AMD-kaart | ROCm verwerpt het gfx-target | HSA_OVERRIDE_GFX_VERSION=10.3.0 |
40%/60% CPU/GPU-splitsing | Model + context overstijgt de VRAM | Kleinere quant of kortere num_ctx |
| GPU werkte gisteren, CPU vandaag | Vastgepinde OLLAMA_LLM_LIBRARY of verouderde driver | Env-var vinden en weghalen; driver updaten |
| GPU in native runs, CPU in Docker | Container gestart zonder GPU-flags | Opnieuw aanmaken met --gpus=all (of AMD-devices) |
Controleer in deze volgorde: ollama ps voor de toestand, serverlogs voor de detectielijst, dan de tabel. Negen van de tien keer heeft de logregel je al verteld in welke rij je zit.
GPU weer in dienst? De volgende beslissing is de runtime zelf — llama.cpp vs Ollama beslecht die met een week echt gebruik.
FAQ
Hoe controleer ik of Ollama de GPU gebruikt?
ollama ps toont een GPU-percentage per geladen model; nvidia-smi zou het ollama-proces moeten tonen dat echt VRAM vasthoudt.
Waarom valt Ollama terug op CPU?
Meestal VRAM: model plus context past niet, dus lagen schuiven naar RAM. Dal het quant-niveau of de context — en controleer of nvidia-smi überhaupt werkt.
Betekent 100 procent GPU in ollama ps volledige offload?
Ja — het is het aandeel lagen dat op de kaart draait. Alles minder betekent dat de rest in het systeem-RAM zit.
— mrsaynothing
— mrsaynothing
Veldnotities over AI, Linux en self-hosting.
Bespreek deze post op dev.to dev.to ↗
De volgende how-to per e-mail
Eén e-mail per post. Fix het en ga door.
wat is dit?Git revert vs reset: welke redt je geschiedenis?
Schrijf je dit met plezier? Dit bouw ik professioneel. huur me in