Іноді 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Прапор 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 або новішої версії.