Wie Ollama parallele Anfragen verarbeitet

Verstehen Sie die Parallelität und Warteschlangentechnik von Ollama und lernen Sie, wie Sie OLLAMA_NUM_PARALLEL für stabile parallele Anfragen optimieren.

Inhaltsverzeichnis

Dieser Leitfaden erklärt, wie Ollama parallele Anfragen verarbeitet (Parallelität, Warteschlangen und Ressourcenlimits), und wie Sie dies über die OLLAMA_NUM_PARALLEL-Umgebungsvariable (und verwandte Einstellungen) optimieren können.

Schnelllinks: Was ist OLLAMA_NUM_PARALLEL? · Schnelle Optimierungsrezepte · Wie Warteschlangen funktionieren · Problembehebung · Verwandt: Ollama CLI-Befehle Cheat Sheet

Für weitere Informationen zu Durchsatz, Latenz, VRAM und Benchmarks über verschiedene Laufzeiten und Hardware hinweg, siehe LLM-Leistung: Benchmarks, Engpässe & Optimierung.

Multi-Step-Agenten multiplizieren Wiederholungsversuche, wenn die Stichprobenentnahme instabil ist; für Standardtemperaturen, top_p- und Penalty-Einstellungen bei Qwen- und Gemma-Modellen siehe Inferenzparameter für Agenten bei Qwen und Gemma.

fünf fantastische Lamas stehen im Feld

Parallele Anfrageverarbeitung

  • Parallele Verarbeitung: Ollama unterstützt die gleichzeitige Verarbeitung von Anfragen. Wenn das System genügend verfügbaren Speicher hat (RAM für CPU-Inferenz, VRAM für GPU-Inferenz), können mehrere Modelle gleichzeitig geladen werden, und jedes geladene Modell kann mehrere Anfragen parallel bearbeiten. Dies wird durch die Umgebungsvariable OLLAMA_NUM_PARALLEL gesteuert, die die maximale Anzahl paralleler Anfragen festlegt, die jedes Modell gleichzeitig verarbeiten kann. Standardmäßig ist dies auf 4 (oder 1, je nach Speicher availability) eingestellt, kann aber angepasst werden.

  • Batching: Wenn mehrere Anfragen für dasselbe Modell gleichzeitig eintreffen, fasst Ollama diese zu einem Batch zusammen und verarbeitet sie gemeinsam. Das bedeutet, dass beide Anfragen parallel bearbeitet werden und Nutzer die Antworten gleichzeitig als Stream erhalten. Der Server wartet nicht absichtlich, um einen Batch zu füllen; die Verarbeitung beginnt, sobald Anfragen verfügbar sind.

Warteschlangen und Limits

  • Warteschlangen: Wenn die Anzahl der gleichzeitigen Anfragen die konfigurierte Parallelität übersteigt (z. B. mehr als OLLAMA_NUM_PARALLEL Anfragen für ein Modell), werden zusätzliche Anfragen in eine Warteschlange gestellt. Die Warteschlange arbeitet nach dem First-In-First-Out-Prinzip (FIFO).

  • Warteschlangenlimits: Die maximale Anzahl von Anfragen in der Warteschlange wird durch OLLAMA_MAX_QUEUE gesteuert (Standard: 512). Wenn die Warteschlange voll ist, erhalten neue Anfragen einen 503-Fehler, der anzeigt, dass der Server überlastet ist.

  • Modellladung: 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.

Beispielszenario

Wenn zwei Anfragen für dasselbe Modell gleichzeitig eintreffen und die Parallelität des Servers auf mindestens 2 eingestellt ist, werden beide Anfragen zusammen in einem Batch verarbeitet, und beide Nutzer erhalten die Antworten gleichzeitig. 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 bestimmt sind und genügend Speicher verfügbar ist, können beide Modelle geladen und die Anfragen parallel bearbeitet werden. Falls nicht, muss möglicherweise ein Modell entladen werden, und die Anfrage wird in die Warteschlange gestellt.

Zusammenfassungstabelle

Szenario Ergebnis
Zwei Anfragen, gleiches Modell, genug Parallelität Beide werden parallel in einem Batch verarbeitet
Zwei Anfragen, gleiches Modell, Parallelität=1 Eine wird verarbeitet, die zweite wird in die Warteschlange gestellt, bis die erste abgeschlossen ist
Zwei Anfragen, verschiedene Modelle, genug Speicher Beide Modelle werden geladen, Anfragen werden parallel bearbeitet
Zwei Anfragen, verschiedene Modelle, nicht genug Speicher Eine wird in die Warteschlange gestellt, bis Speicher verfügbar ist oder ein Modell entladen wird

Zusammenfassend ist Ollama darauf ausgelegt, mehrere gleichzeitige Anfragen effizient zu verarbeiten, vorausgesetzt, der Server ist für Parallelität konfiguriert und verfügt über ausreichende Ressourcen. Andernfalls werden Anfragen in einer Warteschlange gehalten und nacheinander verarbeitet.

Umgang mit Speichermangel

