Kembali ke blog

Ollama Tidak Pakai GPU? Perbaiki di Linux, Windows, dan WSL

16 September 2026

TL;DR

Jalankan ollama ps saat sebuah model sedang termuat: kolom PROCESSOR memberi tahu kebenarannya. 100% GPU berarti GPU baik-baik saja dan Anda bisa berhenti membaca. Pemecahan seperti 40%/60% CPU/GPU berarti model tidak muat di VRAM — pakai quant yang lebih kecil. 100% CPU berarti Ollama tidak menemukan GPU yang bisa dipakai: biasanya driver usang, keanggotaan group yang hilang (AMD di Linux), OLLAMA_LLM_LIBRARY yang terkunci, atau kontainer yang dijalankan tanpa akses GPU. Perbaiki penyebab yang disebut log; jumlahnya hanya sekitar lima.

Bagaimana cara memastikan Ollama benar-benar memakai GPU?

Dua perintah, tanpa menebak-nebak.

# Di satu terminal: muat sebuah model
ollama run llama3.2 "hello"

# Di terminal lain: lihat di mana ia berjalan
ollama ps
NAME            ID          SIZE     PROCESSOR        UNTIL
llama3.2:latest a80c4de17cd9 3.3 GB   100% GPU         4 minutes from now

Kolom PROCESSOR punya tiga keadaan:

  • 100% GPU — semua layer ter-offload. Selesai.
  • 48%/52% CPU/GPU — offload sebagian. GPU bekerja, tetapi model plus context tidak muat di VRAM. Lihat bagian VRAM di bawah.
  • 100% CPU — inferensi berjalan di CPU. GPU tidak terdeteksi, atau sengaja dimatikan.

Lalu baca log server, yang menyebut perangkat keras yang benar-benar ditemukan Ollama saat startup:

journalctl -u ollama --no-pager | grep -i "inference compute"

Di mesin NVIDIA yang sehat, Anda ingin melihat baris seperti:

inference compute id=GPU-xxxx library=CUDA compute=8.9 driver=12.4 name=NVIDIA GeForce RTX 4070

Tidak ada baris sama sekali, atau baris yang berujung pada pesan fallback CPU-only, dan Anda telah menemukan masalahnya. Sisa tulisan ini adalah lima penyebabnya, yang paling mungkin dulu.

Kenapa Ollama bilang “no compatible GPU discovered”?

Di NVIDIA, tersangka yang biasa adalah driver, bukan CUDA. Ollama membawa pustaka runtime CUDA miliknya sendiri, jadi Anda tidak perlu memasang CUDA toolkit — tetapi runtime bawaan itu butuh driver yang cukup baru untuk bicara dengannya. nvidia-smi yang jalan bukanlah bukti; ia hanya membuktikan ada driver, bukan bahwa ia cukup baru.

nvidia-smi --query-gpu=driver_version --format=csv,noheader

Jika versinya bertahun-tahun tua, perbarui lalu reboot:

# Keluarga Debian/Ubuntu
sudo apt install nvidia-driver-570
# Keluarga Arch
sudo pacman -S nvidia

Setelah pembaruan driver, restart layanan Ollama agar ia mendeteksi ulang perangkat — deteksi terjadi sekali di startup, bukan per permintaan:

sudo systemctl restart ollama

Jika log kini mencetak GPU Anda dengan library=CUDA, selesai. Jika masih menolak, pastikan OLLAMA_LLM_LIBRARY tidak ter-set di mana pun — lihat bagian “setelah update”.

Kenapa Ollama hanya memakai GPU untuk sebagian model?

Offload parsial adalah soal aritmetika, bukan bug: bobot model plus KV cache untuk jendela context Anda harus muat di VRAM. Model 7B di Q4 kira-kira 4–5 GB; beri context 8K dan cache menambah lagi. Di kartu 8 GB, ada yang harus tinggal di CPU, dan ollama ps memperlihatkan pembagiannya.

Tiga cara menutup jurangnya, yang termurah dulu:

  1. Quant lebih kecil. Turun dari Q8 ke Q4 memotong ukuran bobot separuhnya dengan biaya kualitas yang moderat. Pertimbangannya diuraikan di GGUF quantization levels explained.
  2. Context lebih pendek. num_ctx mendominasi ukuran cache. Context 32K di kartu 8 GB berarti kebanyakan layer tinggal di CPU.
  3. Lebih sedikit GPU layer. Opsi num_gpu membatasi berapa layer yang di-offload. Mengesetnya di bawah jumlah layer menjamin terjadi pembagian — jika ada yang mengesetnya di Modelfile atau panggilan API, hapus saja.

Catat juga jebakan sebaliknya: GPU yang menampilkan 100% GPU tetapi berjalan lebih lambat dari dugaan mungkin sedang swap ke RAM sistem. Bandingkan SIZE di ollama ps dengan VRAM Anda yang sebenarnya.

Kenapa Ollama tidak memakai GPU AMD saya?

AMD di Linux butuh tiga hal, dan ketiganya bisa diperiksa:

1. Dukungan ROCm di build-nya. Skrip instalasi Linux resmi membawa build ROCm. Pastikan apa yang dideteksi server:

journalctl -u ollama --no-pager | grep -iE "rocm|inference compute"

2. Keanggotaan group. Runtime ROCm butuh akses ke /dev/kfd dan /dev/dri, artinya group render dan video:

