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

Прапор noexec для каталогу tmp в Linux

Якщо ваша система налаштована з прапором "noexec" для каталогу, де Ollama зберігає свої тимчасові виконувані файли, ви можете вказати альтернативне розташування, встановивши змінну OLLAMA_TMPDIR в каталог, доступний для запису для користувача, від імені якого запускається ollama. Наприклад, OLLAMA_TMPDIR=/usr/share/ollama/

Docker в Linux

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

Виявлення NVIDIA GPU

Під час запуску Ollama інвентаризує присутні в системі GPU, щоб визначити їх сумісність та обсяг доступної відеопам'яті. Іноді процес виявлення не може знайти ваші GPU. Загалом, використання найновішого драйвера дає найкращі результати.

Усунення несправностей NVIDIA GPU в Linux

Якщо ви використовуєте контейнер для запуску Ollama, переконайтеся, що ви спочатку налаштували середовище виконання контейнера, як описано в розділі docker

Іноді Ollama може мати труднощі з ініціалізацією GPU. При перевірці логів сервера це може проявлятися у вигляді різних кодів помилок, наприклад "3" (не ініціалізовано), "46" (пристрій недоступний), "100" (пристрій відсутній), "999" (невідома помилка) тощо. Наступні методи усунення несправностей можуть допомогти вирішити проблему

  • Якщо ви використовуєте контейнер, чи працює середовище виконання контейнера? Спробуйте виконати команду docker run --gpus all ubuntu nvidia-smi — якщо вона не працює, Ollama не зможе побачити вашу NVIDIA GPU.
  • Чи завантажений драйвер uvm? Виконайте sudo nvidia-modprobe -u
  • Спробуйте перезавантажити драйвер nvidia_uvm: спочатку виконайте sudo rmmod nvidia_uvm, потім sudo modprobe nvidia_uvm
  • Спробуйте перезавантажити систему
  • Переконайтеся, що у вас встановлено найновіші драйвери NVIDIA

Якщо жоден з цих методів не вирішує проблему, зіберіть додаткову інформацію та створіть звіт про проблему:

  • Встановіть змінну CUDA_ERROR_LEVEL=50 і спробуйте знову, щоб отримати додаткові діагностичні логи
  • Перевірте наявність помилок у виводі dmesg за допомогою команд sudo dmesg | grep -i nvrm та sudo dmesg | grep -i nvidia

Виявлення AMD GPU

У Linux доступ до AMD GPU зазвичай вимагає membership в групах 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 — увімкніть рівень інформаційних логів у бібліотеках AMD HIP/ROCm. Це може допомогти відобразити більш детальні коди помилок, що спростить усунення несправностей
  • OLLAMA_DEBUG=1 — під час виявлення GPU буде виводитися додаткова інформація
  • Перевірте наявність помилок від драйверів amdgpu або kfd у виводі dmesg за допомогою команд sudo dmesg | grep -i amdgpu та sudo dmesg | grep -i kfd

Невідповідність версії драйвера AMD

Якщо ваша AMD GPU не виявляється в Linux, а в логах сервера є повідомлення на кшталт:

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

Зазвичай це означає, що драйвер AMD GPU у системі занадто старий. Ollama постачається з бібліотеками ROCm 7 для Linux, які вимагають сумісний ядерний драйвер ROCm 7. Якщо в системі запущено старіший драйвер (ROCm 6.x або раніше), ініціалізація GPU зависатиме під час виявлення пристроїв і зрештою перевищить час очікування, в результаті чого Ollama перейде на роботу з CPU.

Щоб вирішити цю проблему, оновіть драйвер до версії ROCm v7 за допомогою утиліти amdgpu-install з документації AMD ROCm. Після оновлення перезавантажте систему та перезапустіть Ollama.

Кілька AMD GPU

Якщо ви отримуєте беззмістовні відповіді при завантаженні моделей на кількох AMD GPU в Linux, перегляньте наступне керівництво.

Помилки термінала Windows

У старих версіях Windows 10 (наприклад, 21H1) відомий баг, через який стандартна термінальна програма не відображає керівні символи коректно. Це може призводити до відображення довгих рядків символів на кшталт ←[?25h←[?25l, іноді з помилкою The parameter is incorrect. Щоб вирішити цю проблему, оновіть систему до Windows 10 22H1 або новішої версії.