如何排查问题

有时 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

LLM 库

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

如果您的系统配置了 “noexec” 标志,Ollama 在其中存储其临时可执行文件,您可以通过将 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 nvrmsudo 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,然后添加"exec-opts": ["native.cgroupdriver=cgroupfs"]添加到 Docker 配置中。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 amdgpusudo dmesg | grep -i kfd

多个 AMD GPU

如果您在 Linux 上跨多个 AMD GPU 加载模型时遇到乱码响应,请参阅以下指南。ollama.cadn.net.cn

Windows 终端错误

已知旧版本的 Windows 10(例如 21H1)存在标准终端程序无法正确显示控制字符的错误。这可能会导致一长串字符串,例如←[?25h←[?25l正在显示,有时会出错The parameter is incorrect要解决此问题,请更新到 Win 10 22H1 或更高版本。ollama.cadn.net.cn

结果 匹配 ”"

    没有匹配 “ 的结果"