Test: Hur Ollama använder Intel CPU-prestanda och effektiva kärnor

Ollama på Intel CPU: Effektivitet vs prestandaenheter

Sidinnehåll

Jag har en teori att testa – om man använder alla kärnor på Intel CPU skulle det öka hastigheten hos LLMs? Det är irriterande att den nya gemma3 27-bit model (gemma3:27b, 17GB på ollama) inte passar in i min GPU:s 16GB VRAM och delvis kör på CPU.

För mer information om genomströmningsförmåga, latens, VRAM och jämförelser mellan olika körningar och hårdvara, se LLM-prestanda: Benchmarks, halsar och optimering.

För att vara tydlig:

ollama ps

visar:

gemma3:27b    a418f5838eaf    22 GB    29%/71% CPU/GPU

Även om det inte ser så dåligt ut, så är det lager som är uppdelade. Den faktiska belastningen är: GPU:28%, CPU: 560%. Ja, flera kärnor används.

Porträttet av Llama och flygande CPUs

Och här är idén:

Vad händer om vi tvingar ollama att använda ALLA Intel CPU-kärnor – både prestanda- och effektiva typer?

OLLAMA_NUM_THREADS konfigurationsparameter

Ollama har en miljövariabelkonfigurationsparameter OLLAMA_NUM_THREADS som ska berätta för ollama hur många trådar och kärnor den ska använda.

Jag försökte först begränsa den till 3 kärnor:

sudo xed /etc/systemd/system/ollama.service

# lägg till OLLAMA_NUM_THREADS=3 som
# Environment="OLLAMA_NUM_THREADS=3"

sudo systemctl daemon-reload
sudo systemctl restart ollama

och det fungerade inte.

Ollama använde fortfarande ungefär 560% av CPU:n när Gemma 3 27B LLM kördes.

Dåligt lyckat.

num_thread anropsoption

Låt oss prova att anropa:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Varför är himlen blå?",  
"stream": false,
"options":{
  "num_thread": 8
}
}'  | jq .

Resultatet:

  • CPU-användning: 585%
  • GPU-användning: 25%
  • GPU-effekt: 67w
  • Prestandaevaluering: 6,5 tokens/sec

Låt oss nu dubbla antalet kärnor. Berätta för ollama att använda en blandning av prestanda- och effektiva kärnor:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Varför är himlen blå?",  
"stream": false,
"options":{
  "num_thread": 16
}
}'  | jq .

Resultatet:

  • CPU-användning: 1030%
  • GPU-användning: 26%
  • GPU-effekt: 70w
  • Prestandaevaluering: 7,4 t/s

Bra! Prestandan ökade med ~14%!

Nu går vi ännu längre! Alla fysiska kärnor!

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Varför är himlen blå?",  
"stream": false,
"options":{
  "num_thread": 20
}
}'  | jq .

Resultatet:

  • CPU-användning: 1250%
  • GPU-användning: 10-26% (instabil)
  • GPU-effekt: 67w
  • Prestandaevaluering: 6,9 t/s

Okej. Nu ser vi en liten prestandasänkning. Låt oss prova med 8 prestanda + 4 effektiva:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Varför är himlen blå?",  
"stream": false,
"options":{
  "num_thread": 12
}
}'  | jq .

Resultatet:

  • CPU-användning: 801%
  • GPU-användning: 27% (instabil)
  • GPU-effekt: 70w
  • Prestandaevaluering: 7,1 t/s

Här och där.

För jämförelse – när man kör Gemma 3 14b är den mindre smart jämfört med Gemma 27b, men passar in i GPU VRAM på ett mycket bättre sätt.

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:12b-it-qat",  
"prompt": "Varför är himlen blå?",  
"stream": false
}'  | jq .

Resultatet:

  • CPU-användning: 106%
  • GPU-användning: 94% (instabil)
  • GPU-effekt: 225w
  • Prestandaevaluering: 61,1 t/s

Det är vad vi kallar för prestanda. Även om Gemma 3 27b är smartare än 14b, så är den inte tio gånger smartare!

Slutsats

Om LLM inte passar in i GPU VRAM och vissa lager avlastas av Ollama till CPU

För mer benchmarks, CPU/GPU-tuning och prestandaråd, kontrollera vår LLM-prestanda: Benchmarks, halsar och optimering hub.

Några användbara länkar