TL;DR
I-run ang ollama ps habang may naka-load na model: ang PROCESSOR column ang nagsasabi sa iyo ng katotohanan. Ang 100% GPU ay nangangahulugang ayos ang GPU at pwede ka nang tumigil sa pagbabasa. Ang split na 40%/60% CPU/GPU ay nangangahulugang hindi kasya sa VRAM ang model — gumamit ng mas maliit na quant. Ang 100% CPU ay nangangahulugang walang natagpuang magagamit na GPU ang Ollama: karaniwang lumang driver, kulang na group membership (AMD sa Linux), naka-pin na OLLAMA_LLM_LIBRARY, o container na inilunsad nang walang GPU access. Ayusin ang sanhing binanggit ng logs; mga lima lang sila.
Paano ko tiyakin na talagang gumagamit ng GPU ang Ollama?
Dalawang command, walang hula-hula.
# 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 Tatlong estado ang PROCESSOR column:
100% GPU— naka-offload ang bawat layer. Tapos.48%/52% CPU/GPU— bahagyang offload. Gumagana ang GPU, pero hindi kasya sa VRAM ang model kasama ang context. Tingnan ang seksyon sa VRAM sa ibaba.100% CPU— nasa CPU ang inference. Hindi nadetect ang GPU o sadyang hindi pinagana.
Tapos basahin ang server log, na nagpapangalan sa hardware na talagang natagpuan ng Ollama sa pagsisimula:
journalctl -u ollama --no-pager | grep -i "inference compute" Sa malusog na NVIDIA box, ito ang linyang hinahangad mo:
inference compute id=GPU-xxxx library=CUDA compute=8.9 driver=12.4 name=NVIDIA GeForce RTX 4070 Walang linya man lang, o may CPU-only fallback message sa dulo, at natagpuan mo na ang problema mo. Ang natitira ng post na ito ay ang limang sanhi, pinakamalamang muna.
Bakit sinasabi ng Ollama na “no compatible GPU discovered”?
Sa NVIDIA, ang karaniwang salarin ay ang driver, hindi ang CUDA. May dala itong sariling CUDA runtime libraries ang Ollama, kaya hindi mo kailangan ang naka-install na CUDA toolkit — pero kailangan ng bundled runtime ang driver na sapat na bago para makipag-usap dito. Ang gumaganang nvidia-smi ay hindi patunay; driver lang ang pinatutunayan nito, hindi ang sapat na bago nito.
nvidia-smi --query-gpu=driver_version --format=csv,noheader Kung ilang taon na ang version, i-update at i-reboot:
# Debian/Ubuntu family
sudo apt install nvidia-driver-570
# Arch family
sudo pacman -S nvidia Pagkatapos ng driver update, i-restart ang Ollama service para muling mag-detect ng mga device — isang beses lang mangyayari ang detection sa startup, hindi kada request:
sudo systemctl restart ollama Kung naglalabas na ang log ng GPU mo na may library=CUDA, tapos ka na. Kung tumatanggi pa rin, i-check na hindi nakatakda kahit saan ang OLLAMA_LLM_LIBRARY — tingnan ang seksyon ng “pagkatapos ng update”.
Bakit bahagi lang ng model ang ginagamitan ng GPU ng Ollama?
Ang bahagyang offload ay arithmetic, hindi bug: dapat kumasya sa VRAM ang mga weight ng model kasama ang KV cache para sa context window mo. Ang 7B model sa Q4 ay mga 4–5 GB; bigyan ito ng 8K context at madadagdagan pa ang cache. Sa 8 GB card, may maiiwang nasa CPU, at ipinapakita ng ollama ps ang split.
Tatlong paraan para isara ang agwat, pinakamura muna:
- Mas maliit na quant. Ang pagbaba mula Q8 papuntang Q4 ay kumakahati sa laki ng weight na may katamtamang halaga sa quality. Nakalatag ang mga trade-off sa GGUF quantization levels, ipinaliwanag.
- Mas maikling context. Ang
num_ctxang nangingibabaw sa laki ng cache. Ang 32K context sa 8 GB card ay nangangahulugang karamihan ng mga layer ay nananatili sa CPU. - Mas kaunting GPU layers. Inilalagyan ng takda ng
num_gpuopsyon kung ilang layer ang mai-offload. Ang pagtakda nito sa ibaba ng bilang ng layer ay garantiya ng split — kung may nagtakda nito sa Modelfile o API call, alisin ito.
Tandaan din ang kabaligtarang bitag: ang GPU na nagpapakita ng 100% GPU pero tumatakbo nang mas mabagal kaysa inaasahan ay pwedeng nagsa-swap sa system RAM. Iugnay ang SIZE ng ollama ps sa totoong VRAM mo.
Bakit hindi ginagamit ng Ollama ang AMD GPU ko?
Ang AMD sa Linux ay nangangailangan ng tatlong bagay, at nasisiyasat ang lahat ng tatlo:
1. Suporta sa ROCm sa build. May kasamang ROCm build ang opisyal na Linux install script. Kumpirmahin ang nadetect ng server:
journalctl -u ollama --no-pager | grep -iE "rocm|inference compute" 2. Group membership. Kailangan ng ROCm runtime ang access sa /dev/kfd at /dev/dri, na nangangahulugang mga grupong render at video:
sudo usermod -aG render,video $USER
# log out and back in, then:
sudo systemctl restart ollama Ang iisang kulang na grupong ito ang pinakakaraniwang “Ollama not using GPU on Ubuntu” post sa bawat forum, at nalalagpasan nito ang mga pagkainstall muli ng driver dahil hindi kailanman naging problema ang driver.
3. Suportadong GPU — o override. Nabibigo sa detection ang mga hindi suportadong RDNA2 consumer card (gfx1031, gfx1032) kahit may gumaganang ROCm stack. Ang karaniwang workaround ay ang magpanggap ng katugmang target:
sudo systemctl edit ollama [Service]
Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0" Tapos sudo systemctl restart ollama. Override itong hindi suportado pero malawakang ginagamit; kapag nagmaltrato, alisin ito at babalik ka sa teritoryo ng opisyal na suporta. Kung mas gusto mo ang buong kontrol sa mga backend kaysa makipaglaban sa autodetection, iyan ang core na pagkakaibang sakop ng llama.cpp vs Ollama.
Sa Windows, mas makitid ang suporta sa AMD — tingnan ang supported-GPU list ng Ollama para sa card mo bago mo ikonklusyang sira ang install.
Bakit tumigil sa paggamit ng GPU ang Ollama pagkatapos ng update?
Binabago ng mga update ang isa sa tatlong bagay, sa ayos ng malamang:
- Naka-pin na backend library. Pinipilit ng
OLLAMA_LLM_LIBRARYang tukoy na runner (cuda_v11,rocm, o kahitcpu). Para ito sa debugging, tahimik nitong nilalampasan ang autodetection, at nananatili ito sa mga shell profile at service file nang matagal pagkatapos makalimutan ang dahilan. Hanapin at alisin:
systemctl show ollama --property=Environment | grep -i llm_library
env | grep OLLAMA - Naiwan sa likod ng runtime ang driver. May mas bagong CUDA runtime ang mga Ollama upgrade; hindi gumagalaw ang driver mo hangga’t hindi mo ito ginagalaw. Parehong fix sa seksyon ng driver sa itaas.
- Container ang service at nawala ang mga flag. Ang muling ginawang container nang walang GPU flags ay CPU-only container. Ang NVIDIA invocation ay:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 ollama/ollama Para sa mga AMD container, ang katumbas ay device passthrough kasama ang mga group add:
docker run -d --device=/dev/kfd --device=/dev/dri
--group-add video --group-add render
-v ollama:/root/.ollama -p 11434:11434 ollama/ollama Walang --gpus=all, walang GPU — walang dahilan ang Docker para magpakabait.
Gumagana ba ang Ollama sa WSL2?
Oo, kung nasa tamang lugar ang tamang driver: i-install ang Windows NVIDIA driver, huwag kailanman ang Linux driver sa loob ng distro — sumisira ang in-WSL driver sa CUDA passthrough sa halip na ayusin ito. Tapos i-update ang mismong WSL at kumpirmahing may passthrough device:
wsl --update # from PowerShell
ls /dev/dxg # inside WSL — must exist for GPU use Kapag nandoon ang /dev/dxg at kasalukuyang Windows driver, naka-offload sa GPU ang Ollama sa WSL2 na parang native install. Kung gusto mo nang laktawan ang indirection nang buo, tumatakbo nang native ang Windows build ng Ollama at nakikita ang GPU nang walang WSL.
Kailangan ba talaga ng GPU ang Ollama?
Hindi — kapareho ang gana ng CPU-only run, mabagal lang, at para sa maliliit na model sa mabilis na CPU, pwede itong lubos na magamit. Sa Apple Silicon natutunaw ang tanong: gumagamit nang kusa ang Metal ng unified memory, at ang tanging hangganan ay kung magkano ang RAM na papayag mong ibahagi sa model.
Ang limang-minutong checklist
| Sintomas | Malamang na sanhi | Fix |
|---|---|---|
100% CPU sa ollama ps, may NVIDIA card | Sobrang luma ang driver sa bundled CUDA | I-update ang driver, reboot, restart service |
100% CPU, AMD sa Linux | Kulang ang render/video group | usermod -aG render,video, mag-login ulit |
100% CPU, hindi suportadong AMD card | Tinatanggihan ng ROCm ang gfx target | HSA_OVERRIDE_GFX_VERSION=10.3.0 |
40%/60% CPU/GPU split | Lumalagpas sa VRAM ang model + context | Mas maliit na quant o mas maikling num_ctx |
| GPU kahapon, CPU ngayon | Naka-pin na OLLAMA_LLM_LIBRARY o lumang driver | Hanapin at alisin ang env var; i-update ang driver |
| GPU sa native runs, CPU sa Docker | Inilunsad ang container nang walang GPU flags | I-create muli gamit ang --gpus=all (o AMD devices) |
I-check sa ayos na ito: ollama ps para sa estado, mga server log para sa detection list, tapos ang table. Sa sampu, siyam ang linyang log na ang nagsabi sa iyo kung aling hanay ka nasa.
Balik na sa serbisyo ang GPU? Ang susunod na desisyon ay ang mismong runtime — inaayos ng llama.cpp vs Ollama iyon sa loob ng isang linggo ng totoong paggamit.
FAQ
Paano ko tiyakin na gumagamit ng GPU ang Ollama?
Ipinapakita ng ollama ps ang bahagdan ng GPU kada naka-load na model; dapat ilista ng nvidia-smi ang ollama process na humahawak ng tunay na VRAM.
Bakit bumabalik sa CPU ang Ollama?
Kadalasan VRAM: hindi kasya ang model kasama ang context, kaya lumalapag ang mga layer sa RAM. Babaan ang quant level o context — at tiyaking gumagana muna ang nvidia-smi.
Ang 100 porsiyento GPU ba sa ollama ps ay nangangahulugang full offload?
Oo — ito ang bahagi ng mga layer na tumatakbo sa card. Anumang kulang sa 100, ang natitira ay nasa system RAM.
— mrsaynothing
— mrsaynothing
Mga field note sa AI, Linux at self-hosting.
Pag-usapan ang post na ito sa dev.to dev.to ↗
Ang susunod na how-to sa email
Isang email kada post. Ayusin, tuloy sa susunod.
ano ito?Git Revert vs Reset: Alin ang Sagip sa History Mo?
Nag-e-enjoy ka ba sa mga sulat na ito? Ito ang tinatayo ko para sa trabaho. i-hire ako