Ollama не использует GPU: как проверить и заставить модель считать на видеокарте
Почему Ollama работает на процессоре, а не на видеокарте: старый драйвер NVIDIA, неподдерживаемая AMD, модель не влезла в VRAM, ноутбук с двумя GPU, сон в Linux. Проверка через ollama ps и nvidia-smi, логи Windows и Linux, переменные окружения.
Модель отвечает по слову в секунду, вентилятор процессора воет, а видеокарта простаивает. Значит, Ollama считает на CPU. Иногда это решение самой Ollama (модель не влезла в память видеокарты), иногда она видеокарту просто не нашла. Сначала нужно понять, какой из двух случаев твой.
Проверка за минуту
Запусти модель и, пока она загружена, выполни в другом окне терминала:
ollama ps
NAME ID SIZE PROCESSOR UNTIL
qwen3:14b a1b2c3d4e5f6 10 GB 41%/59% CPU/GPU 4 minutes from now
Смотри на колонку PROCESSOR:
| Что написано | Что это значит | Куда смотреть |
|---|---|---|
100% GPU | всё в порядке, модель целиком в видеопамяти | если всё равно медленно — дело не в GPU |
100% CPU | Ollama видеокарту не нашла или отказалась от неё | разделы про драйвер, AMD и логи ниже |
41%/59% CPU/GPU | видеокарта работает, но модель в неё не влезла | раздел про VRAM |
На NVIDIA дополнительно запусти nvidia-smi -l 1 и задай модели вопрос. Если загрузка GPU
не растёт, а память видеокарты не занята, модель точно считается на процессоре.
Модель не влезла в видеопамять
Самый частый случай, и это не поломка. Ollama кладёт в VRAM столько слоёв, сколько помещается, а остальное считает процессор. Даже 20% слоёв на CPU замедляют ответ в разы.
В память видеокарты идёт не только файл модели, но и кэш контекста. Чем длиннее контекст, тем больше места он занимает. Что можно сделать:
- Взять квантизацию легче. Вместо
q8_0—q4_K_M: файл почти вдвое меньше, качество падает слабо. Что значат эти обозначения, разобрано в статье про формат GGUF. - Взять модель поменьше. На карте с 8 ГБ модель на 14B в Q4 уже не помещается вместе с контекстом, а 7–9B помещается.
- Уменьшить контекст. Если ты поднимал
num_ctxилиOLLAMA_CONTEXT_LENGTH, верни меньшее значение. - Закрыть то, что держит VRAM. Браузер с аппаратным ускорением, игра, вторая модель в Ollama или LM Studio — всё это забирает память видеокарты.
Какая модель влезет в твою карту, удобно прикинуть в калькуляторе подбора модели.
NVIDIA: драйвер и поколение карты
По документации Ollama нужна карта с compute capability 5.0 и выше (это GTX 900-й серии и новее) и драйвер версии 550 или новее. Для карт с compute capability от 5.0 до 6.2 (GTX 900 и GTX 10-й серии) нужен драйвер 570+. Версию драйвера покажет:
nvidia-smi --query-gpu=name,driver_version --format=csv
CUDA Toolkit ставить не нужно: Ollama везёт нужные библиотеки с собой. Если драйвер старый, обнови его с сайта NVIDIA и перезапусти Ollama. Видеокарты она ищет только при старте, поэтому без перезапуска обновление драйвера ничего не изменит.
AMD и Intel
AMD через ROCm. На Windows ROCm поддерживает только Radeon RX 7600–7900 и PRO W7500–W7900.
На Linux список шире: RX 6000, 7000, 9070 и профессиональные карты, но нужен драйвер ROCm 7.
Если карта не из списка, на Linux её иногда заводит переменная HSA_OVERRIDE_GFX_VERSION,
например 10.3.0 для RDNA 2. Это обход, а не официальная поддержка.
Vulkan. Для остальных карт AMD и Intel у Ollama есть бэкенд Vulkan, он включён по
умолчанию на Windows и Linux. Если твоя Radeon не поддерживается ROCm, Ollama может работать
через Vulkan. На Linux пользователю может понадобиться группа render.
Ноутбук с двумя видеокартами
Встроенная графика Intel или AMD плюс дискретная NVIDIA. Если Ollama выбрала не ту карту или
вообще CPU, укажи видеокарту явно. Её UUID покажет nvidia-smi -L:
setx CUDA_VISIBLE_DEVICES GPU-8f3c1a2b-...
После этого полностью закрой Ollama в трее и запусти снова. На Windows переменные можно задать и через «Изменение переменных среды текущего пользователя».
Обратный случай: если где-то задано CUDA_VISIBLE_DEVICES=-1 или OLLAMA_LLM_LIBRARY=cpu_avx2,
Ollama специально уходит на процессор. Проверь, нет ли такого в переменных среды, оставшихся
от старых инструкций.
Linux: после сна видеокарта пропала
Известная ситуация с NVIDIA: после suspend/resume Ollama перестаёт видеть GPU и уходит на CPU. Документация советует перезагрузить модуль драйвера:
sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm
sudo systemctl restart ollama
В Docker сначала проверь, что контейнер вообще видит карту: docker run --gpus all ubuntu nvidia-smi.
Если GPU отваливается через какое-то время работы, в /etc/docker/daemon.json помогает
"exec-opts": ["native.cgroupdriver=cgroupfs"].
Что пишет лог
Если ничего выше не подошло, причину называет лог сервера. На Windows открой через Win+R папку
%LOCALAPPDATA%\Ollama и посмотри server.log. На Linux:
journalctl -u ollama --no-pager | grep -i -E "inference compute|gpu|cuda"
Строка inference compute с library=CUDA (или ROCm, Vulkan) значит, что видеокарта
найдена. Если там только library=cpu, ищи выше ошибки обнаружения GPU. У NVIDIA это коды
вроде 3, 46, 100, 999. Обычно они лечатся обновлением драйвера или перезагрузкой.
Подробнее лог станет с переменной OLLAMA_DEBUG=1.
Отдать диагностику агенту
Проверка выше — это пять-шесть команд, которые нужно запустить по порядку и прочитать вывод.
Дока может сделать это на твоём компьютере: напиши «Ollama считает на процессоре,
разберись почему». Агент запустит ollama ps и nvidia-smi, найдёт лог и покажет, что
в нём не так. Каждую команду ты видишь до запуска.
Своя локальная модель у Доки тоже есть. При установке она подбирает сборку и модель под твою видеокарту и память, так что связку из Ollama и ручного подбора квантизации можно не собирать. Сравнение двух популярных оболочек — в статье Ollama или LM Studio, а если Ollama не стартует вовсе, смотри отдельный разбор.