Test: Hoe Ollama Intel CPU-prestaties en efficiënte kernen gebruikt

Ollama op Intel CPU: Efficiëntie versus prestatie-kernen

Inhoud

Ik heb een theorie om te testen – als we alle kernen op een Intel CPU gebruiken, verhoogt dat de snelheid van LLMs? Het irriteert me dat de nieuwe gemma3 27 bit model (gemma3:27b, 17 GB op ollama) niet past in de 16 GB VRAM van mijn GPU en gedeeltelijk op de CPU draait.

Om precies te zijn

ollama ps

toont

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

Hoewel het er niet zo slecht uitziet, zijn de lagen gesplitst. De werkelijke belasting is: GPU: 28%, CPU: 560%. Ja, meerdere kernen worden gebruikt.

Het portret van Llama en vliegende CPUs

En hier is een idee:

Wat als we ollama aanzetten om ALLE Intel CPU-kernen te gebruiken – zowel prestatie- als efficiënte kernen?

OLLAMA_NUM_THREADS configuratieparameter

Ollama heeft een omgevingsvariabele configuratieparameter genaamd OLLAMA_NUM_THREADS, die ollama moet vertellen hoeveel threads en kernen het moet gebruiken.

Ik probeerde het eerst te beperken tot 3 kernen:

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

# voeg OLLAMA_NUM_THREADS=3 toe als
# Environment="OLLAMA_NUM_THREADS=3"

sudo systemctl daemon-reload
sudo systemctl restart ollama

maar dat werkte niet.

Ollama gebruikte nog steeds ongeveer 560% van de CPU bij het uitvoeren van Gemma 3 27B LLM.

Slechte geluk.

num_thread aanroepoptie

Laten we proberen:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Waarom is de blauwe lucht blauw?",  
"stream": false,
"options":{
  "num_thread": 8
}
}'  | jq .

Het resultaat:

  • CPU-gebruik: 585%
  • GPU-gebruik: 25%
  • GPU-kracht: 67w
  • Prestatieevaluatie: 6,5 tokens/sec

Laten we nu de kernen verdubbelen. Laten we ollama vertellen om een mix van prestatie- en efficiënte kernen te gebruiken:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Waarom is de blauwe lucht blauw?",  
"stream": false,
"options":{
  "num_thread": 16
}
}'  | jq .

Het resultaat:

  • CPU-gebruik: 1030%
  • GPU-gebruik: 26%
  • GPU-kracht: 70w
  • Prestatieevaluatie: 7,4 t/s

Goed! De prestaties zijn met ongeveer 14% gestegen!

Laten we nu extreem gaan! Gebruik alle fysieke kernen!

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Waarom is de blauwe lucht blauw?",  
"stream": false,
"options":{
  "num_thread": 20
}
}'  | jq .

Het resultaat:

  • CPU-gebruik: 1250%
  • GPU-gebruik: 10-26% (onstabiel)
  • GPU-kracht: 67w
  • Prestatieevaluatie: 6,9 t/s

Goed. Nu zien we een lichte daling in prestaties. Laten we proberen 8 prestatie + 4 efficiënte kernen:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Waarom is de blauwe lucht blauw?",  
"stream": false,
"options":{
  "num_thread": 12
}
}'  | jq .

Het resultaat:

  • CPU-gebruik: 801%
  • GPU-gebruik: 27% (onstabiel)
  • GPU-kracht: 70w
  • Prestatieevaluatie: 7,1 t/s

Hier en daar.

Voor vergelijking – Gemma 3 14b is minder slim dan Gemma 27b, maar past wel mooi in de GPU VRAM.

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:12b-it-qat",  
"prompt": "Waarom is de blauwe lucht blauw?",  
"stream": false
}'  | jq .

Het resultaat:

  • CPU-gebruik: 106%
  • GPU-gebruik: 94% (onstabiel)
  • GPU-kracht: 225w
  • Prestatieevaluatie: 61,1 t/s

Dat noemen we een prestatie. Hoewel Gemma 3 27b slimmer is dan 14b, is het niet tien keer zo slim!

Conclusie

Als een LLM niet past in de GPU VRAM en enkele lagen worden door Ollama naar de CPU verplaatst