Skip to content

Manchmal funktioniert Ollama nicht wie erwartet. Eine der besten Methoden, um herauszufinden, was passiert ist, ist einen Blick in die Protokolle zu werfen. Finden Sie die Protokolle auf Mac, indem Sie den folgenden Befehl ausführen:

shell
cat ~/.ollama/logs/server.log

Auf Linux-Systemen mit systemd finden Sie die Protokolle mit diesem Befehl:

shell
journalctl -u ollama --no-pager --follow --pager-end

Wenn Sie Ollama in einem Container ausführen, werden die Protokolle an stdout/stderr im Container ausgegeben:

shell
docker logs <container-name>

(Verwenden Sie docker ps, um den Containernamen zu finden)

Wenn Sie ollama serve manuell in einem Terminal ausführen, befinden sich die Protokolle in diesem Terminal.

Wenn Sie Ollama auf Windows ausführen, gibt es mehrere verschiedene Speicherorte. Sie können diese im Explorer-Fenster anzeigen, indem Sie <cmd>+R drücken und Folgendes eingeben:

  • explorer %LOCALAPPDATA%\Ollama zum Anzeigen der Protokolle. Die aktuellsten Serverprotokolle befinden sich in server.log, ältere Protokolle in server-#.log
  • explorer %LOCALAPPDATA%\Programs\Ollama zum Durchsuchen der Binärdateien (Der Installer fügt dies zu Ihrem Benutzer-PATH hinzu)
  • explorer %HOMEPATH%\.ollama zum Durchsuchen des Speicherorts von Modellen und Konfiguration
  • explorer %TEMP% wo temporäre ausführbare Dateien in einem oder mehreren ollama*-Verzeichnissen gespeichert werden

Um zusätzliche Debug-Protokollierung zur Fehlerbehebung zu aktivieren, beenden Sie zuerst die laufende App aus dem Tray-Menü und geben Sie dann in einem PowerShell-Terminal ein:

powershell
$env:OLLAMA_DEBUG="1"
& "ollama app.exe"

Treten Sie dem Discord bei, um Hilfe bei der Interpretation der Protokolle zu erhalten.

LLM-Bibliotheken

Ollama enthält mehrere kompilierte LLM-Bibliotheken für verschiedene GPUs und CPU-Vektorfunktionen. Ollama wählt automatisch die beste Bibliothek basierend auf den Fähigkeiten Ihres Systems aus. Wenn diese automatische Erkennung Probleme hat oder Sie auf andere Probleme stoßen (z. B. Abstürze Ihrer GPU), können Sie dies umgehen, indem Sie eine bestimmte LLM-Bibliothek erzwingen. cpu_avx2 bietet die beste Leistung, gefolgt von cpu_avx, und die langsamste, aber kompatibelste ist cpu. Die Rosetta-Emulation unter macOS funktioniert mit der cpu-Bibliothek.

Im Serverprotokoll sehen Sie eine Meldung, die in etwa so aussieht (variiert je nach Version):

Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]

Experimentelle LLM-Bibliotheksüberschreibung

Sie können OLLAMA_LLM_LIBRARY auf eine der verfügbaren LLM-Bibliotheken setzen, um die automatische Erkennung zu umgehen. Wenn Sie also eine CUDA-Grafikkarte haben, aber die CPU-LLM-Bibliothek mit AVX2-Vektorunterstützung erzwingen möchten, verwenden Sie:

shell
OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve

Sie können die Funktionen Ihrer CPU mit Folgendem überprüfen.

shell
cat /proc/cpuinfo| grep flags | head -1

Installation älterer oder Vorabversionen unter Linux

Wenn Sie unter Linux Probleme haben und eine ältere Version installieren möchten oder eine Vorabversion vor der offiziellen Veröffentlichung ausprobieren möchten, können Sie dem Installationsskript angeben, welche Version installiert werden soll.

shell
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.7 sh

Linux tmp noexec

Wenn Ihr System mit dem „noexec“-Flag konfiguriert ist, wo Ollama seine temporären ausführbaren Dateien speichert, können Sie einen alternativen Speicherort angeben, indem Sie OLLAMA_TMPDIR auf einen Speicherort setzen, der für den Benutzer, unter dem Ollama ausgeführt wird, beschreibbar ist. Beispielsweise OLLAMA_TMPDIR=/usr/share/ollama/

Linux Docker

Wenn Ollama anfänglich auf der GPU in einem Docker-Container funktioniert, dann aber nach einiger Zeit mit Fehlern im Serverprotokoll, die GPU-Erkennungsfehler melden, auf die CPU umschaltet, kann dies durch Deaktivieren der systemd-Cgroup-Verwaltung in Docker behoben werden. Bearbeiten Sie /etc/docker/daemon.json auf dem Host und fügen Sie "exec-opts": ["native.cgroupdriver=cgroupfs"] zur Docker-Konfiguration hinzu.

NVIDIA GPU-Erkennung

Wenn Ollama startet, nimmt es eine Bestandsaufnahme der im System vorhandenen GPUs vor, um die Kompatibilität und den verfügbaren VRAM zu bestimmen. Manchmal kann diese Erkennung Ihre GPUs nicht finden. Im Allgemeinen liefert die Verwendung des neuesten Treibers die besten Ergebnisse.

