Ollama-Geschwindigkeit optimieren
Was dieser Artikel über Ollama-Geschwindigkeit behandelt
- Faktoren, die Ollama verlangsamen.
- Flash Attention und ggml-Optimierungen.
- KV-Cache und seine Auswirkungen.
- Quantisierung und Modellgrösse.
- Praktische Konfiguration und Befehle.
Einleitung: Ollama-Geschwindigkeit optimieren
Ollama ist einfach zu bedienen, aber wer maximale Geschwindigkeit aus der Hardware herausholen möchte, muss einige Details verstehen. Langsame Tokens pro Sekunde entstehen oft durch suboptimale Quantisierung, unnötig grosse Kontexte, CPU- statt GPU-Betrieb oder fehlende Optimierungen wie Flash Attention. Mit der richtigen Konfiguration lassen sich in vielen Fällen deutliche Steigerungen erzielen.
Dieser Artikel zeigt, welche Hebel es gibt, um Ollama schneller zu machen.
Wichtige Begriffe
- Flash Attention: Speicher-effiziente Attention-Berechnung.
- KV-Cache: Zwischenspeicher für Schlüssel-Werte-Paare.
- Quantisierung: Reduktion der Modellpräzision.
- num_gpu: Anzahl GPU-Layers, die auf GPU ausgeführt werden.
- num_thread: CPU-Threads.
- batch_size: Anzahl Tokens, die gleichzeitig verarbeitet werden.
- mlock: RAM-Reservierung verhindern Swapping.
- f16_kv: KV-Cache im halb-float-Format.
Wichtigste Hebel
GPU statt CPU nutzen
ollama run llama3.1
Falls Ollama auf CPU läuft, prüfen:
nvidia-smi
oder
rocm-smi
Ollama muss mit CUDA oder ROCm erkannt werden.
Mehr GPU-Layer erzwingen
ollama run llama3.1 --verbose
Im API-Call:
{
"options": {
"num_gpu": 50
}
}
num_gpu definiert, wie viele Modell-Layer auf die GPU geladen werden.
Flash Attention aktivieren
Ollama nutzt Flash Attention, wenn es unterstützt wird. Einige Modelle brauchen spezielle Kompilierung oder ggml-Build mit Flash-Attention-Unterstützung. Neuere Ollama-Versionen aktivieren es oft automatisch.
Quantisierung reduzieren
Kleinere Quantisierung bedeutet weniger VRAM und schnellere Berechnung:
- Q4_0: schnell, geringe Qualität.
- Q4_K_M: guter Kompromiss.
- Q5_K_M: bessere Qualität.
- Q8_0: grosse Datei, hohe Qualität.
ollama run llama3.1:8b-instruct-q4_K_M
Kontext reduzieren
PARAMETER num_ctx 4096
Mehr Kontext = langsamer. Nicht grösser als nötig.
num_predict begrenzen
PARAMETER num_predict 512
Das verhindert überlange Antworten und begrenzt die Berechnungszeit.
CPU-Threads anpassen
Für reinen CPU-Betrieb:
ollama run llama3.1
Oder per Modelfile:
PARAMETER num_thread 8
mlock verwenden
Verhindert, dass Ollama ausgelagert wird:
PARAMETER use_mlock true
Speicher messen
Während der Ausführung beobachten:
watch -n 1 nvidia-smi
Falls VRAM voll ist, reduziert man Modellgrösse, Quantisierung oder Kontext.
Batch-Size
Längere Eingaben werden schneller, wenn num_batch erhöht wird:
PARAMETER num_batch 512
Aber nicht alle Modelle und Backends profitieren gleich.
Temperatur auf 0
Für reproduzierbare und etwas schnellere Tests:
PARAMETER temperature 0
Ollama aktualisieren
ollama -v
Neue Versionen enthalten oft Geschwindigkeitsverbesserungen.
Praxisbeispiel Modelfile
FROM llama3.1:8b-instruct-q4_K_M
PARAMETER num_ctx 4096
PARAMETER num_gpu 50
PARAMETER num_predict 512
PARAMETER use_mlock true
PARAMETER num_batch 512
PARAMETER temperature 0.7
Tipps
- Immer zuerst GPU-Nutzung prüfen.
- Kleinste passende Quantisierung wählen.
- Kontext nicht überdimensionieren.
- Ollama auf neueste Version halten.
- Benchmarks vor und nach der Optimierung fahren.
- Hardware-Temperatur beobachten.
Typische Stolpersteine
- Auf CPU statt GPU: Treiber oder Ollama-Installationsproblem.
- Zu hoher num_ctx: Speicher läuft voll, Geschwindigkeit sinkt.
- Nicht unterstützte Quantisierung: Modell fällt auf CPU zurück.
- Zuviel KV-Cache: Langsamer Prompt-Eval.
- Alte Ollama-Version: Flash Attention fehlt.
- Thermische Drosselung: Nach langer Last langsamer.
Weiterführende Links und Infos
- BotServ.de Ollama Modell-Benchmarks
- BotServ.de Ollama Performance
- BotServ.de Ollama Kontextlänge
- BotServ.de Ollama Quantisierung Praxis
FAQ: Ollama-Geschwindigkeit
Warum ist Ollama langsam? Meist CPU-Betrieb, zu grosses Modell, hoher Kontext oder thermische Drosselung.
Was ist der beste Weg, Ollama schneller zu machen? GPU nutzen, kleinere Quantisierung, Kontext reduzieren, Ollama aktuell halten.
Bringt Flash Attention viel? Ja, besonders bei langen Kontexten, aber nicht immer verfügbar.
Soll ich num_gpu ändern? Bei Problemen mit der automatischen Verteilung kann es helfen.
Hilft mehr RAM der CPU? Nur, wenn auf CPU gerechnet wird. Für GPU ist VRAM wichtiger.
Quellen und weiterführende Literatur
- Ollama Performance: https://github.com/ollama/ollama/blob/main/docs/troubleshooting.md
- Flash Attention: https://github.com/Dao-AILab/flash-attention
- llama.cpp: https://github.com/ggerganov/llama.cpp
Zusammenfassung: Ollama-Geschwindigkeit optimieren
Die Ollama-Geschwindigkeit lässt sich durch GPU-Nutzung, passende Quantisierung, Reduzierung des Kontexts und Cache-Optimierungen deutlich verbessern. Flash Attention und aktuelle Ollama-Versionen helfen zusätzlich. Wer regelmässig benchmarkt und Parameter wie num_ctx, num_predict und num_batch anpasst, findet die optimale Balance für eigene Hardware und Anwendungsfall.


