Hoe Ollama Parallel Verzoeken Behandelt
Ollama configureren voor het uitvoeren van parallelle aanvragen.
Wanneer de Ollama-server twee aanvragen tegelijkertijd ontvangt, hangt het gedrag ervan af van de configuratie en de beschikbare systeemresources.
Voor meer informatie over doorvoer, latentie, VRAM en benchmarks over runtime en hardware, zie LLM Performance: Benchmarks, Bottlenecks & Optimization.

Concurrente Aanvraagbehandeling
-
Parallelle Verwerking: Ollama ondersteunt de parallele verwerking van aanvragen. Als het systeem voldoende beschikbare geheugen heeft (RAM voor CPU-inferentie, VRAM voor GPU-inferentie), kunnen meerdere modellen tegelijkertijd worden geladen, en elk geladen model kan meerdere aanvragen parallel verwerken. Dit wordt beheerd door de omgevingsvariabele
OLLAMA_NUM_PARALLEL, die het maximale aantal parallele aanvragen bepaalt dat elk model tegelijkertijd kan verwerken. Standaard is dit ingesteld op 4 (of 1, afhankelijk van de geheugenbeschikbaarheid), maar het kan worden aangepast. -
Batchverwerking: Wanneer meerdere aanvragen voor hetzelfde model tegelijkertijd binnenkomen, groepeert Ollama deze en verwerkt ze samen. Dit betekent dat beide aanvragen parallel worden verwerkt, en gebruikers zullen tegelijkertijd antwoorden zien terugkomen. De server wacht niet opzetten om een batch vol te maken; de verwerking begint zodra aanvragen beschikbaar zijn.
Wachtrijen en Limieten
-
Wachtrijen: Als het aantal concurrente aanvragen het ingestelde parallelisme overschrijdt (bijvoorbeeld meer dan
OLLAMA_NUM_PARALLELaanvragen voor een model), worden extra aanvragen in een wachtrij geplaatst. De wachtrij werkt op een eerst-aangekomen, eerst-verwerkt (FIFO) principe. -
Wachtrijlimieten: Het maximale aantal aangemaakte aanvragen wordt bepaald door
OLLAMA_MAX_QUEUE(standaard: 512). Als de wachtrij vol is, ontvangen nieuwe aanvragen een foutbericht van 503 dat aangeeft dat de server overbelast is. -
Model Laden: Het aantal verschillende modellen dat tegelijkertijd kan worden geladen, wordt bepaald door
OLLAMA_MAX_LOADED_MODELS. Als een aanvraag het laden van een nieuw model vereist en er onvoldoende geheugen beschikbaar is, zal Ollama ongebruikte modellen uit het geheugen verwijderen om ruimte te maken, en de aanvraag wordt in de wachtrij geplaatst totdat het model geladen is.
Voorbeeldscenario
Als twee aanvragen voor hetzelfde model tegelijkertijd binnenkomen en de parallelle instelling van de server minstens 2 is, worden beide aanvragen tegelijkertijd in een batch verwerkt, en zullen beide gebruikers tegelijkertijd antwoorden ontvangen. Als de parallelle instelling 1 is, wordt één aanvraag direct verwerkt, en de tweede wordt in de wachtrij geplaatst totdat de eerste klaar is.
Als de aanvragen voor verschillende modellen zijn en er voldoende geheugen beschikbaar is, kunnen beide modellen worden geladen en de aanvragen parallel worden verwerkt. Als dat niet het geval is, moet mogelijk één model worden verwijderd, en de aanvraag wordt in de wachtrij geplaatst.
Samenvattingstabel
| Scenario | Resultaat |
|---|---|
| Twee aanvragen, zelfde model, voldoende paralleliteit | Beide worden tegelijkertijd parallel verwerkt (gegroepeerd) |
| Twee aanvragen, zelfde model, paralleliteit=1 | Één wordt verwerkt, de tweede wordt in de wachtrij geplaatst totdat de eerste af is |
| Twee aanvragen, verschillende modellen, voldoende geheugen | Beide modellen worden geladen, aanvragen worden parallel verwerkt |
| Twee aanvragen, verschillende modellen, onvoldoende geheugen | Één wordt in de wachtrij geplaatst totdat geheugen beschikbaar is of een model is verwijderd |
In samenvatting is Ollama ontworpen om meerdere gelijktijdige aanvragen efficiënt te verwerken, mits de server is ingesteld voor concurrentie en voldoende resources beschikbaar zijn. Anders worden aanvragen in de wachtrij geplaatst en worden ze in volgorde verwerkt.
Beheer van Onvoldoende Geheugen
Wanneer Ollama onvoldoende geheugen ervaart om binnenkomende aanvragen te verwerken, gebruikt het een combinatie van wachtrijmechanismen en resourcebeheerstrategieën om stabiliteit te behouden:
Aanvraagwachtrij
- Nieuwe aanvragen worden in een FIFO (First-In, First-Out) wachtrij geplaatst wanneer geheugen niet direct beschikbaar is.
- De wachtrijgrootte wordt bepaald door OLLAMA_MAX_QUEUE (standaard: 512 aanvragen).
- Als de wachtrij vol is, ontvangen nieuwe aanvragen foutberichten van 503 “Server Overloaded”.
Modelbeheer
- Actieve modellen kunnen uit het geheugen worden verwijderd als ze ongebruikt worden om resources vrij te maken voor wachtrijaanvragen.
- Het aantal gelijktijdig geladen modellen wordt beperkt door OLLAMA_MAX_LOADED_MODELS (standaard: 3×GPU-teller of 3 voor CPU).
Geheugenoptimalisatie
- Probeer aanvragen voor hetzelfde model in batches te verwerken om geheugenoptimalisatie te maximaliseren.
- Voor GPU-inferentie is volledige VRAM-allocaatie per model vereist - gedeeltelijke laden wordt niet ondersteund.
Foutscenario’s
Kritieke geheugengebruik: Wanneer zelfs wachtrijaanvragen de beschikbare resources overschrijden, kan Ollama:
- Pagineren naar de schijf (zwaar prestatieverlies)
- “out of memory”-fouten retourneren
- In extreme gevallen het modelinstantiecrashen
| Configuratiecontrole Instelling | Doel | Standaardwaarde |
|---|---|---|
| OLLAMA_MAX_QUEUE | Maximaal aantal aangemaakte aanvragen | 512 |
| OLLAMA_NUM_PARALLEL | Parallelle aanvragen per geladen model | 4 (of 1 als beperkt) |
| OLLAMA_MAX_LOADED_MODELS | Maximaal aantal gelijktijdig geladen modellen | 3×GPU-teller of 3 |
Beheerders moeten geheugengebruik monitoren en deze parameters aanpassen op basis van hun hardwarecapaciteiten. Het beheer van onvoldoende geheugen wordt cruciaal bij het uitvoeren van grotere modellen (7B+ parameters) of het verwerken van meerdere gelijktijdige aanvragen.
Ollama optimalisatiestrategieën
Schakel GPU-accelleratie in met export OLLAMA_CUDA=1 en stel CPU-threads in via export OLLAMA_NUM_THREADS=84. Hardwareverhogingen
- RAM: 32GB+ voor 13B modellen, 64GB+ voor 70B modellen
- Opslag: NVMe SSDs voor snellere modelbelading/swap
- GPU: NVIDIA RTX 3080/4090 met 16GB+ VRAM voor grotere modellen
Bedrijfsstrategieën
- Batchverwerking: Verwerk meerdere queries tegelijkertijd om geheugenoverhead te verlagen
- Automatische modeluitlaad: Laat Ollama ongebruikte modellen uit het geheugen verwijderen
- Cache vaak gebruikte modellen: Houd veelgebruikte modellen in het geheugen
Monitoring en opsporing van problemen
- Gebruik nvidia-smi (GPU) en htop (CPU/RAM) om bottlenecks te identificeren
- Voor geheugenfouten:
- Upgraden naar gecomponeerde modellen
- Verminder het aantal gelijktijdige aanvragen
- Verhoog de swapruimte
Voorbeeld van optimalisatiestroom:
# Gebruik een gecomponeerd model met GPU-accelleratie
export OLLAMA_CUDA=1
ollama run llama2:7b-q4_0 --context-size 2048
# Beperk geladen modellen en parallele aanvragen
export OLLAMA_MAX_LOADED_MODELS=2
export OLLAMA_NUM_PARALLEL=4
Deze aanpassingen kunnen het geheugenverbruik met 30-60% verminderen terwijl de responskwaliteit behouden blijft, vooral nuttig bij het uitvoeren van meerdere modellen of het verwerken van hoge aanvraagvolumes.
Ollama: Batchverwerking van Aanvragen versus Parallelle Uitvoering
Batchverwerking in Ollama verwijst naar de praktijk van het groeperen van meerdere binnenkomende aanvragen en het verwerken ervan als een eenheid. Dit stelt een efficiënter gebruik van rekenresources mogelijk, vooral wanneer er op hardware wordt gelopen die voordelen heeft van parallelle bewerkingen (zoals GPUs).
Wanneer meerdere aanvragen voor hetzelfde model tegelijkertijd binnenkomen, kan Ollama ze samen in een batch verwerken als er genoeg geheugen beschikbaar is. Dit verhoogt de doorvoer en kan de latentie per aanvraag verminderen, aangezien het model geoptimaliseerde matrixbewerkingen kan gebruiken over de batch.
Batchverwerking is vooral effectief wanneer aanvragen vergelijkbaar zijn in grootte en complexiteit, aangezien dit betere hardwareutilisatie toelaat.
Parallelle uitvoering in Ollama betekent het tegelijkertijd verwerken van meerdere aanvragen, ofwel voor hetzelfde model of voor verschillende modellen, afhankelijk van de beschikbare geheugen en configuratie.
Ollama ondersteunt twee niveaus van parallelle verwerking:
- Meerdere modelbelading: Als genoeg geheugen beschikbaar is, kunnen meerdere modellen geladen worden en tegelijkertijd aanvragen verwerken.
- Parallelle aanvragen per model: Elk geladen model kan meerdere aanvragen parallel verwerken, beheerd door de instelling OLLAMA_NUM_PARALLEL (standaard is dit 1 of 4, afhankelijk van het geheugen).
Wanneer aanvragen het parallelle limiet overschrijden, worden ze in de wachtrij geplaatst (FIFO) tot OLLAMA_MAX_QUEUE.
Samenvatting
Ollama maakt gebruik van zowel batchverwerking als parallelle uitvoering om meerdere aanvragen efficiënt te verwerken. Batchverwerking groepeert aanvragen voor gelijktijdige verwerking, terwijl parallelle uitvoering meerdere aanvragen (of modellen) tegelijkertijd kan laten lopen. Beide methoden afhankelijk van het systeemgeheugen en zijn aanpasbaar voor optimale prestaties.
Voor meer benchmarks, concurrentieoptimalisatie en prestatieadvies, controleer ons LLM Performance: Benchmarks, Bottlenecks & Optimization hub.