Hur Ollama Hanterar Parallella Förfrågningar
Konfigurera Ollama för parallella begäranden.
När Ollama-servern tar emot två förfrågningar samtidigt, beror dess beteende på dess konfiguration och tillgängliga systemresurser.

Hantering av samtidiga förfrågningar
-
Parallell bearbetning: Ollama stöder parallell bearbetning av förfrågningar. 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 förfrågningar parallellt. Detta kontrolleras av miljövariabeln
OLLAMA_NUM_PARALLEL, som anger det maximala antalet parallella förfrågningar som varje modell kan bearbeta samtidigt. Standardinställningen är 4 (eller 1, beroende på minneskapacitet), men den kan justeras. -
Batching: När flera förfrågningar för samma modell ankommer samtidigt, grupperar Ollama dem och bearbetar dem tillsammans. Detta innebär att båda förfrågningarna hanteras parallellt, och användarna kommer att se svar strömma tillbaka samtidigt. Servern väntar inte avsiktligt för att fylla en batch; bearbetningen startar så snart förfrågningar är tillgängliga.
Köhantering och gränser
-
Köhantering: Om antalet samtidiga förfrågningar överstiger den konfigurerade parallellismen (t.ex. fler än
OLLAMA_NUM_PARALLELförfrågningar för en modell), läggs ytterligare förfrågningar i kö. Köhanteringen sker enligt FIFO-principen (First-In, First-Out). -
Kögränser: Det maximala antalet köade förfrågningar kontrolleras av
OLLAMA_MAX_QUEUE(standard: 512). Om köen är full, får nya förfrågningar 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 förfrågan kräver laddning av en ny modell och minnet är otillräckligt, kommer Ollama att avladda inaktiva modeller för att skapa plats, och förfrågan kommer att köas tills modellen är laddad.
Exempel på scenario
Om två förfrågningar för samma modell ankommer samtidigt och serverns parallellism är inställd på minst 2, kommer båda förfrågningarna att bearbetas tillsammans i en batch, och båda användarna kommer att få svar samtidigt. Om parallellismen är inställd på 1, bearbetas en förfrågan omedelbart, och den andra köas tills den första är klar.
Om förfrågningarna gäller olika modeller och det finns tillräckligt med minne, kan båda modellerna laddas och förfrågningarna hanteras parallellt. Om inte, kan en modell behöva avladdas, och förfrågan kommer att köas.
Sammanfattande tabell
| Scenario | Result |
|---|---|
| Två förfrågningar, samma modell, tillräcklig parallellism | Båda bearbetas tillsammans parallellt (batchad) |
| Två förfrågningar, samma modell, parallellism=1 | En bearbetas, den andra köas tills den första är klar |
| Två förfrågningar, olika modeller, tillräckligt minne | Båda modellerna laddas, förfrågningarna hanteras parallellt |
| Två förfrågningar, olika modeller, otillräckligt minne | En köas tills minne är tillgängligt eller en modell avladdas |
Sammanfattningsvis är Ollama designat för att hantera flera samtidiga förfrågningar effektivt, förutsatt att servern är konfigurerad för parallellism och har tillräckliga resurser. Annars köas förfrågningarna och bearbetas i ordning.
Hantering av otillräckligt minne
När Ollama stöter på otillräckligt minne för att hantera inkommande förfrågningar, använder den en kombination av kömekanismer och resurshanteringsstrategier för att upprätthålla stabilitet:
Köhantering av förfrågningar
- Nya förfrågningar placeras i en FIFO-kö (First-In, First-Out) när minne inte kan allokeras omedelbart.
- Köstorleken kontrolleras av OLLAMA_MAX_QUEUE (standard: 512 förfrågningar).
- Om köen når kapaciteten, får nya förfrågningar 503 “Server Overloaded”-fel.
Modellhantering
- Aktiva modeller kan avladdas från minnet när de blir inaktiva för att frigöra resurser för köade förfrågningar.
- Antalet samtidigt laddade modeller begränsas av OLLAMA_MAX_LOADED_MODELS (standard: 3×GPU-antalet eller 3 för CPU).
Minneoptimering
- Försök att batcha bearbeta förfrågningar för samma modell för att maximera minneseffektivitet.
- För GPU-inferens krävs full VRAM-allokering per modell - delvis laddningar stöds inte.
Felscenarier
Kritisk minnesutmattning: När till och med köade förfrågningar överstiger tillgängliga resurser, kan Ollama:
- Skriva till disk (allvarligt försämrar prestanda)
- Returnera “out of memory”-fel
- Krascha modellinstansen i extrema fall
| Konfigurationskontroller Inställning | Syfte | Standardvärde |
|---|---|---|
| OLLAMA_MAX_QUEUE | Maximalt antal köade förfrågningar | 512 |
| OLLAMA_NUM_PARALLEL | Parallella förfrågningar per laddad modell | 4 (eller 1 om begränsat) |
| OLLAMA_MAX_LOADED_MODELS | Maximalt antal samtidigt laddade modeller | 3×GPU-antalet eller 3 |
Administratörer bör övervaka minnesanvändningen och justera dessa parametrar baserat på sin hårdvarukapacitet. Hantering av otillräckligt minne blir avgörande när man kör större modeller (7B+ parametrar) eller bearbetar flera samtidiga förfrågningar.
Ollama optimiseringsstrategier
Aktivera GPU-accelerering med export OLLAMA_CUDA=1 och ställ in CPU-trådar via export OLLAMA_NUM_THREADS=84.
Hårdvaruuppgraderingar
- RAM: 32GB+ för 13B-modeller, 64GB+ för 70B-modeller
- Lagring: NVMe-SSD för snabbare modellladdning/byte
- GPU: NVIDIA RTX 3080/4090 med 16GB+ VRAM för större modeller
Driftstrategier
- Batcha förfrågningar: Bearbeta flera frågor samtidigt för att fördela minnesöverhead
- Automatisk modellavladdning: Låt Ollama rensa inaktiva modeller från minnet
- Cacha frekvent använda modeller: Håll vanliga modeller i minnet
Övervakning & felsökning
- Använd nvidia-smi (GPU) och htop (CPU/RAM) för att identifiera flaskhalsar
- Vid minnesfel:
- Uppgradera till kvantiserade modeller
- Minska samtidiga förfrågningar
- Öka swap-utrymme
Exempel på optimeringarbetsflöde:
# Använd kvantiserad modell med GPU-accelerering
export OLLAMA_CUDA=1
ollama run llama2:7b-q4_0 --context-size 2048
# Begränsa laddade modeller och parallella förfrågningar
export OLLAMA_MAX_LOADED_MODELS=2
export OLLAMA_NUM_PARALLEL=4
Dessa justeringar kan minska minnesanvändningen med 30-60% samtidigt som svarskvaliteten upprätthålls, särskilt fördelaktigt när flera modeller körs eller vid hantering av höga förfrågningsvolymer.
Ollama: Batching av förfrågningar vs parallell utförande
Batching i Ollama avser att gruppera flera inkommande förfrågningar 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 parallella operationer (t.ex. GPUs).
När flera förfrågningar för samma modell ankommer samtidigt, kan Ollama bearbeta dem tillsammans i en batch om minnet tillåter. Detta ökar genomflödet och kan minska latens för varje förfrågan, eftersom modellen kan utnyttja optimerade matrisoperationer över batchen.
Batching är särskilt effektivt när förfrågningarna är liknande i storlek och komplexitet, vilket möjliggör bättre hårdvaruanvändning.
Parallell utförande i Ollama innebär att hantera flera förfrågningar samtidigt, antingen för samma modell eller för olika modeller, beroende på tillgängligt minne och konfiguration.
Ollama stöder två nivåer av parallellism:
- Flera modeller laddade: Om tillräckligt med minne finns, kan flera modeller laddas och betjäna förfrågningar samtidigt.
- Parallella förfrågningar per modell: Varje laddad modell kan bearbeta flera förfrågningar parallellt, kontrollerat av inställningen OLLAMA_NUM_PARALLEL (standard är 1 eller 4, beroende på minne).
När förfrågningar överstiger parallellismgränsen, köas de (FIFO) upp till OLLAMA_MAX_QUEUE.
Sammanfattning
Ollama utnyttjar både batchning och parallell utförande för att bearbeta flera förfrågningar effektivt. Batching grupperar förfrågningar för samtidig bearbetning, medan parallell utförande låter flera förfrågningar (eller modeller) köras samtidigt. Båda metoderna beror på systemminnet och är konfigurerbara för optimal prestanda.
Användbara länkar
- Ollama snabbreferens
- Flytta Ollama-modeller till annan enhet eller mapp
- Hur Ollama använder Intel CPU-prestanda och effektiva kärnor
- Ollama Space
- Självhosting av Perplexica - med Ollama
- Testning av Deepseek-r1 på Ollama
- Hur Ollama hanterar parallella förfrågningar
- Testning av Deepseek-r1 på Ollama
- Python snabbreferens
- Python space
- Omrankning av textdokument med Ollama och Qwen3 Embedding-modell - i Go