Иногда 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-#.logexplorer %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 или более новой.