Назад до блога

Ollama не використовує GPU? Виправлення на Linux, Windows і WSL

16 вересня 2026 р.

TL;DR

Запустіть ollama ps поки модель завантажена: колонка PROCESSOR каже правду. 100% GPU — GPU в порядку, можете не читати далі. Співвідношення на кшталт 40%/60% CPU/GPU — модель не влізла у VRAM, беріть менший квант. 100% CPU — Ollama не знайшла придатного GPU: зазвичай старий драйвер, відсутність у групі (AMD на Linux), пришита OLLAMA_LLM_LIBRARY чи контейнер, запущений без доступу до GPU. Виправте причину, яку називає лог; їх усього близько п’яти.

Як перевірити, чи Ollama справді використовує GPU?

Дві команди, без вгадування.

# В одній терміналі: завантажте модель
ollama run llama3.2 "hello"

# В іншій: подивіться, де вона працює
ollama ps
NAME            ID          SIZE     PROCESSOR        UNTIL
llama3.2:latest a80c4de17cd9 3.3 GB   100% GPU         4 minutes from now

Колонка PROCESSOR має три стани:

  • 100% GPU — усі шари знесено на GPU. Готово.
  • 48%/52% CPU/GPU — часткове знесення. GPU працює, але модель разом із контекстом не влізли у VRAM. Дивіться розділ про VRAM нижче.
  • 100% CPU — інференс на процесорі. GPU або не виявлено, або вимкнено навмисно.

Потім прочитайте лог сервера, який називає залізо, яке Ollama справді знайшла на старті:

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

На здоровому NVIDIA-вузлі ви хочете бачити рядок на кшталт:

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

Немає жодного рядка, або рядок завершується повідомленням про CPU-only fallback — ви знайшли проблему. Решта статті — п’ять причин, найімовірніша перша.

Чому Ollama каже «no compatible GPU discovered»?

На NVIDIA звичайний винуватець — драйвер, а не CUDA. Ollama постачається зі власними бібліотеками CUDA runtime, тож встановлювати CUDA toolkit не треба — але пакунковому runtime потрібен достатньо новий драйвер, щоб із ним розмовляти. Працюючий nvidia-smi — не доказ; він доводить лише існування драйвера, не його свіжість.

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

Якщо версія старіша за кілька років, оновіть і перезавантажтеся:

# Сімейство Debian/Ubuntu
sudo apt install nvidia-driver-570
# Сімейство Arch
sudo pacman -S nvidia

Після оновлення драйвера перезапустіть сервіс Ollama, щоб він пере просканував пристрої — виявлення відбувається раз на старті, не на кожен запит:

sudo systemctl restart ollama

Якщо лог тепер друкує ваш GPU з library=CUDA — усе. Якщо вперто відмовляється, перевірте, чи не виставлена деінде OLLAMA_LLM_LIBRARY — дивіться розділ «після оновлення».

Чому Ollama використовує GPU лише для частини моделі?

Частковий offload — це арифметика, не баг: ваги моделі плюс KV cache для вашого вікна контексту мають вміститися у VRAM. Модель 7B у Q4 — це приблизно 4–5 ГБ; дайте контекст 8K — кеш додасть ще. На карті 8 ГБ щось мусить лишитися на CPU, і ollama ps показує пропорцію.

Три способи закрити розрив, найдешевший перший:

  1. Менший квант. Спуск з Q8 на Q4 половинить розмір ваг за скромну ціну в якості. Обміни розібрано в GGUF quantization levels explained.
  2. Коротший контекст. num_ctx домінує над розміром кеша. Контекст 32K на карті 8 ГБ означає, що більшість шарів лишиться на CPU.
  3. Менше GPU-шарів. Опція num_gpu обмежує кількість знесених шарів. Значення нижче загальної кількості шарів гарантовано дає розподіл — якщо хтось його виставив у Modelfile чи виклику API, зніміть.

І згадайте зворотну пастку: GPU, що показує 100% GPU, але працює повільніше за очікуване, може свопитися крізь системну пам’ять. Звіряйте колонку SIZE у ollama ps з реальною VRAM.

Чому Ollama не використовує мій AMD GPU?

AMD на Linux потребує трьох речей, і всі три перевірювані:

1. Підтримка ROCm у збірці. Офіційний інсталяційний скрипт для Linux пакує ROCm-збірку. Перевірте, що знайшов сервер:

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

2. Членство в групах. ROCm runtime потребує доступу до /dev/kfd і /dev/dri, тобто членства у групах render і video:

sudo usermod -aG render,video $USER
# вийдіть і зайдіть знову, потім:
sudo systemctl restart ollama

