Skip to content

Ollamaが期待通りに動作しない場合があります。何が起こったかを把握する最善の方法の1つは、ログを確認することです。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% では、1つ以上の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 sh

Linuxのtmp noexec

Ollamaが一時実行ファイルを保存する場所に"noexec"フラグが設定されている場合、OLLAMA_TMPDIRをOllamaが実行されるユーザーが書き込み可能な場所に設定することで、代替場所を指定できます。例:OLLAMA_TMPDIR=/usr/share/ollama/

LinuxのDocker

Dockerコンテナ内でOllamaが最初は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 nvrmsudo dmesg | grep -i nvidiaでdmesgのエラーを確認してください

AMD GPUの検出

Linuxでは、AMD GPUへのアクセスには通常、/dev/kfdデバイスにアクセスするためのvideoおよび/またはrenderグループへのメンバーシップが必要です。権限が正しく設定されていない場合、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 amdgpusudo dmesg | grep -i kfdで、amdgpuまたはkfdドライバからのエラーをdmesgで確認してください。

AMDドライバーバージョンの不一致

LinuxでAMD GPUが検出されず、サーバーログに次のようなメッセージが含まれている場合:

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

これは通常、システムのAMD GPUドライバーが古すぎることを意味します。Ollamaには、互換性のあるROCm 7カーネルドライバーを必要とするROCm 7 Linuxライブラリがバンドルされています。システムが古いドライバー(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というエラーが発生したりすることがあります。この問題を解決するには、Win 10 22H1以降に更新してください。