如何排查问题
本文内容均由Ollama官方文档翻译,仅供个人学习,如有差异请以官网文档为准(https://ollama.com)ollama.cadn.net.cn
有时 Ollama 可能无法按预期运行。排查问题的最佳方式之一是查看日志。在 Mac 上,可通过运行以下命令找到日志:ollama.cadn.net.cn
cat ~/.ollama/logs/server.log
在带有 systemd 的 Linux 系统上,可通过以下命令查看日志:ollama.cadn.net.cn
journalctl -u ollama --no-pager
当您在容器中运行 Ollama 时,日志会输出到容器的 stdout/stderr 中:ollama.cadn.net.cn
docker logs <container-name>
(使用 docker ps 查找容器名称)ollama.cadn.net.cn
如果在终端中手动运行 ollama serve,日志将显示在该终端上。ollama.cadn.net.cn
在 Windows 上运行 Ollama 时,有多个不同的位置。您可以在资源管理器窗口中按 <cmd>+R 键并输入以下内容来查看它们:ollama.cadn.net.cn
explorer %LOCALAPPDATA%\Ollama 查看日志。最近的服务器日志位于 server.log,较旧的日志位于 server-#.log。
explorer %LOCALAPPDATA%\Programs\Ollama 用于浏览二进制文件(安装程序会将其添加到您的用户 PATH 中)
explorer %HOMEPATH%\.ollama 用于浏览模型和配置的存储位置
explorer %TEMP% 用于在其中一个或多个 ollama* 目录中存储临时可执行文件
为启用额外的调试日志以帮助排查问题,首先从系统托盘菜单中退出正在运行的应用程序,然后在 PowerShell 终端中执行以下操作ollama.cadn.net.cn
$env:OLLAMA_DEBUG="1"
& "ollama app.exe"
加入 Discord 以获取帮助,解读日志。ollama.cadn.net.cn
大语言模型库
Ollama 包含多个为不同 GPU 和 CPU 向量特性编译的 LLM 库。Ollama 会根据您系统的功能自动选择最优的库。如果自动检测存在问题,或您遇到其他问题(例如 GPU 崩溃),您可以通过强制指定特定的 LLM 库来解决此问题。cpu_avx2 性能最佳,其次是 cpu_avx,而 cpu 是速度最慢但兼容性最好的选项。在 macOS 下使用 Rosetta 模拟时,可使用 cpu 库。ollama.cadn.net.cn
在服务器日志中,您将看到类似以下的消息(具体表述可能因版本不同而有所变化):ollama.cadn.net.cn
Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]
实验性 LLM 库覆盖ollama.cadn.net.cn
您可以将 OLLAMA_LLM_LIBRARY 设置为任意可用的 LLM 库,以跳过自动检测。例如,若您拥有 CUDA 显卡,但仍希望强制使用支持 AVX2 向量的 CPU LLM 库,可使用以下方式:ollama.cadn.net.cn
OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve
您可以使用以下命令查看您的CPU具备哪些特性。ollama.cadn.net.cn
cat /proc/cpuinfo| grep flags | head -1
在 Linux 上安装旧版本或预发布版本
如果您在 Linux 上遇到问题,想要安装旧版本,或者想在正式发布前试用预发布版本,您可以告知安装脚本要安装的具体版本。ollama.cadn.net.cn
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.7 sh
Linux tmp noexec
如果您的系统在 Ollama 存储其临时可执行文件的位置设置了 "noexec" 标志,您可以通过将 OLLAMA_TMPDIR 环境变量设置为 ollama 用户具有写权限的其他位置来指定替代存储路径。例如:OLLAMA_TMPDIR=/usr/share/ollama/ollama.cadn.net.cn
NVIDIA GPU 识别
当 Ollama 启动时,它会扫描系统中现有的 GPU,以确定其兼容性以及可用的显存(VRAM)容量。有时,这一发现过程可能无法检测到您的 GPU。通常情况下,使用最新版本的驱动程序可获得最佳效果。ollama.cadn.net.cn
Linux NVIDIA 问题排查
如果您正在使用容器运行 Ollama,请确保您已按照 docker.md 中的说明首先设置好容器运行时环境。ollama.cadn.net.cn
有时 Ollama 在初始化 GPU 时可能会遇到困难。当您检查服务器日志时,可能会显示各种错误代码,例如 "3"(未初始化)、"46"(设备不可用)、"100"(无设备)、"999"(未知)或其他错误。以下故障排除方法可能有助于解决问题。ollama.cadn.net.cn
- 如果您正在使用容器,请确认容器运行时是否正常工作?请尝试
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 驱动程序
如果以上方法均无法解决问题,请收集更多信息并提交问题报告:ollama.cadn.net.cn
- 将
CUDA_ERROR_LEVEL=50 设为值并重试,以获取更多诊断日志
- 检查 dmesg 中是否存在错误
sudo dmesg | grep -i nvrm 和 sudo dmesg | grep -i nvidia
AMD GPU 探测
在 Linux 上,访问 AMD GPU 设备通常需要将用户添加到 video 和/或 render 用户组,以访问 /dev/kfd 设备。如果权限未正确配置,Ollama 将检测到该问题并在服务器日志中报告错误。ollama.cadn.net.cn
在容器中运行时,在某些 Linux 发行版和容器运行时中,ollama 进程可能无法访问 GPU。请在主机系统上使用 ls -lnd /dev/kfd /dev/dri /dev/dri/* 来确定您系统上的 数字 组 ID,并向容器传递额外的 --group-add ... 参数,以便其能够访问所需的设备。例如,在以下输出 crw-rw---- 1 0 44 226, 0 Sep 16 16:55 /dev/dri/card0 中,组 ID 列为 44。ollama.cadn.net.cn
如果 Ollama 初始时在 Docker 容器中成功使用 GPU 运行,但经过一段时间后切换为在 CPU 上运行,并且服务器日志中报告 GPU 发现失败的错误,则可通过在 Docker 中禁用 systemd cgroup 管理来解决。请在宿主机上编辑 /etc/docker/daemon.json,并向 Docker 配置中添加 "exec-opts": ["native.cgroupdriver=cgroupfs"]。ollama.cadn.net.cn
如果您在使 Ollama 正确发现或使用 GPU 进行推理时遇到问题,以下内容可能有助于定位故障原因。ollama.cadn.net.cn
AMD_LOG_LEVEL=3 启用 AMD HIP/ROCm 库中的信息日志级别。这有助于显示更详细的错误代码,从而帮助排查问题。
OLLAMA_DEBUG=1 在 GPU 发现过程中将报告额外信息
- 检查 dmesg 是否存在 amdgpu 或 kfd 驱动的错误代码
sudo dmesg | grep -i amdgpu 和 sudo dmesg | grep -i kfd
多个 AMD GPU
如果您在Linux上使用多个AMD GPU加载模型时遇到乱码响应,请参阅以下指南。ollama.cadn.net.cn
Windows 终端错误
较旧版本的 Windows 10(例如 21H1)存在一个已知问题:标准终端程序无法正确显示控制字符。这可能导致显示一长串类似 ←[?25h←[?25l 的字符串,有时还会报错显示 The parameter is incorrect。为解决此问题,请将系统更新至 Windows 10 22H1 或更高版本。ollama.cadn.net.cn