有時 Ollama 可能無法正常運作。釐清問題發生的最佳方式之一,就是查看日誌。在 Mac 上,可以透過執行以下指令找到日誌:
shell
cat ~/.ollama/logs/server.log使用 systemd 的 Linux 系統,可以透過以下指令查詢日誌:
shell
journalctl -u ollama --no-pager --follow --pager-end在 容器 中執行 Ollama 時,日誌會輸出到容器的 stdout/stderr:
shell
docker logs <container-name>(使用 docker ps 查詢容器名稱)
如果在終端機手動執行 ollama serve,日誌會直接輸出到該終端機。
在 Windows 上執行 Ollama 時,日誌有多個儲存位置。你可以按下 <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 內建多個針對不同 GPU 與 CPU 向量功能編譯的 LLM 函式庫。Ollama 會根據系統能力自動選擇最適合的函式庫。如果自動偵測出現問題,或是遇到其他問題(例如 GPU 當機),你可以強制指定使用特定的 LLM 函式庫來繞過問題。其中 cpu_avx2 效能最佳,其次是 cpu_avx,而速度最慢但相容性最高的是 cpu。MacOS 下的 Rosetta 模擬可以使用 cpu 函式庫。
在伺服器日誌中,你會看到類似以下的訊息(不同版本可能略有差異):
Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]實驗性 LLM 函式庫覆寫
你可以將 OLLAMA_LLM_LIBRARY 環境變數設定為任何可用的 LLM 函式庫來繞過自動偵測。例如,如果你有 CUDA 顯示卡,但想強制使用支援 AVX2 向量指令的 CPU LLM 函式庫,可以執行:
shell
OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve你可以透過以下指令查看 CPU 支援的功能:
shell
cat /proc/cpuinfo| grep flags | head -1在 Linux 上安裝舊版或預覽版本
如果你在 Linux 上遇到問題,想要安裝舊版本,或是想在正式發布前測試預覽版本,可以透過指定版本號碼讓安裝腳本安裝對應版本。
shell
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.7 shLinux tmp 的 noexec 設定
如果你的系統在 Ollama 儲存臨時可執行檔的目錄上設定了「noexec」標誌,你可以將 OLLAMA_TMPDIR 環境變數設定為 Ollama 執行使用者有寫入權限的其他位置,例如 OLLAMA_TMPDIR=/usr/share/ollama/
Linux 上的 Docker
如果 Ollama 最初在 Docker 容器中可以使用 GPU,但一段時間後伺服器日誌出現 GPU 探索失敗的錯誤,並切換到 CPU 執行,可以透過停用 Docker 的 systemd cgroup 管理來解決這個問題。請編輯主機上的 /etc/docker/daemon.json 檔案,在 Docker 設定中加入 "exec-opts": ["native.cgroupdriver=cgroupfs"]。
NVIDIA GPU 探索
Ollama 啟動時,會先盤點系統中的 GPU,以判斷相容性與可用 VRAM 容量。有時探索流程會無法偵測到 GPU,通常執行最新版的驅動程式能獲得最佳效果。
Linux 上的 NVIDIA 故障排查
如果你使用容器執行 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後重新執行,以取得更多診斷日誌 - 使用
sudo dmesg | grep -i nvrm與sudo dmesg | grep -i nvidia檢查 dmesg 中的錯誤訊息
AMD GPU 探索
在 Linux 上,要存取 AMD GPU,通常需要加入 video 與/或 render 群組才能存取 /dev/kfd 裝置。如果權限設定不正確,Ollama 會偵測到這個問題並在伺服器日誌中回報錯誤。
在容器中執行時,部分 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 無法正確探索或使用 GPU 進行推論的問題,以下方法可能有助於定位故障原因:
AMD_LOG_LEVEL=3:在 AMD HIP/ROCm 函式庫中啟用資訊等級日誌,可以顯示更詳細的錯誤碼,協助排查問題OLLAMA_DEBUG=1:在 GPU 探索過程中會回報額外資訊- 使用
sudo dmesg | grep -i amdgpu與sudo dmesg | grep -i kfd檢查 amdgpu 或 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。
要解決這個問題,請使用 AMD ROCm 說明文件 中的 amdgpu-install 工具升級到 ROCm v7 驅動程式。升級完成後重新啟動系統,並重新啟動 Ollama。
多張 AMD GPU
如果你在 Linux 上使用多張 AMD GPU 載入模型時出現亂碼回應,請參考以下指南。
Windows 終端機錯誤
較舊版本的 Windows 10(例如 21H1)存在一個已知錯誤,會導致標準終端機程式無法正確顯示控制字元,進而顯示出類似 ←[?25h←[?25l 的長字串,有時還會出現 The parameter is incorrect 的錯誤。要解決這個問題,請更新到 Windows 10 22H1 或更新版本。