Test: Wie Ollama die Leistung und Effizienz der Intel CPU-Kerne nutzt

Ollama auf Intel CPU: Effiziente vs. Leistungscores

Inhaltsverzeichnis

Ich habe eine Theorie, die ich testen möchte – wenn man alle Kerne eines Intel-Prozessors nutzt, würde das die Geschwindigkeit von LLMs erhöhen? Test: Wie Ollama die Leistung und effizienten Kerne von Intel-Prozessoren nutzt

Es stört mich, dass das neue Gemma3-Modell mit 27 Bit (gemma3:27b, 17 GB auf Ollama) nicht in die 16 GB VRAM meines GPUs passt und teilweise auf dem CPU läuft.

Um präzise zu sein:

ollama ps

zeigt:

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

Obwohl es nicht katastrophal aussieht, sind die Schichten geteilt. Die tatsächliche Auslastung ist: GPU: 28%, CPU: 560%. Ja, mehrere Kerne werden genutzt.

Das Portrait von Llama und fliegenden CPUs

Und hier ist die Idee:

Was, wenn wir Ollama dazu bringen, alle Intel-CPU-Kerne – sowohl der Leistungs- als auch der Effizienzkerne – zu nutzen?

OLLAMA_NUM_THREADS-Konfigurationsparameter

Ollama hat eine Umgebungsvariable OLLAMA_NUM_THREADS, die Ollama sagen soll, wie viele Threads und Kerne entsprechend genutzt werden sollen.

Zuerst habe ich es versucht, auf 3 Kerne zu beschränken:

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

# füge OLLAMA_NUM_THREADS=3 hinzu als
# Environment="OLLAMA_NUM_THREADS=3"

sudo systemctl daemon-reload
sudo systemctl restart ollama

Aber es hat nicht funktioniert.

Ollama nutzte immer noch etwa 560 % der CPU, wenn Gemma 3 27B LLM lief.

Pech.

num_thread-Call-Option

Lassen Sie uns versuchen:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Warum ist der Himmel blau?",  
"stream": false,
"options":{
  "num_thread": 8
}
}'  | jq .

Das Ergebnis:

  • CPU-Auslastung: 585%
  • GPU-Auslastung: 25%
  • GPU-Leistung: 67w
  • Leistungsbewertung: 6,5 Token/sec

Jetzt versuchen wir, die Kerne zu verdoppeln. Wir bitten Ollama, eine Mischung aus Leistungs- und Effizienzkerne zu nutzen:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Warum ist der Himmel blau?",  
"stream": false,
"options":{
  "num_thread": 16
}
}'  | jq .

Das Ergebnis:

  • CPU-Auslastung: 1030%
  • GPU-Auslastung: 26%
  • GPU-Leistung: 70w
  • Leistungsbewertung: 7,4 t/s

Gut! Die Leistung stieg um ~14 %!

Jetzt gehen wir extrem! Alle physischen Kerne nutzen!

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Warum ist der Himmel blau?",  
"stream": false,
"options":{
  "num_thread": 20
}
}'  | jq .

Das Ergebnis:

  • CPU-Auslastung: 1250%
  • GPU-Auslastung: 10–26 % (instabil)
  • GPU-Leistung: 67w
  • Leistungsbewertung: 6,9 t/s

Okay. Jetzt sehen wir einen Leistungsverlust. Versuchen wir, 8 Leistungs- + 4 Effizienzkerne:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Warum ist der Himmel blau?",  
"stream": false,
"options":{
  "num_thread": 12
}
}'  | jq .

Das Ergebnis:

  • CPU-Auslastung: 801%
  • GPU-Auslastung: 27 % (instabil)
  • GPU-Leistung: 70w
  • Leistungsbewertung: 7,1 t/s

Hier und da.

Zur Vergleich – Gemma 3 14b passt besser in die GPU VRAM, ist aber weniger intelligent als Gemma 27b.

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:12b-it-qat",  
"prompt": "Warum ist der Himmel blau?",  
"stream": false
}'  | jq .

Das Ergebnis:

  • CPU-Auslastung: 106%
  • GPU-Auslastung: 94 % (instabil)
  • GPU-Leistung: 225w
  • Leistungsbewertung: 61,1 t/s

Das nennen wir Leistung. Obwohl Gemma 3 27b intelligenter als 14b ist, ist sie nicht zehnmal intelligenter!

Schlussfolgerung

Wenn ein LLM nicht in die GPU VRAM passt und einige Schichten von Ollama auf die CPU ausgelagert werden

  • Können wir die LLM-Leistung um 10–14 % erhöhen, indem wir den num_thread-Parameter bereitstellen
  • Der Leistungsverlust aufgrund der Auslagerung ist viel höher und wird durch diesen Anstieg nicht ausgeglichen.
  • Besser eine leistungsstärkere GPU mit mehr VRAM haben. Die RTX 3090 ist besser als die RTX 5080, obwohl ich keine davon habe