Wie Ollama parallele Anfragen verarbeitet
Konfigurieren Sie ollama für die parallele Ausführung von Anfragen.
Wenn der Ollama-Server zwei Anfragen gleichzeitig erhält, hängt sein Verhalten von seiner Konfiguration und den verfügbaren Systemressourcen ab.
Konkurrenzverarbeitung
-
Parallele Verarbeitung: Ollama unterstützt die parallele Verarbeitung von Anfragen. Wenn das System genügend verfügbaren Speicher (RAM für CPU-Verarbeitung, VRAM für GPU-Verarbeitung) hat, können mehrere Modelle gleichzeitig geladen werden, und jedes geladene Modell kann mehrere Anfragen parallel verarbeiten. Dies wird durch die Umgebungsvariable
OLLAMA_NUM_PARALLEL
gesteuert, die die maximale Anzahl paralleller Anfragen angibt, die jedes Modell gleichzeitig verarbeiten kann. Standardmäßig ist dies auf 4 (oder 1, je nach Speicherverfügbarkeit) eingestellt, kann aber angepasst werden. -
Batchverarbeitung: Wenn mehrere Anfragen für dasselbe Modell gleichzeitig eintreffen, gruppiert Ollama sie und verarbeitet sie gemeinsam. Das bedeutet, dass beide Anfragen parallel verarbeitet werden und die Benutzer gleichzeitig Antworten empfangen. Der Server wartet nicht absichtlich, um einen Batch zu füllen; die Verarbeitung beginnt, sobald Anfragen vorliegen.
Warteschlange und Grenzen
-
Warteschlange: Wenn die Anzahl der parallellen Anfragen die konfigurierte Parallelität überschreitet (z. B. mehr als
OLLAMA_NUM_PARALLEL
Anfragen für ein Modell), werden zusätzliche Anfragen in die Warteschlange gestellt. Die Warteschlange funktioniert nach dem First-In-First-Out-Prinzip (FIFO). -
Warteschlangengrenzen: Die maximale Anzahl der in der Warteschlange befindlichen Anfragen wird durch
OLLAMA_MAX_QUEUE
(Standardwert: 512) gesteuert. Wenn die Warteschlange voll ist, erhalten neue Anfragen einen 503-Fehler, der anzeigt, dass der Server überlastet ist. -
Modellladen: Die Anzahl der verschiedenen Modelle, die gleichzeitig geladen werden können, wird durch
OLLAMA_MAX_LOADED_MODELS
gesteuert. Wenn eine Anfrage das Laden eines neuen Modells erfordert und der Speicher nicht ausreicht, entlädt Ollama inaktive Modelle, um Platz zu schaffen, und die Anfrage wird in die Warteschlange gestellt, bis das Modell geladen ist.
Beispiel-Szenario
Wenn zwei Anfragen für dasselbe Modell gleichzeitig eintreffen und die Parallelität des Servers auf mindestens 2 eingestellt ist, werden beide Anfragen gemeinsam in einem Batch verarbeitet, und beide Benutzer erhalten gleichzeitig Antworten. Wenn die Parallelität auf 1 eingestellt ist, wird eine Anfrage sofort verarbeitet, und die andere wird in die Warteschlange gestellt, bis die erste abgeschlossen ist.
Wenn die Anfragen für unterschiedliche Modelle sind und genügend Speicher vorhanden ist, können beide Modelle geladen werden, und die Anfragen werden parallel verarbeitet. Wenn nicht, muss ein Modell entladen werden, und die Anfrage wird in die Warteschlange gestellt.
Zusammenfassungstabelle
Szenario | Ergebnis |
---|---|
Zwei Anfragen, gleiche Modelle, genügend Parallelität | Beide werden parallel (in Batch) verarbeitet |
Zwei Anfragen, gleiche Modelle, Parallelität=1 | Eine wird verarbeitet, die zweite wartet, bis die erste abgeschlossen ist |
Zwei Anfragen, unterschiedliche Modelle, genügend Speicher | Beide Modelle werden geladen, Anfragen werden parallel verarbeitet |
Zwei Anfragen, unterschiedliche Modelle, nicht genügend Speicher | Eine wartet, bis Speicher verfügbar ist oder ein Modell entladen wurde |
Zusammenfassend ist Ollama so konzipiert, dass es mehrere gleichzeitige Anfragen effizient verarbeitet, vorausgesetzt, der Server ist für Parallelität konfiguriert und verfügt über ausreichende Ressourcen. Andernfalls werden Anfragen in die Warteschlange gestellt und in Reihenfolge verarbeitet.
Umgang mit unzureichendem Speicher
Wenn Ollama nicht genügend Speicher zur Verarbeitung eingehender Anfragen hat, setzt es eine Kombination aus Warteschlangemechanismen und Ressourcenverwaltungsstrategien ein, um die Stabilität zu gewährleisten:
Warteschlange
- Neue Anfragen werden in eine FIFO-(First-In, First-Out)-Warteschlange gestellt, wenn Speicher nicht sofort zugewiesen werden kann.
- Die Warteschlangengröße wird durch
OLLAMA_MAX_QUEUE
(Standardwert: 512 Anfragen) gesteuert. - Wenn die Warteschlange ihre Kapazität erreicht, erhalten neue Anfragen einen 503-Fehler „Server überlastet“.
Modellverwaltung
- Aktive Modelle können aus dem Speicher entladen werden, wenn sie inaktiv werden, um Ressourcen für wartende Anfragen freizugeben.
- Die Anzahl der gleichzeitig geladenen Modelle ist durch
OLLAMA_MAX_LOADED_MODELS
(Standardwert: 3×GPU-Zahl oder 3 für CPU) begrenzt.
Speicheroptimierung
- Versuche, Anfragen für dasselbe Modell in Batch zu verarbeiten, um die Speichereffizienz zu maximieren.
- Für GPU-Verarbeitung ist eine vollständige VRAM-Zuordnung pro Modell erforderlich – partielle Ladevorgänge werden nicht unterstützt.
Fehlerszenarien
Kritische Speichererschöpfung: Wenn selbst wartende Anfragen die verfügbaren Ressourcen überschreiten, kann Ollama:
- Auf die Festplatte auslagern (leistungsfähigkeitsstarkes Verlust)
- „Out of memory“-Fehler zurückgeben
- Im Extremfall das Modellinstanz abstürzen lassen
Konfigurationsparameter | Zweck | Standardwert |
---|---|---|
OLLAMA_MAX_QUEUE | Maximale Anzahl wartender Anfragen | 512 |
OLLAMA_NUM_PARALLEL | Parallele Anfragen pro geladenem Modell | 4 (oder 1, wenn begrenzt) |
OLLAMA_MAX_LOADED_MODELS | Maximale Anzahl gleichzeitig geladener Modelle | 3×GPU-Zahl oder 3 |
Administratoren sollten den Speicherbedarf überwachen und diese Parameter entsprechend der Hardwarekapazitäten anpassen. Die Umgang mit unzureichendem Speicher wird besonders wichtig, wenn größere Modelle (7B+ Parameter) ausgeführt oder mehrere parallelle Anfragen verarbeitet werden.
Ollama-Optimierungsstrategien
Aktiviere GPU-Beschleunigung mit export OLLAMA_CUDA=1
und setze CPU-Threads mit export OLLAMA_NUM_THREADS=84
.
Hardware-Verbesserungen
- RAM: 32GB+ für 13B-Modelle, 64GB+ für 70B-Modelle
- Speicher: NVMe-SSDs für schnellere Modellladung/Wechsel
- GPU: NVIDIA RTX 3080/4090 mit 16GB+ VRAM für größere Modelle
Betriebsstrategien
- Batch-Anfragen: Verarbeite mehrere Abfragen gleichzeitig, um die Speicherüberhead zu amortisieren
- Automatisches Entladen von Modellen: Lasse Ollama inaktive Modelle aus dem Speicher entfernen
- Cache häufig genutzte Modelle: Halte häufig genutzte Modelle im Speicher
Überwachung und Fehlerbehebung
- Nutze
nvidia-smi
(GPU) undhtop
(CPU/RAM), um Engpässe zu identifizieren - Bei Speicherfehlern:
- Upgrade auf quantisierte Modelle
- Reduziere parallelle Anfragen
- Erhöhe den Swap-Raum
Beispiel für eine Optimierungsworkflow:
# Nutze quantisiertes Modell mit GPU-Beschleunigung
export OLLAMA_CUDA=1
ollama run llama2:7b-q4_0 --context-size 2048
# Begrenze geladene Modelle und parallelle Anfragen
export OLLAMA_MAX_LOADED_MODELS=2
export OLLAMA_NUM_PARALLEL=4
Diese Anpassungen können den Speicherbedarf um 30–60 % reduzieren, während die Antwortqualität erhalten bleibt, insbesondere wenn mehrere Modelle ausgeführt oder viele Anfragen verarbeitet werden.
Ollama: Batchverarbeitung von Anfragen vs. parallele Ausführung
Batchverarbeitung bei Ollama bezieht sich auf die Praxis, mehrere eingehende Anfragen zu gruppieren und sie als Einheit zu verarbeiten. Dies ermöglicht eine effizientere Nutzung der Rechenressourcen, insbesondere bei Hardware, die von parallelen Operationen profitiert (z. B. GPUs).
Wenn mehrere Anfragen für dasselbe Modell gleichzeitig eintreffen, kann Ollama sie, sofern der Speicher es zulässt, gemeinsam in einem Batch verarbeiten. Dies erhöht die Durchsatzleistung und kann die Latenz pro Anfrage reduzieren, da das Modell optimierte Matrixoperationen über den Batch nutzen kann.
Batchverarbeitung ist besonders effektiv, wenn Anfragen in Größe und Komplexität ähnlich sind, da dies eine bessere Hardwareauslastung ermöglicht.
Parallele Ausführung bei Ollama bedeutet, mehrere Anfragen gleichzeitig zu verarbeiten, entweder für dasselbe Modell oder für unterschiedliche Modelle, abhängig von der verfügbaren Speicher und der Konfiguration.
Ollama unterstützt zwei Ebenen der Parallelität:
- Mehrfaches Modellladen: Wenn genügend Speicher vorhanden ist, können mehrere Modelle geladen werden und gleichzeitig Anfragen bearbeiten.
- Parallele Anfragen pro Modell: Jedes geladene Modell kann mehrere Anfragen parallel verarbeiten, was durch die Einstellung
OLLAMA_NUM_PARALLEL
(Standardwert ist 1 oder 4, je nach Speicher) gesteuert wird.
Wenn Anfragen die Parallelitätsgrenze überschreiten, werden sie in die Warteschlange (FIFO) gestellt, bis OLLAMA_MAX_QUEUE
erreicht ist.
Zusammenfassung
Ollama nutzt sowohl Batchverarbeitung als auch parallele Ausführung, um mehrere Anfragen effizient zu verarbeiten. Batchverarbeitung gruppiert Anfragen für gleichzeitige Verarbeitung, während parallele Ausführung mehrere Anfragen (oder Modelle) gleichzeitig laufen lässt. Beide Methoden hängen vom Systemspeicher ab und sind für optimale Leistung konfigurierbar.
Nützliche Links
- Ollama Cheatsheet
- Ollama-Modelle auf andere Laufwerk oder Ordner verschieben
- Wie Ollama Intel CPU-Performance und effiziente Kerne nutzt
- Ollama Space
- Selbsthosting von Perplexica mit Ollama
- Testen von Deepseek-r1 auf Ollama
- Wie Ollama parallelle Anfragen verarbeitet
- Testen von Deepseek-r1 auf Ollama
- Python Cheatsheet
- Python Space
- Wiedereinordnen von Textdokumenten mit Ollama und Qwen3 Embedding-Modell – in Go