Wenn Ollama feststellt, dass der Speicher nicht ausreicht, um eingehende Anfragen zu bearbeiten, wendet er eine Kombination aus Warteschlangenmechanismen und Ressourcenmanagementstrategien an, um die Stabilität aufrechtzuerhalten:

Anfragewarteschlange

  • Neue Anfragen werden in eine FIFO-Warteschlange (First-In, First-Out) gestellt, wenn Speicher nicht sofort zugewiesen werden kann.
  • Die Warteschlangengröße wird durch OLLAMA_MAX_QUEUE gesteuert (Standard: 512 Anfragen).
  • Wenn die Warteschlange voll ist, 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 Anfragen in der Warteschlange freizugeben.
  • Die Anzahl der gleichzeitig geladenen Modelle ist durch OLLAMA_MAX_LOADED_MODELS begrenzt (Standard: 3×GPU-Anzahl oder 3 für CPU).

Speicheroptimierung

  • Versuche, Anfragen für dasselbe Modell zu bündeln, um die Speichereffizienz zu maximieren.
  • Für die GPU-Inferenz ist die vollständige VRAM-Allokierung pro Modell erforderlich – partielle Ladevorgänge werden nicht unterstützt.

Fehlerszenarien

Kritischer Speichermangel: Wenn selbst Anfragen in der Warteschlange die verfügbaren Ressourcen übersteigen, kann Ollama:

  • Auf die Festplatte auslagern (was die Leistung stark beeinträchtigt)
  • „Out of Memory“-Fehler zurückgeben
  • In extremen Fällen die Modellinstanz abstürzen lassen
Konfigurationseinstellung Zweck Standardwert
OLLAMA_MAX_QUEUE Maximale Anzahl angefragter Warteschlangen 512
OLLAMA_NUM_PARALLEL Parallele Anfragen pro geladenem Modell 4 (oder 1 bei Einschränkung)
OLLAMA_MAX_LOADED_MODELS Maximal gleichzeitig geladene Modelle 3×GPU-Anzahl oder 3

Administratoren sollten die Speichernutzung überwachen und diese Parameter basierend auf den Hardwarefähigkeiten anpassen. Der Umgang mit Speichermangel wird entscheidend, wenn größere Modelle (7B+ Parameter) ausgeführt oder mehrere gleichzeitige Anfragen verarbeitet werden.

Ollama-Optimierungsstrategien

Aktivieren Sie die GPU-Beschleunigung mit export OLLAMA_CUDA=1 und legen Sie die CPU-Threads über export OLLAMA_NUM_THREADS=84 fest.

Hardwareverbesserungen

  • RAM: 32 GB+ für 13B-Modelle, 64 GB+ für 70B-Modelle
  • Speicher: NVMe-SSDs für schnelleres Laden/Swappen von Modellen
  • GPU: NVIDIA RTX 3080/4090 mit 16 GB+ VRAM für größere Modelle

Operative Strategien

  • Batch-Anfragen: Verarbeiten Sie mehrere Abfragen gleichzeitig, um den Speicheroverhead zu amortisieren
  • Automatische Modellentladung: Ermöglicht es Ollama, inaktive Modelle aus dem Speicher zu entfernen
  • Caching häufig genutzter Modelle: Halten Sie gängige Modelle im Speicher

Überwachung & Problembehebung

  • Verwenden Sie nvidia-smi (GPU) und htop (CPU/RAM), um Engpässe zu identifizieren
  • Bei Speicherfehlern:
  • Auf quantisierte Modelle umsteigen
  • Gleichzeitige Anfragen reduzieren
  • Swap-Speicher erhöhen

Beispiel für einen Optimierungsworkflow:

### Quantisiertes Modell mit GPU-Beschleunigung verwenden
export OLLAMA_CUDA=1
ollama run llama2:7b-q4_0 --context-size 2048

### Geladene Modelle und parallele Anfragen begrenzen
export OLLAMA_MAX_LOADED_MODELS=2
export OLLAMA_NUM_PARALLEL=4

Diese Anpassungen können den Speicherverbrauch um 30–60 % reduzieren und gleichzeitig die Antwortqualität aufrechterhalten, was besonders beim Ausführen mehrerer Modelle oder bei der Bearbeitung hoher Anfragevolumen von Vorteil ist.

Umgebungsvariable OLLAMA_NUM_PARALLEL

OLLAMA_NUM_PARALLEL steuert, wie viele Anfragen Ollama parallel ausführt. Wenn Sie mehrere Anfragen an denselben Ollama-Server senden, entscheidet diese Einstellung maßgeblich darüber, ob sie gleichzeitig ausgeführt oder in eine Warteschlange gestellt werden.

  • Höhere Werte können den Durchsatz erhöhen, wenn Sie genügend CPU/GPU/VRAM haben, können aber die Latenz und den Speicherdruk erhöhen.
  • Niedrigere Werte reduzieren die Konkurrenz um Ressourcen und können die Stabilität verbessern, aber Anfragen werden häufiger in die Warteschlange gestellt.

