Hoe Ollama parallelle verzoeken afhandelt
Begrijp Ollama-concurrentie, wachtrijen en hoe u OLLAMA_NUM_PARALLEL afstelt voor stabiele parallelle verzoeken.
Deze handleiding legt uit hoe Ollama параллель verzoeken afhandelt (concurentie, wachtrijen en resourcebeperkingen) en hoe u dit kunt optimaliseren met de OLLAMA_NUM_PARALLEL-omgevingsvariabele (en gerelateerde instellingen).
Snellinks: Wat is OLLAMA_NUM_PARALLEL? · Snelle optimalisatie-voorbeelden · Hoe wachtrijen werken · Probleemoplossing · Gerelateerd: Ollama CLI-commando’s cheat sheet
Voor meer informatie over doorvoer, latentie, VRAM en benchmarks over verschillende runtime-omgevingen en hardware, zie LLM-prestaties: Benchmarks, Bottlenecks & Optimalisatie.
Multi-step agents vermenigvuldigen opnieuw proberen wanneer sampling instabiel is; voor standaard-instellingen voor temperatuur, top_p en penalties bij Qwen- en Gemma-achtige modellen, zie agentische inferentieparameters voor Qwen en Gemma.

Concurrente Verzoekafhandeling
-
Parallelle verwerking: Ollama ondersteunt concurrente verwerking van verzoeken. Als het systeem voldoende beschikbare geheugen heeft (RAM voor CPU-inferentie, VRAM voor GPU-inferentie), kunnen meerdere modellen gelijktijdig worden geladen, en elk geladen model kan meerdere verzoeken parallel afhandelen. Dit wordt beheerd door de omgevingsvariabele
OLLAMA_NUM_PARALLEL, die het maximale aantal parallelle verzoeken per model bepaalt dat gelijktijdig kan worden verwerkt. Standaard is dit ingesteld op 4 (of 1, afhankelijk van de geheugenbeschikbaarheid), maar dit kan worden aangepast. -
Batching: Wanneer meerdere verzoeken voor hetzelfde model gelijktijdig binnenkomen, bundelt Ollama deze en verwerkt ze samen. Dit betekent dat beide verzoeken parallel worden afgehandeld, en gebruikers zullen tegelijkertijd gestroomde antwoorden zien. De server wacht niet bewust om een batch te vullen; verwerking begint zodra verzoeken beschikbaar zijn.
Wachtrijen en Beperkingen
-
Wachtrijen: Als het aantal concurrente verzoeken de geconfigureerde paralleliteit overschrijdt (bijv. meer dan
OLLAMA_NUM_PARALLELverzoeken voor een model), worden extra verzoeken in een wachtrij geplaatst. De wachtrij werkt op een first-in, first-out (FIFO)-basis. -
Wachtrijbeperkingen: Het maximale aantal verzoeken in de wachtrij wordt beheerd door
OLLAMA_MAX_QUEUE(standaard: 512). Als de wachtrij vol is, ontvangen nieuwe verzoeken een 503-fout die aangeeft dat de server overbelast is. -
Model Laden: Het aantal verschillende modellen dat gelijktijdig kan worden geladen, wordt beheerd door
OLLAMA_MAX_LOADED_MODELS. Als een verzoek het laden van een nieuw model vereist en het geheugen ontoereikend is, zal Ollama inactieve modellen ontladen om ruimte te maken, en zal het verzoek in de wachtrij worden geplaatst tot het model is geladen.
Voorbeeldscenario
Als twee verzoeken voor hetzelfde model gelijktijdig binnenkomen en de paralleliteit van de server op ten minste 2 is ingesteld, worden beide verzoeken samen in een batch verwerkt, en ontvangen beide gebruikers gelijktijdig antwoorden. Als de paralleliteit op 1 is ingesteld, wordt het ene verzoek onmiddellijk verwerkt, en wordt het andere verzoek in de wachtrij geplaatst tot het eerste verzoek is voltooid.
Als de verzoeken voor verschillende modellen zijn en er voldoende geheugen is, kunnen beide modellen worden geladen en de verzoeken parallel worden afgehandeld. Zo niet, moet mogelijk één model worden ontladen, en wordt het verzoek in de wachtrij geplaatst.
Samenvattingstabel
| Scenario | Resultaat |
|---|---|
| Twee verzoeken, zelfde model, voldoende paralleliteit | Beiden parallel verwerkt (gebundeld) |
| Twee verzoeken, zelfde model, paralleliteit=1 | Eén verwerkt, tweede in wachtrij tot eerste is voltooid |
| Twee verzoeken, verschillende modellen, voldoende geheugen | Beide modellen geladen, verzoeken parallel afgehandeld |
| Twee verzoeken, verschillende modellen, ontoereikend geheugen | Eén in wachtrij tot geheugen beschikbaar is of een model wordt ontladen |
Kortom, Ollama is ontworpen om meerdere gelijktijdige verzoeken efficiënt af te handelen, mits de server is geconfigureerd voor concurentie en over voldoende resources beschikt. Anders worden verzoeken in de wachtrij geplaatst en in volgorde verwerkt.
Afhandeling van ontoereikend geheugen
Wanneer Ollama ontoereikend geheugen aantreft om binnenkomende verzoeken af te handelen, gebruikt het een combinatie van wachtrijmechanismen en resourcebeheerstrategieën om stabiliteit te behouden:
Verzoekwachtrij
- Nieuwe verzoeken worden in een FIFO (First-In, First-Out)-wachtrij geplaatst wanneer geheugen niet onmiddellijk kan worden toegewezen.
- De grootte van de wachtrij wordt beheerd door OLLAMA_MAX_QUEUE (standaard: 512 verzoeken).
- Als de wachtrij de capaciteit bereikt, ontvangen nieuwe verzoeken 503 “Server Overloaded”-fouten.
Modelbeheer
- Actieve modellen kunnen uit het geheugen worden ontladen wanneer ze inactief worden om resources vrij te maken voor verzoeken in de wachtrij.
- Het aantal gelijktijdig geladen modellen is beperkt door OLLAMA_MAX_LOADED_MODELS (standaard: 3×GPU-aantal of 3 voor CPU).
Geheugenoptimalisatie
- Pogingen om verzoeken voor hetzelfde model te bundelen om geheugenefficiëntie te maximaliseren.
- Voor GPU-inferentie vereist dit volledige VRAM-toewijzing per model - gedeeltelijke laden worden niet ondersteund.
Foutscenario’s
Kritieke geheugenuitputting: Wanneer zelfs verzoeken in de wachtrij de beschikbare resources overschrijden, kan Ollama:
- Naar schijf pagineren (wat de prestaties ernstig aantast)
- “Out of memory”-fouten retourneren
- In extreme gevallen het modelinstantie crashen
| Configuratiebeheer Instelling | Doel | Standaardwaarde |
|---|---|---|
| OLLAMA_MAX_QUEUE | Maximaal aantal verzoeken in wachtrij | 512 |
| OLLAMA_NUM_PARALLEL | Parallelle verzoeken per geladen model | 4 (of 1 indien beperkt) |
| OLLAMA_MAX_LOADED_MODELS | Maximaal aantal gelijktijdig geladen modellen | 3×GPU-aantal of 3 |
Beheerders moeten het geheugengebruik monitoren en deze parameters aanpassen op basis van hun hardwaremogelijkheden. Afhandeling van ontoereikend geheugen wordt cruciaal bij het uitvoeren van grotere modellen (7B+ parameters) of het verwerken van meerdere concurrente verzoeken.
Ollama-optimalisatiestrategieën
Schakel GPU-versnelling in met export OLLAMA_CUDA=1 en stel CPU-threads in via export OLLAMA_NUM_THREADS=84. Hardwareverbeteringen
- RAM: 32GB+ voor 13B-modellen, 64GB+ voor 70B-modellen
- Opslag: NVMe SSD’s voor sneller laden/wisselen van modellen
- GPU: NVIDIA RTX 3080/4090 met 16GB+ VRAM voor grotere modellen
Operationele strategieën
- Verzoeken bundelen: Verwerk meerdere queries gelijktijdig om geheugenoverhead te spreiden
- Automatisch model ontladen: Laat Ollama inactieve modellen uit het geheugen verwijderen
- Vaak gebruikte modellen caches: Houd veelvoorkomende modellen in het geheugen
Monitoring & Probleemoplossing
- Gebruik nvidia-smi (GPU) en htop (CPU/RAM) om bottlenecks te identificeren
- Bij geheugenfouten:
- Upgrade naar gekwantiseerde modellen
- Verminder concurrente verzoeken
- Verhoog de swapruimte
Voorbeeld optimalisatiestroom:
### Gebruik gekwantiseerd model met GPU-versnelling
export OLLAMA_CUDA=1
ollama run llama2:7b-q4_0 --context-size 2048
### Beperk geladen modellen en parallelle verzoeken
export OLLAMA_MAX_LOADED_MODELS=2
export OLLAMA_NUM_PARALLEL=4
Deze aanpassingen kunnen het geheugengebruik met 30-60% verminderen terwijl de antwoordkwaliteit wordt behouden, wat vooral nuttig is bij het uitvoeren van meerdere modellen of het afhandelen van hoge verzoekvolumes.
OLLAMA_NUM_PARALLEL-omgevingsvariabele
OLLAMA_NUM_PARALLEL bepaalt hoeveel verzoeken Ollama parallel zal uitvoeren. Als u meerdere verzoeken naar dezelfde Ollama-server stuurt, bepaalt deze instelling grotendeels of ze concurrent of in de wachtrij worden uitgevoerd.
- Hogere waarden kunnen de doorvoer verhogen als u voldoende CPU/GPU/VRAM heeft, maar kunnen latentie en geheugendruk verhogen.
- Lagere waarden verminderen concurrentie en kunnen stabiliteit verbeteren, maar verzoeken zullen vaker in de wachtrij worden geplaatst.
Hoe OLLAMA_NUM_PARALLEL in te stellen
Linux / macOS (systemd-service of shell):
export OLLAMA_NUM_PARALLEL=2
ollama serve
Eenmalige uitvoering (prefix alleen voor dit commando):
OLLAMA_NUM_PARALLEL=2 ollama serve
Docker (voorbeeld):
docker run --rm -e OLLAMA_NUM_PARALLEL=2 -p 11434:11434 ollama/ollama
Hoe een waarde te kiezen
Begin met 1–2 voor een enkele GPU / beperkte VRAM, en verhoog dan geleidelijk terwijl u observeert:
- GPU VRAM-gebruik (OOM / ontladingen)
- CPU-gebruik en load average
- p95-latentie van uw typische verzoeken
- foutpercentage / time-outs
Als u een specifieke pagina optimaliseert voor CLI-gebruik, zie het Ollama CLI-gedeelte in de cheat sheet, plus commandovoorbeelden voor
ollama serve,ollama ps, enollama run.
Snelle optimalisatie-voorbeelden
Stabiliteit eerst
OLLAMA_NUM_PARALLEL=1- Gebruik kleinere / gekwantiseerde modellen
- Geef de voorkeur aan kortere contextgroottes
Doorvoer eerst
OLLAMA_NUM_PARALLEL=2(of hoger als u reserves heeft)- Overweeg verzoekbundeling op de clientlaag
- Zorg voor voldoende VRAM en CPU-threads
“Ik loop uit VRAM wanneer twee verzoeken binnenkomen”
- Verminder
OLLAMA_NUM_PARALLEL - Gebruik een agressiever gekwantiseerd model
- Verminder contextlengte / max tokens
Probleemoplossing
Symptomen dat OLLAMA_NUM_PARALLEL te hoog is
- Verzoeken falen af en toe onder belasting
- GPU OOM / model ontlading gebeurt vaak
- Latentiepiek wanneer het tweede verzoek binnenkomt
Symptomen dat OLLAMA_NUM_PARALLEL te laag is
- CPU/GPU wordt onderbenut
- Wachtrijvertragingen domineren de totale response time
Tip: Als u ook uw client beheert, voeg dan opnieuw proberen met jitter en keep-alive-verbindingen toe. Veel “Ollama is traag”-problemen zijn eigenlijk wachtrij- + verbindingsoverhead.
Ollama: Verzoeken bundelen versus parallelle uitvoering
Bundelen in Ollama verwijst naar de praktijk van het groeperen van meerdere binnenkomende verzoeken en ze als een eenheid verwerken. Dit stelt in staat voor een efficiënter gebruik van computatiemiddelen, vooral bij hardware die profiteert van geparallelleerde bewerkingen (zoals GPUs).
Wanneer meerdere verzoeken voor hetzelfde model gelijktijdig binnenkomen, kan Ollama ze samen in een batch verwerken als het geheugen dit toelaat. Dit verhoogt de doorvoer en kan de latentie voor elk verzoek verminderen, omdat het model geoptimaliseerde matrixbewerkingen over de batch kan gebruiken.
Bundelen is bijzonder effectief wanneer verzoeken vergelijkbaar zijn in grootte en complexiteit, omdat dit zorgt voor betere hardwarebenutting.
Parallelle uitvoering in Ollama betekent het gelijktijdig afhandelen van meerdere verzoeken, zowel voor hetzelfde model als voor verschillende modellen, afhankelijk van het beschikbare geheugen en de configuratie.
Ollama ondersteunt twee niveaus van paralleliteit:
- Meerdere modellen laden: Als er voldoende geheugen beschikbaar is, kunnen meerdere modellen worden geladen en verzoeken gelijktijdig afhandelen.
- Parallelle verzoeken per model: Elk geladen model kan meerdere verzoeken parallel verwerken, beheerd door de OLLAMA_NUM_PARALLEL-instelling (standaard is 1 of 4, afhankelijk van het geheugen).
Wanneer verzoeken de paralleliteitslimiet overschrijden, worden ze in de wachtrij geplaatst (FIFO) tot OLLAMA_MAX_QUEUE.
Conclusie
Ollama maakt gebruik van zowel bundelen als parallelle uitvoering om meerdere verzoeken efficiënt te verwerken. Bundelen groepeert verzoeken voor gelijktijdige verwerking, terwijl parallelle uitvoering meerdere verzoeken (of modellen) gelijktijdig laat uitvoeren. Beide methoden zijn afhankelijk van het systeemgeheugen en zijn configureerbaar voor optimale prestaties.
Voor meer benchmarks, concurrentie-optimalisatie en prestatieadvies, bekijk onze LLM-prestaties: Benchmarks, Bottlenecks & Optimalisatie hub.