Wie Ollama parallele Anfragen verarbeitet
„Konfigurieren von ollama für parallelle Anfragenbearbeitung.“
Wenn der Ollama-Server zwei Anfragen gleichzeitig erhält, hängt sein Verhalten von seiner Konfiguration und den verfügbaren Systemressourcen ab.
Für weitere Informationen zu Durchsatz, Latenz, VRAM und Benchmarks über Laufzeiten und Hardware siehe LLM Performance: Benchmarks, Bottlenecks & Optimization.

Concurrent Request Handling
-
Parallelverarbeitung: Ollama unterstützt die parallelle 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_PARALLELgesteuert, die die maximale Anzahl paralleller Anfragen festlegt, 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. Dies bedeutet, dass beide Anfragen parallel verarbeitet werden und die Benutzer gleichzeitig Antworten erhalten. Der Server wartet nicht gezielt, 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_PARALLELAnfragen für ein Modell), werden zusätzliche Anfragen in die Warteschlange gestellt. Die Warteschlange arbeitet nach dem FIFO-Prinzip (First-In, First-Out). -
Warteschlangengrenzen: Die maximale Anzahl von Anfragen in der Warteschlange wird durch
OLLAMA_MAX_QUEUE(Standard: 512) gesteuert. Wenn die Warteschlange voll ist, erhalten neue Anfragen einen Fehler 503, der anzeigt, dass der Server überlastet ist. -
Modellladen: Die Anzahl der verschiedenen Modelle, die gleichzeitig geladen werden können, wird durch
OLLAMA_MAX_LOADED_MODELSgesteuert. 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 verschiedene 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 verarbeitet (Batch) |
| Zwei Anfragen, gleiche Modelle, Parallelität=1 | Eine wird verarbeitet, die zweite wird in die Warteschlange gestellt, bis die erste abgeschlossen ist |
| Zwei Anfragen, verschiedene Modelle, genügend Speicher | Beide Modelle werden geladen, Anfragen werden parallel verarbeitet |
| Zwei Anfragen, verschiedene Modelle, nicht genügend Speicher | Eine wird in die Warteschlange gestellt, bis Speicher verfügbar ist oder ein Modell entladen wird |
Zusammenfassend ist Ollama so konzipiert, dass es mehrere gleichzeitige Anfragen effizient verarbeitet, vorausgesetzt, der Server ist für Konkurrenz konfiguriert und hat ausreichend Ressourcen. Andernfalls werden Anfragen in die Warteschlange gestellt und in der Reihenfolge verarbeitet.
Umgang mit Speicherproblemen
Wenn Ollama nicht genügend Speicher zur Verarbeitung eingehender Anfragen hat, setzt es eine Kombination aus Warteschlangemechanismen und Ressourcenmanagementstrategien ein, um die Stabilität zu gewährleisten:
Anfragen in die Warteschlange stellen
- 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(Standard: 512 Anfragen) gesteuert. - Wenn die Warteschlange ihre Kapazität erreicht, erhalten neue Anfragen einen Fehler 503 “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(Standard: 3×GPU-Anzahl oder 3 für CPU) begrenzt.
Speicheroptimierung
- Versuche, Anfragen für dasselbe Modell in Batches zu verarbeiten, um die Speichereffizienz zu maximieren.
- Für GPU-Verarbeitung ist eine vollständige VRAM-Zuordnung pro Modell erforderlich – Teilbeladungen werden nicht unterstützt.
Fehlerfälle
Kritische Speichererschöpfung: Wenn selbst wartende Anfragen die verfügbaren Ressourcen überschreiten, kann Ollama:
- Auf die Festplatte auslagern (sehr starken Leistungsabbau verursachen)
- Fehlermeldungen “out of memory” zurückgeben
- Im äußersten Fall das Modellinstanz abstürzen lassen
| Konfigurationskontrollparameter | Zweck | Standardwert |
|---|---|---|
| OLLAMA_MAX_QUEUE | Maximale Anzahl wartender Anfragen | 512 |
| OLLAMA_NUM_PARALLEL | Anzahl paralleller Anfragen pro geladenem Modell | 4 (oder 1, wenn begrenzt) |
| OLLAMA_MAX_LOADED_MODELS | Maximale Anzahl gleichzeitig geladener Modelle | 3×GPU-Anzahl oder 3 |
Administratoren sollten den Speicherverbrauch überwachen und diese Parameter basierend auf den Hardwarekapazitäten anpassen. Der Umgang mit Speicherproblemen 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.
Hardwareverbesserungen
- RAM: 32 GB+ für 13B-Modelle, 64 GB+ für 70B-Modelle
- Speicher: NVMe-SSDs für schnellere Modellladung/Wechsel
- GPU: NVIDIA RTX 3080/4090 mit 16 GB+ VRAM für größere Modelle
Betriebsstrategien
- Batchverarbeitung: Verarbeite mehrere Anfragen gleichzeitig, um die Speicherlast zu verteilen
- Automatisches Entladen von Modellen: Ermögliche Ollama, inaktive Modelle aus dem Speicher zu entfernen
- Cache häufig verwendeter 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 Speicherverbrauch um 30–60 % reduzieren, während die Antwortqualität erhalten bleibt, insbesondere bei der Ausführung mehrerer Modelle oder bei der Verarbeitung großer Anfragevolumina.
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 parallellen 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 den Durchsatz 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 verschiedene Modelle, je nach verfügbarem Speicher und Konfiguration.
Ollama unterstützt zwei Ebenen der Parallelität:
- Laden mehrerer Modelle: Wenn genügend Speicher vorhanden ist, können mehrere Modelle geladen werden und gleichzeitig Anfragen verarbeiten.
- Parallele Anfragen pro Modell: Jedes geladene Modell kann mehrere Anfragen parallel verarbeiten, gesteuert durch die Einstellung
OLLAMA_NUM_PARALLEL(Standard ist 1 oder 4, je nach Speicher).
Wenn Anfragen die Parallelitätsgrenze überschreiten, werden sie in die Warteschlange gestellt (FIFO) bis zu OLLAMA_MAX_QUEUE.
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 ausführen lässt. Beide Methoden hängen vom Systemspeicher ab und sind für optimale Leistung konfigurierbar.
Für weitere Benchmarks, Konfigurationen für Konkurrenz und Leitfaden zur Leistung, siehe unsere LLM Performance: Benchmarks, Bottlenecks & Optimization-Zentrale.