Skip to content

Иногда Ollama может работать не так, как ожидается. Один из лучших способов понять, что произошло — посмотреть логи. Найти логи на Mac можно, выполнив команду:

shell
cat ~/.ollama/logs/server.log

На системах Linux с systemd логи можно найти с помощью этой команды:

shell
journalctl -u ollama --no-pager --follow --pager-end

При запуске Ollama в контейнере логи выводятся в stdout/stderr внутри контейнера:

shell
docker logs <container-name>

(Используйте docker ps, чтобы найти имя контейнера)

Если вы запускаете ollama serve вручную в терминале, логи будут выводиться в этот же терминал.

При запуске Ollama на Windows логи хранятся в нескольких разных расположениях. Открыть их в окне проводника можно, нажав <cmd>+R и введя:

  • explorer %LOCALAPPDATA%\Ollama для просмотра логов. Самые последние логи сервера находятся в server.log, а более старые — в server-#.log
  • explorer %LOCALAPPDATA%\Programs\Ollama для просмотра бинарных файлов (установщик добавляет этот путь в переменную PATH вашего пользователя)
  • explorer %HOMEPATH%\.ollama для просмотра папки, где хранятся модели и конфигурация
  • explorer %TEMP% — здесь хранятся временные исполняемые файлы в одной или нескольких директориях ollama*

Чтобы включить дополнительное отладочное логирование для помощи в устранении неполадок, сначала закройте запущенное приложение через меню в трее, а затем в терминале PowerShell:

powershell
$env:OLLAMA_DEBUG="1"
& "ollama app.exe"

Присоединяйтесь к Discord, чтобы получить помощь в интерпретации логов.

Библиотеки LLM

В состав Ollama входит несколько библиотек LLM, скомпилированных для разных GPU и векторных возможностей CPU. Ollama пытается выбрать наилучшую из них в зависимости от возможностей вашей системы. Если автоопределение работает с ошибками или вы столкнулись с другими проблемами (например, сбоями работы GPU), вы можете обойти это, принудительно указав конкретную библиотеку LLM. cpu_avx2 работает быстрее всего, за ней следует cpu_avx, а самая медленная, но наиболее совместимая — cpu. Эмуляция Rosetta в macOS будет работать с библиотекой cpu.

В логе сервера вы увидите сообщение, похожее на это (может отличаться в разных релизах):

Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]

Экспериментальное переопределение библиотеки LLM

Вы можете установить переменную OLLAMA_LLM_LIBRARY в значение любой доступной библиотеки LLM, чтобы обойти автоопределение. Например, если у вас есть карта CUDA, но вы хотите принудительно использовать библиотеку LLM для CPU с поддержкой векторов AVX2, используйте:

shell
OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve

Чтобы узнать, какие возможности поддерживает ваш процессор, используйте следующую команду:

shell
cat /proc/cpuinfo| grep flags | head -1

Установка старых или предрелизных версий на Linux

Если вы столкнулись с проблемами на Linux и хотите установить более старую версию, или хотите попробовать предрелизную версию до её официального выхода, вы можете указать установочному скрипту, какую версию нужно установить.

shell
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.7 sh

Отсутствие права на выполнение в tmp на Linux

Если на вашей системе для директории, где Ollama хранит временные исполняемые файлы, установлен флаг «noexec» (запрет на выполнение файлов), вы можете указать альтернативное расположение, установив переменную OLLAMA_TMPDIR в путь, доступный для записи пользователю, от имени которого запущен ollama. Например: OLLAMA_TMPDIR=/usr/share/ollama/

Docker на Linux

Если Ollama изначально работает на GPU в контейнере Docker, но через некоторое время переключается на работу на CPU, а в логе сервера появляются ошибки, сообщающие о сбоях обнаружения GPU, это можно исправить, отключив управление cgroup через systemd в Docker. Отредактируйте файл /etc/docker/daemon.json на хосте и добавьте в конфигурацию Docker строку "exec-opts": ["native.cgroupdriver=cgroupfs"].

Обнаружение GPU NVIDIA

При запуске Ollama проверяет наличие GPU в системе, чтобы определить их совместимость и объём доступной видеопамяти (VRAM). Иногда обнаружение не может найти ваши GPU. В целом, использование самых последних драйверов даёт наилучшие результаты.

Устранение неполадок с GPU NVIDIA на Linux