Саме відсутня група — найпопулярніша стаття «Ollama not using GPU on Ubuntu» на кожному форумі, і вона переживає перевстановлення драйвера, бо драйвер ніколи не був проблемою.

3. Підтримуваний GPU — або override. Непідтримувані споживчі карти RDNA2 (gfx1031, gfx1032) провалюють виявлення навіть із робочою ROCm-платформою. Стандартний обхід — прикинутися сумісною ціллю:

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

Потім sudo systemctl restart ollama. Це непідтримуваний, але широко вживаний override; якщо поводиться погано — зніміть, і ви знову в зоні офіційної підтримки. Якщо ж хочете повного контролю над бекендами замість боротьби з автодетектом, це та ключова різниця, яку покриває llama.cpp vs Ollama.

На Windows підтримка AMD вужча — звірте список підтримуваних GPU Ollama для своєї карти, перш ніж ховати встановлення.

Чому Ollama перестала використовувати GPU після оновлення?

Оновлення змінюють одне з трьох, у такому порядку ймовірності:

  1. Пришитий бекенд. OLLAMA_LLM_LIBRARY форсує конкретний runner (cuda_v11, rocm чи навіть cpu). Вона для дебагу, мовчки перекриває автодетект і живе в shell-профілях і юніт-файлах довго після того, як причину забули. Знайдіть і приберіть:
systemctl show ollama --property=Environment | grep -i llm_library
env | grep OLLAMA
  1. Драйвер відстав від runtime. Оновлення Ollama пакують новіший CUDA runtime; ваш драйвер не зрухається, доки не зрушите ви. Те саме виправлення, що в розділі про драйвер вище.
  2. Сервіс — це контейнер, і прапорці зникли. Контейнер, перестворений без GPU-прапорців, — це CPU-only контейнер. Виклик для NVIDIA:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 ollama/ollama

Для AMD-контейнерів — passthrough пристроїв плюс додавання груп:

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

Немає --gpus=all — немає GPU: Docker не має причин бути щедрим.

Чи працює Ollama у WSL2?

Так, із правильним драйвером у правильному місці: ставте драйвер NVIDIA для Windows, ніколи не Linux-драйвер усередині дистрибутиву — драйвер всередині WSL ламає CUDA passthrough, а не лагодить. Далі оновіть сам WSL і переконайтеся, що passthrough-пристрій існує:

wsl --update   # з PowerShell
ls /dev/dxg    # всередині WSL — мусить існувати для GPU

З наявним /dev/dxg і свіжим Windows-драйвером Ollama у WSL2 зносить роботу на GPU, як нативна інсталяція. Якщо хочете без посередника, Windows-збірка Ollama працює натурально і бачить GPU без WSL.

Чи Ollama взагалі потребує GPU?

Ні — CPU-only прогін функціонально ідентичний, просто повільніший, і для малих моделей на швидкому процесорі цілком придатний. На Apple Silicon питання розчиняється: Metal автоматично використовує unified memory, і єдина межа — скільки RAM ви готові ділити з моделлю.

Чекліст на п’ять хвилин

СимптомЙмовірна причинаВиправлення
100% CPU у ollama ps, карта NVIDIA на місціДрайвер старіший за пакункову CUDAОновіть драйвер, reboot, рестарт сервісу
100% CPU, AMD на LinuxВідсутні групи render/videousermod -aG render,video, повторний логін
100% CPU, непідтримувана карта AMDROCm відхиляє gfx-цільHSA_OVERRIDE_GFX_VERSION=10.3.0
Розподіл 40%/60% CPU/GPUМодель + контекст перевищують VRAMМенший квант чи коротший num_ctx
Вчора GPU, сьогодні CPUПришита OLLAMA_LLM_LIBRARY чи застарілий драйверЗнайдіть і приберіть змінну; оновіть драйвер
GPU нативно, CPU в DockerКонтейнер запущено без GPU-прапорцівПерестворіть з --gpus=all (чи AMD-пристроями)

Перевіряйте в такому порядку: ollama ps для стану, логи сервера для списку виявлення, потім таблиця. У дев’яти з десяти випадків рядок логу вже казав, у якому ви рядку.

— mrsaynothing

— mrsaynothing

Польові нотатки про ШІ, Linux і self-hosting.

Обговорити пост на dev.to dev.to ↗

Наступний гайд — на email

Один лист на пост. Полагодили — і далі.

self-hosted · без третіх сторін · відписка в один клік

що це таке?

Git revert чи git reset: хто рятує вашу історію?

Читається добре? Таке я будую за гроші. найміть мене