So legen Sie OLLAMA_NUM_PARALLEL fest

Linux / macOS (systemd-Dienst oder Shell):

export OLLAMA_NUM_PARALLEL=2
ollama serve

Einmalige Ausführung (Präfix nur für diesen Befehl):

OLLAMA_NUM_PARALLEL=2 ollama serve

Docker (Beispiel):

docker run --rm -e OLLAMA_NUM_PARALLEL=2 -p 11434:11434 ollama/ollama

Wie man einen Wert wählt

Beginnen Sie mit 1–2 für eine einzelne GPU / begrenztem VRAM und erhöhen Sie dann langsam, während Sie Folgendes beobachten:

  • GPU-VRAM-Nutzung (OOM / Entladungen)
  • CPU-Nutzung und Lastdurchschnitt
  • p95-Latenz Ihrer typischen Anfragen
  • Fehlerrate / Timeouts

Wenn Sie eine bestimmte Seite für die CLI-Nutzung optimieren, sehen Sie sich den Abschnitt Ollama CLI im Cheat Sheet an sowie Befehlsbeispiele für ollama serve, ollama ps und ollama run.

Schnelle Optimierungsrezepte

Stabilität zuerst

  • OLLAMA_NUM_PARALLEL=1
  • Verwenden Sie kleinere / quantisierte Modelle
  • Bevorzugen Sie kürzere Kontextgrößen

Durchsatz zuerst

  • OLLAMA_NUM_PARALLEL=2 (oder höher, wenn Sie Spielraum haben)
  • Erwägen Sie das Batching von Anfragen auf der Client-Ebene
  • Stellen Sie ausreichenden VRAM und CPU-Threads sicher

„Mir geht der VRAM aus, wenn zwei Anfragen eintreffen“

  • Reduzieren Sie OLLAMA_NUM_PARALLEL
  • Verwenden Sie ein stärker quantisiertes Modell
  • Reduzieren Sie die Kontextlänge / maximale Tokenzahl

Problembehebung

Symptome, dass OLLAMA_NUM_PARALLEL zu hoch ist

  • Anfragen schlagen intermittierend unter Last fehl
  • GPU-OOM / Modellentladung tritt häufig auf
  • Latenzspikes, wenn die zweite Anfrage eintrifft

Symptome, dass OLLAMA_NUM_PARALLEL zu niedrig ist

  • CPU/GPU wird unterausgelastet
  • Warteschlangenverzögerungen dominieren die Gesamtantwortzeit

Tipp: Wenn Sie auch Ihren Client steuern, fügen Sie Wiederholungsversuche mit Jitter und Keep-Alive-Verbindungen hinzu. Viele „Ollama ist langsam“-Probleme sind eigentlich Warteschlangen- und Verbindungsoverhead.

Ollama: Batching von Anfragen vs. parallele Ausführung

Batching in Ollama bezieht sich auf die Praxis, mehrere eingehende Anfragen zusammenzufassen und sie als Einheit zu verarbeiten. Dies ermöglicht eine effizientere Nutzung der Rechenressourcen, insbesondere auf Hardware, die von parallelisierten Operationen profitiert (wie GPUs).

Wenn mehrere Anfragen für dasselbe Modell gleichzeitig eintreffen, kann Ollama sie zusammen in einem Batch verarbeiten, wenn der Speicher es erlaubt. Dies erhöht den Durchsatz und kann die Latenz für jede Anfrage reduzieren, da das Modell optimierte Matrixoperationen über den Batch hinweg nutzen kann.

Batching ist besonders effektiv, wenn Anfragen ähnlich in Größe und Komplexität sind, da dies eine bessere Hardwareauslastung ermöglicht.

Parallele Ausführung in Ollama bedeutet, mehrere Anfragen zur gleichen Zeit zu bearbeiten, entweder für dasselbe Modell oder für verschiedene Modelle, abhängig vom verfügbaren Speicher und der Konfiguration.

Ollama unterstützt zwei Ebenen der Parallelität:

  • Laden mehrerer Modelle: Wenn genügend Speicher verfügbar ist, können mehrere Modelle geladen werden und gleichzeitig Anfragen bedienen.
  • 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 das Parallelitätslimit überschreiten, werden sie (FIFO) bis zu OLLAMA_MAX_QUEUE in die Warteschlange gestellt.

Fazit

Ollama nutzt sowohl Batching als auch parallele Ausführung, um mehrere Anfragen effizient zu verarbeiten. Batching fasst Anfragen für eine gleichzeitige Verarbeitung zusammen, während parallele Ausführung es ermöglicht, dass mehrere Anfragen (oder Modelle) parallel laufen. Beide Methoden hängen vom Systemspeicher ab und sind für optimale Leistung konfigurierbar.

Für weitere Benchmarks, Parallelitätstuning und Leistungshinweise, schauen Sie in unsere LLM-Leistung: Benchmarks, Engpässe & Optimierung-Hub.

Abonnieren

Neue Beiträge zu Systemen, Infrastruktur und KI-Engineering.