Если вы используете контейнер для запуска Ollama, убедитесь, что вы предварительно настроили среду выполнения контейнера, как описано в разделе docker

Иногда у Ollama могут возникать трудности с инициализацией GPU. При проверке логов сервера это может проявляться в виде различных кодов ошибок, например «3» (не инициализировано), «46» (устройство недоступно), «100» (устройство отсутствует), «999» (неизвестная ошибка) и других. Следующие методы устранения неполадок могут помочь решить проблему:

  • Если вы используете контейнер, работает ли среда выполнения контейнера? Попробуйте выполнить команду docker run --gpus all ubuntu nvidia-smi — если она не работает, Ollama не сможет увидеть вашу GPU NVIDIA.
  • Загружен ли драйвер uvm? Выполните sudo nvidia-modprobe -u
  • Попробуйте перезагрузить драйвер nvidia_uvm: сначала выполните sudo rmmod nvidia_uvm, затем sudo modprobe nvidia_uvm
  • Попробуйте перезагрузить систему
  • Убедитесь, что у вас установлены самые последние драйверы NVIDIA

Если ни один из этих методов не решает проблему, соберите дополнительную информацию и создайте issue:

  • Установите переменную CUDA_ERROR_LEVEL=50 и попробуйте снова, чтобы получить дополнительные диагностические логи
  • Проверьте вывод dmesg на наличие ошибок: выполните sudo dmesg | grep -i nvrm и sudo dmesg | grep -i nvidia

Обнаружение GPU AMD

В Linux для доступа к устройствам AMD GPU обычно требуется членство в группах video и/или render для доступа к устройству /dev/kfd. Если права доступа настроены неправильно, Ollama обнаружит это и сообщит об ошибке в логе сервера.

При запуске в контейнере в некоторых дистрибутивах Linux и средах выполнения контейнеров процесс ollama может не иметь доступа к GPU. Используйте команду ls -lnd /dev/kfd /dev/dri /dev/dri/* на хостовой системе, чтобы определить числовые идентификаторы групп на вашей системе, и передайте дополнительные аргументы --group-add ... контейнеру, чтобы он получил доступ к необходимым устройствам. Например, в следующем выводе crw-rw---- 1 0 44 226, 0 Sep 16 16:55 /dev/dri/card0 столбец с идентификатором группы имеет значение 44

Если у вас возникают проблемы с правильным обнаружением GPU Ollama или её использованием для вывода, следующие шаги могут помочь выявить причину сбоя:

  • AMD_LOG_LEVEL=3 — включает уровень логирования info в библиотеках AMD HIP/ROCm. Это помогает отображать более подробные коды ошибок, которые упрощают устранение неполадок
  • OLLAMA_DEBUG=1 — во время обнаружения GPU будет выводиться дополнительная информация
  • Проверьте вывод dmesg на наличие ошибок от драйверов amdgpu или kfd: выполните sudo dmesg | grep -i amdgpu и sudo dmesg | grep -i kfd

Несоответствие версии драйвера AMD

Если ваша GPU AMD не определяется в Linux, а в логах сервера присутствуют сообщения вида:

msg="failure during GPU discovery" ... error="failed to finish discovery before timeout"
msg="bootstrap discovery took" duration=30s ...

Обычно это означает, что драйвер GPU AMD в системе слишком старый. В состав Ollama входят библиотеки ROCm 7 для Linux, которые требуют совместимого ядерного драйвера ROCm 7. Если в системе установлен более старый драйвер (ROCm 6.x или более ранней версии), инициализация GPU будет зависать на этапе обнаружения устройств, а в итоге завершиться по таймауту, из-за чего Ollama переключится на работу с CPU.

Чтобы исправить это, обновите драйвер до ROCm v7 с помощью утилиты amdgpu-install из документации AMD по ROCm. После обновления перезагрузите систему и перезапустите Ollama.

Несколько GPU AMD

Если при загрузке моделей на несколько GPU AMD в Linux вы получаете нечитаемый (бессмысленный) вывод, обратитесь к следующему руководству.

Ошибки терминала Windows

У старых версий Windows 10 (например, 21H1) известна ошибка, из-за которой стандартная программа терминала неправильно отображает управляющие символы. Это может привести к отображению длинной строки символов вида ←[?25h←[?25l, иногда с ошибкой The parameter is incorrect. Чтобы исправить эту проблему, обновите систему до Windows 10 22H1 или более новой.