Linux NVIDIA-Fehlerbehebung

Wenn Sie Ollama in einem Container ausführen, stellen Sie sicher, dass Sie die Container-Laufzeit zuerst wie unter docker beschrieben eingerichtet haben.

Manchmal kann Ollama Schwierigkeiten bei der Initialisierung der GPU haben. Wenn Sie die Serverprotokolle überprüfen, kann dies in verschiedenen Fehlercodes auftauchen, wie z. B. „3“ (nicht initialisiert), „46“ (Gerät nicht verfügbar), „100“ (kein Gerät), „999“ (unbekannt) oder andere. Die folgenden Fehlerbehebungstechniken können helfen, das Problem zu lösen:

  • Wenn Sie einen Container verwenden, funktioniert die Container-Laufzeit? Probieren Sie docker run --gpus all ubuntu nvidia-smi aus – wenn das nicht funktioniert, kann Ollama Ihre NVIDIA-GPU nicht erkennen.
  • Ist der uvm-Treiber geladen? sudo nvidia-modprobe -u
  • Versuchen Sie, den nvidia_uvm-Treiber neu zu laden – sudo rmmod nvidia_uvm dann sudo modprobe nvidia_uvm
  • Versuchen Sie einen Neustart
  • Stellen Sie sicher, dass Sie die neuesten NVIDIA-Treiber verwenden

Wenn keine dieser Maßnahmen das Problem löst, sammeln Sie zusätzliche Informationen und reichen Sie ein Issue ein:

  • Setzen Sie CUDA_ERROR_LEVEL=50 und versuchen Sie es erneut, um mehr Diagnoseprotokolle zu erhalten
  • Überprüfen Sie dmesg auf Fehler mit sudo dmesg | grep -i nvrm und sudo dmesg | grep -i nvidia

AMD GPU-Erkennung

Unter Linux erfordert der Zugriff auf AMD-GPUs normalerweise die Mitgliedschaft in der Gruppe video und/oder render, um auf das /dev/kfd-Gerät zuzugreifen. Wenn die Berechtigungen nicht korrekt eingerichtet sind, erkennt Ollama dies und meldet einen Fehler im Serverprotokoll.

Bei der Ausführung in einem Container kann der Ollama-Prozess in einigen Linux-Distributionen und Container-Laufzeiten nicht auf die GPU zugreifen. Verwenden Sie ls -lnd /dev/kfd /dev/dri /dev/dri/* auf dem Host-System, um die numerischen Gruppen-IDs auf Ihrem System zu ermitteln, und übergeben Sie zusätzliche --group-add ...-Argumente an den Container, damit er auf die erforderlichen Geräte zugreifen kann. Beispielsweise ist in der folgenden Ausgabe crw-rw---- 1 0 44 226, 0 Sep 16 16:55 /dev/dri/card0 die Spalte der Gruppen-ID 44

Wenn Sie Probleme haben, dass Ollama Ihre GPU korrekt für die Inferenz erkennt oder verwendet, kann Folgendes helfen, den Fehler einzugrenzen:

  • AMD_LOG_LEVEL=3 Aktiviert Informationsprotokollebenen in den AMD HIP/ROCm-Bibliotheken. Dies kann helfen, detailliertere Fehlercodes anzuzeigen, die bei der Fehlerbehebung helfen
  • OLLAMA_DEBUG=1 Während der GPU-Erkennung werden zusätzliche Informationen ausgegeben
  • Überprüfen Sie dmesg auf Fehler der amdgpu- oder kfd-Treiber mit sudo dmesg | grep -i amdgpu und sudo dmesg | grep -i kfd

AMD-Treiberversionskonflikt

Wenn Ihre AMD-GPU unter Linux nicht erkannt wird und die Serverprotokolle Meldungen wie die folgenden enthalten:

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

bedeutet dies normalerweise, dass der AMD-GPU-Treiber des Systems zu alt ist. Ollama enthält ROCm 7 Linux-Bibliotheken, die einen kompatiblen ROCm 7-Kerneltreiber erfordern. Wenn das System einen älteren Treiber (ROCm 6.x oder früher) verwendet, hängt die GPU-Initialisierung während der Geräteerkennung und läuft schließlich in einen Timeout, sodass Ollama auf die CPU zurückfällt.

Um dies zu beheben, aktualisieren Sie auf den ROCm v7-Treiber mit dem amdgpu-install-Dienstprogramm aus der ROCm-Dokumentation von AMD. Starten Sie nach der Aktualisierung neu und starten Sie Ollama neu.

Mehrere AMD-GPUs

Wenn Sie bei Modellen, die über mehrere AMD-GPUs unter Linux geladen werden, unverständliche Antworten erhalten, lesen Sie die folgende Anleitung.

Windows-Terminalfehler

Ältere Versionen von Windows 10 (z. B. 21H1) haben einen bekannten Fehler, bei dem das Standardterminalprogramm Steuerzeichen nicht korrekt anzeigt. Dies kann zu einer langen Zeichenkette wie ←[?25h←[?25l führen, die manchmal mit der Meldung The parameter is incorrect fehlschlägt. Um dieses Problem zu beheben, aktualisieren Sie bitte auf Windows 10 22H1 oder neuer.