Hur Ollama hanterar parallella begäran
Förstå Ollamas konkurrens, köhantering och hur du anpassar OLLAMA_NUM_PARALLEL för stabila parallella begäran.
Den här guiden förklarar hur Ollama hanterar parallella begäran (konkurrens, köhantering och resursbegränsningar) och hur du kan justera det med hjälp av miljövariabeln OLLAMA_NUM_PARALLEL (och relaterade inställningar).
Snabbänkar: Vad är OLLAMA_NUM_PARALLEL? · Snabba justeringsförslag · Hur köhantering fungerar · Felsökning · Relaterat: Kommandoreferens för Ollama CLI
För mer information om genomströmning, latens, VRAM och benchmarkar över olika runtime-miljöer och hårdvara, se LLM-prestanda: Benchmarkar, flaskhals & optimering.
Multi-steps agenter multiplicerar omförsök när samplingen är instabil; för standardinställningar för temperatur, top_p och straffval på Qwen- och Gemma-klassmodeller, se inferensparametrar för agenter för Qwen och Gemma.

Hantering av parallella begäran
-
Parallell bearbetning: Ollama stödjer parallell bearbetning av begäran. Om systemet har tillräckligt med tillgängligt minne (RAM för CPU-inferens, VRAM för GPU-inferens) kan flera modeller laddas samtidigt, och varje laddad modell kan hantera flera begäran parallellt. Detta kontrolleras av miljövariabeln
OLLAMA_NUM_PARALLEL, som sätter det maximala antalet parallella begäran som varje modell kan bearbeta samtidigt. Som standard är detta inställt på 4 (eller 1, beroende på minnestillgänglighet), men det kan justeras. -
Sammanställning (Batching): När flera begäran för samma modell kommer in samtidigt, sammanställer Ollama dem och bearbetar dem tillsammans. Detta innebär att båda begäran hanteras parallellt, och användarna kommer att se svaren strömma tillbaka samtidigt. Servern väntar inte avsiktligt för att fylla en batch; bearbetningen startar så snart begäran finns tillgängliga.
Köhantering och begränsningar
-
Köhantering: Om antalet parallella begäran överstiger den konfigurerade parallelliteten (t.ex. fler än
OLLAMA_NUM_PARALLELbegäran för en modell), köas ytterligare begäran. Köhanteringen fungerar på ett först-in, först-ut (FIFO) sätt. -
Köbegränsningar: Det maximala antalet begäran som kan köas kontrolleras av
OLLAMA_MAX_QUEUE(standard: 512). Om kön är full får nya begäran ett 503-fel som indikerar att servern är överbelastad. -
Modellladdning: Antalet olika modeller som kan laddas samtidigt kontrolleras av
OLLAMA_MAX_LOADED_MODELS. Om en begäran kräver laddning av en ny modell och minnet är otillräckligt, laddar Ollama ut inaktiva modeller för att göra plats, och begäran köas tills modellen är laddad.
Exempelscenario
Om två begäran för samma modell kommer in samtidigt och serverns parallellitet är inställd på minst 2, kommer båda begäran att bearbetas tillsammans i en batch, och båda användarna kommer att få svar samtidigt. Om parallelliteten är inställd på 1 bearbetas en begäran omedelbart, och den andra köas tills den första är klar.
Om begäran gäller olika modeller och det finns tillräckligt med minne, kan båda modellerna laddas och begäran hanteras parallellt. I annat fall kan en modell behöva läddas ut, och begäran köas.
Sammanfattningstabell
| Scenario | Resultat |
|---|---|
| Två begäran, samma modell, tillräcklig parallellitet | Båda bearbetas parallellt (sammanställda) |
| Två begäran, samma modell, parallellitet=1 | En bearbetas, den andra köas tills den första är klar |
| Två begäran, olika modeller, tillräckligt minne | Båda modellerna laddas, begäran hanteras parallellt |
| Två begäran, olika modeller, otillräckligt minne | En köas tills minne finns tillgängligt eller en modell laddas ut |
Sammanfattningsvis är Ollama designad för att effektivt hantera flera simultana begäran, förutsatt att servern är konfigurerad för konkurrens och har tillräckliga resurser. I annat fall köas begäran och bearbetas i turordning.
Hantering av otillräckligt minne
När Ollama stöter på otillräckligt minne för att hantera inkommande begäran, använder den en kombination av kömekanismer och resursstrategier för att upprätthålla stabilitet:
Köhantering av begäran
- Nya begäran placeras i en FIFO (First-In, First-Out)-kö när minne inte kan allokeras omedelbart.
- Köstorleken kontrolleras av OLLAMA_MAX_QUEUE (standard: 512 begäran).
- Om kön når kapaciteten får nya begäran 503 “Server Overloaded”-fel.
Modellhantering
- Aktiva modeller kan läddas ut från minnet när de blir inaktiva för att frigöra resurser för köade begäran.
- Antalet samtidigt laddade modeller begränsas av OLLAMA_MAX_LOADED_MODELS (standard: 3×GPU-antal eller 3 för CPU).
Minnesoptimering
- Försöker sammanställa begäran för samma modell för att maximera minneseffektiviteten.
- För GPU-inferens krävs full VRAM-allokering per modell – partiella laddningar stöds inte.
Felscenarier
Kritisk minnesuttömning: När även köade begäran överstiger tillgängliga resurser kan Ollama:
- Paginera till disk (vilket svårt försämrar prestandan)
- Returnera “out of memory”-fel
- Krascha modellinstansen i extrema fall
| Konfigurationskontroll Inställning | Syfte | Standardvärde |
|---|---|---|
| OLLAMA_MAX_QUEUE | Maximalt antal köade begäran | 512 |
| OLLAMA_NUM_PARALLEL | Parallella begäran per laddad modell | 4 (eller 1 vid begränsning) |
| OLLAMA_MAX_LOADED_MODELS | Maximalt antal samtidigt laddade modeller | 3×GPU-antal eller 3 |
Administratörer bör övervaka minnesanvändningen och justera dessa parametrar baserat på sina hårdvarukapaciteter. Hantering av otillräckligt minne blir avgörande när man kör större modeller (7B+ parametrar) eller bearbetar flera parallella begäran.
Ollama-optimeringsstrategier
Aktivera GPU-acceleration med export OLLAMA_CUDA=1 och ställ in CPU-trådar via export OLLAMA_NUM_THREADS=84.
Hårdvaruförbättringar
- RAM: 32 GB+ för 13B-modeller, 64 GB+ för 70B-modeller
- Lagring: NVMe SSD:er för snabbare modellladdning/bytning
- GPU: NVIDIA RTX 3080/4090 med 16 GB+ VRAM för större modeller
Operativa strategier
- Sammanställ begäran: Bearbeta flera frågor samtidigt för att amortera minnesöverhead
- Automatisk modellutladdning: Låter Ollama rensa inaktiva modeller från minnet
- Caching av frekvent använda modeller: Håll vanliga modeller minnesboende
Övervakning & Felsökning
- Använd
nvidia-smi(GPU) ochhtop(CPU/RAM) för att identifiera flaskhalsar - Vid minnesfel:
- Uppgradera till kvantiserade modeller
- Minska antalet parallella begäran
- Öka swap-utrymmet
Exempel på optimeringsarbetsflöde:
### Använd kvantiserad modell med GPU-acceleration
export OLLAMA_CUDA=1
ollama run llama2:7b-q4_0 --context-size 2048
### Begränsa laddade modeller och parallella begäran
export OLLAMA_MAX_LOADED_MODELS=2
export OLLAMA_NUM_PARALLEL=4
Dessa justeringar kan minska minnesanvändningen med 30–60 % samtidigt som svarskvaliteten bibehålls, vilket är särskilt fördelaktigt vid körning av flera modeller eller hantering av höga begäranvolym.
Miljövariabeln OLLAMA_NUM_PARALLEL
OLLAMA_NUM_PARALLEL kontrollerar hur många begäran Ollama kommer att utföra parallellt. Om du skickar flera begäran till samma Ollama-server avgör denna inställning i stor utsträckning om de körs parallellt eller köas.
- Högre värden kan öka genomströmningen om du har tillräckligt med CPU/GPU/VRAM, men kan öka latensen och minnespressen.
- Lägre värden minskar konkurrensen och kan förbättra stabiliteten, men begäran kommer att köas oftare.
Hur man ställer in OLLAMA_NUM_PARALLEL
Linux / macOS (systemd-tjänst eller skal):
export OLLAMA_NUM_PARALLEL=2
ollama serve
Engångskörning (prefix endast för detta kommando):
OLLAMA_NUM_PARALLEL=2 ollama serve
Docker (exempel):
docker run --rm -e OLLAMA_NUM_PARALLEL=2 -p 11434:11434 ollama/ollama
Hur man väljer ett värde
Börja med 1–2 för en enskild GPU / begränsad VRAM, och öka sedan gradvis medan du övervakar:
- GPU VRAM-användning (OOM / utladdningar)
- CPU-användning och lastmedelvärde
- p95-latens för dina typiska begäran
- Fel-/timeout-frekvens
Om du optimerar en specifik sida för CLI-användning, se avsnittet Ollama CLI i kommandoreferensen, plus kommandosexempel för
ollama serve,ollama psochollama run.
Snabba justeringsförslag
Stabilitet först
OLLAMA_NUM_PARALLEL=1- Använd mindre / kvantiserade modeller
- Föredra kortare kontextstorlekar
Genomströmning först
OLLAMA_NUM_PARALLEL=2(eller högre om du har utrymme)- Överväg att sammanställa begäran på klientnivå
- Se till att ha tillräckligt med VRAM och CPU-trådar
“Jag tar slut på VRAM när två begäran kommer in”
- Minska
OLLAMA_NUM_PARALLEL - Använd en mer aggressivt kvantiserad modell
- Minska kontextlängden / max token
Felsökning
Symtom på att OLLAMA_NUM_PARALLEL är för hög
- Begäran misslyckas ibland under last
- GPU OOM / modellutladdning händer ofta
- Latens toppar när den andra begäran kommer in
Symtom på att OLLAMA_NUM_PARALLEL är för låg
- CPU/GPU är underutnyttjad
- Köfördröjningar dominerar total svarstid
Tips: Om du också kontrollerar din klient, lägg till omförsök med jitter och behåll keep-alive-anslutningar. Många “Ollama är långsam”-problem är egentligen köhantering + anslutningsöverhead.
Ollama: Sammanställning av begäran vs parallell exekvering
Sammanställning (Batching) i Ollama avser praktiken att gruppera flera inkommande begäran tillsammans och bearbeta dem som en enhet. Detta möjliggör mer effektiv användning av beräkningsresurser, särskilt när man kör på hårdvara som gynnas av parallelliserade operationer (såsom GPU:er).
När flera begäran för samma modell kommer in samtidigt kan Ollama bearbeta dem tillsammans i en batch om minnet tillåter. Detta ökar genomströmningen och kan minska latensen för varje begäran, eftersom modellen kan utnyttja optimerade matrisoperationer över batchen.
Sammanställning är särskilt effektiv när begäran är likartade i storlek och komplexitet, eftersom detta möjliggör bättre hårdvaruutnyttjande.
Parallell exekvering i Ollama innebär att hantera flera begäran samtidigt, antingen för samma modell eller för olika modeller, beroende på tillgängligt minne och konfiguration.
Ollama stödjer två nivåer av parallellitet:
- Flermodellladdning: Om tillräckligt med minne finns tillgängligt kan flera modeller laddas och servera begäran samtidigt.
- Parallella begäran per modell: Varje laddad modell kan bearbeta flera begäran parallellt, kontrollerad av inställningen OLLAMA_NUM_PARALLEL (standard är 1 eller 4, beroende på minne).
När begäran överstiger parallellitetsgränsen köas de (FIFO) upp till OLLAMA_MAX_QUEUE.
Sammanfattning
Ollama utnyttjar både sammanställning och parallell exekvering för att effektivt bearbeta flera begäran. Sammanställning grupperar begäran för samtidig bearbetning, medan parallell exekvering tillåter flera begäran (eller modeller) att köras parallellt. Båda metoderna beror på systemminnet och är konfigurerbara för optimal prestanda.
För mer benchmarkar, konkurrensjustering och prestandariktlinjer, kolla vår hubb för LLM-prestanda: Benchmarkar, flaskhals & optimering.