sudo usermod -aG render,video $USER
# log out lalu masuk lagi, kemudian:
sudo systemctl restart ollama

Satu group yang hilang ini adalah tulisan “Ollama not using GPU on Ubuntu” yang paling sering muncul di forum mana pun, dan ia selamat dari instalasi ulang driver karena driver memang bukan masalahnya.

3. GPU yang didukung — atau override. Kartu konsumen RDNA2 yang tidak didukung (gfx1031, gfx1032) gagal terdeteksi bahkan dengan stack ROCm yang bekerja. Workaround bakunya adalah mengaku sebagai target yang kompatibel:

sudo systemctl edit ollama
[Service]
Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0"

Lalu sudo systemctl restart ollama. Ini override yang tidak resmi tetapi dipakai luas; jika perilakunya aneh, hapus dan Anda kembali ke wilayah dukungan resmi. Jika Anda lebih suka kendali penuh atas backend daripada melawan autodeteksi, itulah perbedaan inti yang dibahas di llama.cpp vs Ollama.

Di Windows, dukungan AMD lebih sempit — cek daftar GPU yang didukung Ollama untuk kartu Anda sebelum menyimpulkan instalasinya rusak.

Kenapa Ollama berhenti memakai GPU setelah update?

Pembaruan mengubah salah satu dari tiga hal ini, dengan urutan kemungkinan seperti ini:

  1. Pustaka backend yang terkunci. OLLAMA_LLM_LIBRARY memaksa runner tertentu (cuda_v11, rocm, bahkan cpu). Ia memang untuk debugging, ia mengesampingkan autodeteksi diam-diam, dan ia bertahan di shell profile serta service file lama setelah alasannya terlupakan. Cari dan hapus:
systemctl show ollama --property=Environment | grep -i llm_library
env | grep OLLAMA
  1. Driver tertinggal dari runtime. Upgrade Ollama membawa runtime CUDA yang lebih baru; driver Anda tidak bergerak sampai Anda menggerakkannya. Perbaikannya sama dengan bagian driver di atas.
  2. Layanannya adalah kontainer dan flag-nya hilang. Kontainer yang dibuat ulang tanpa flag GPU adalah kontainer CPU-only. Invokasi NVIDIA-nya:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 ollama/ollama

Untuk kontainer AMD, padanannya adalah device passthrough plus penambahan group:

docker run -d --device=/dev/kfd --device=/dev/dri 
  --group-add video --group-add render 
  -v ollama:/root/.ollama -p 11434:11434 ollama/ollama

Tanpa --gpus=all, tanpa GPU — Docker tidak punya alasan untuk murah hati.

Apakah Ollama jalan di WSL2?

Ya, dengan driver yang tepat di tempat yang tepat: pasang driver NVIDIA Windows, jangan pernah driver Linux di dalam distro — driver di dalam WSL justru mematahkan passthrough CUDA, bukan memperbaikinya. Lalu perbarui WSL itu sendiri dan pastikan perangkat passthrough-nya ada:

wsl --update   # dari PowerShell
ls /dev/dxg    # di dalam WSL — wajib ada agar GPU terpakai

Dengan /dev/dxg tersedia dan driver Windows terkini, Ollama di WSL2 meng-offload ke GPU seperti instalasi native. Jika Anda lebih suka melewati lapisan perantara ini sama sekali, build Windows dari Ollama berjalan native dan melihat GPU tanpa WSL.

Apakah Ollama butuh GPU sama sekali?

Tidak — menjalankan CPU-only secara fungsional identik, hanya lebih lambat, dan untuk model kecil di CPU yang cepat hasilnya bisa sangat layak pakai. Di Apple Silicon pertanyaannya lenyap: Metal memakai unified memory otomatis, dan satu-satunya batas adalah seberapa banyak RAM yang bersedia Anda bagikan dengan model.

Checklist lima menit

GejalaPenyebab yang mungkinPerbaikan
100% CPU di ollama ps, kartu NVIDIA terpasangDriver terlalu tua untuk CUDA bawaanPerbarui driver, reboot, restart layanan
100% CPU, AMD di LinuxGroup render/video hilangusermod -aG render,video, login ulang
100% CPU, kartu AMD tidak didukungROCm menolak target gfx-nyaHSA_OVERRIDE_GFX_VERSION=10.3.0
Pemecahan 40%/60% CPU/GPUModel + context melampaui VRAMQuant lebih kecil atau num_ctx lebih pendek
GPU kemarin jalan, hari ini CPUOLLAMA_LLM_LIBRARY terkunci atau driver basiCari dan hapus env var-nya; perbarui driver
GPU di run native, CPU di DockerKontainer dijalankan tanpa flag GPUBuat ulang dengan --gpus=all (atau perangkat AMD)

Periksa dengan urutan ini: ollama ps untuk keadaannya, log server untuk daftar deteksi, lalu tabel ini. Sembilan dari sepuluh kali, baris log sudah memberi tahu Anda berada di baris yang mana.

— mrsaynothing

Get the next one by email

One email per post. No spam, no algorithms.

self-hosted · no third parties · one-click unsubscribe

what is this?

Git Revert vs Reset: Mana yang Menyelamatkan Riwayat Anda?

Suka tulisannya? Saya membangun seperti ini untuk hidup. pekerjakan saya