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 показує пропорцію.
Три способи закрити розрив, найдешевший перший:
- Менший квант. Спуск з Q8 на Q4 половинить розмір ваг за скромну ціну в якості. Обміни розібрано в GGUF quantization levels explained.
- Коротший контекст.
num_ctxдомінує над розміром кеша. Контекст 32K на карті 8 ГБ означає, що більшість шарів лишиться на CPU. - Менше 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 після оновлення?
Оновлення змінюють одне з трьох, у такому порядку ймовірності:
- Пришитий бекенд.
OLLAMA_LLM_LIBRARYфорсує конкретний runner (cuda_v11,rocmчи навітьcpu). Вона для дебагу, мовчки перекриває автодетект і живе в shell-профілях і юніт-файлах довго після того, як причину забули. Знайдіть і приберіть:
systemctl show ollama --property=Environment | grep -i llm_library
env | grep OLLAMA - Драйвер відстав від runtime. Оновлення Ollama пакують новіший CUDA runtime; ваш драйвер не зрухається, доки не зрушите ви. Те саме виправлення, що в розділі про драйвер вище.
- Сервіс — це контейнер, і прапорці зникли. Контейнер, перестворений без 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/video | usermod -aG render,video, повторний логін |
100% CPU, непідтримувана карта AMD | ROCm відхиляє 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
Один лист на пост. Полагодили — і далі.
що це таке?Git revert чи git reset: хто рятує вашу історію?
Читається добре? Таке я будую за гроші. найміть мене