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

Ollama på Intel CPU Effektiva vs Prestandakärnor

Sidinnehåll

Jag har en teori att jag vill testa - om användningen av alla kärnor på en Intel CPU skulle öka hastigheten på LLMs?

Det här plågar mig att den nya gemma3 27-bitarsmodellen (gemma3:27b, 17GB på ollama) inte passar in i min GPUs 16GB VRAM och delvis körs på CPU.

För att vara exakt

ollama ps

visar

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

Även om det inte ser så farligt ut, är det ändå lagersplittring. Den faktiska belastningen är: GPU:28%, CPU: 560%. Ja, flera kärnor används.

Porträtt 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 prestandakärnor och effektiva kärnor?

OLLAMA_NUM_THREADS konfigureringsparameter

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

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

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 ~560% av CPU:n när Gemma 3 27B LLM kördes.

Dåligt lycka.

num_thread Anropsalternativ

Låt oss försöka kalla

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

Nu låt oss försöka dubbla kärnorna. Berätta för ollama att använda en blandning av prestandakärnor 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 låt oss gå extremt! Alla fysiska kärnor går!

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% (ostabilt)
  • GPU-effekt: 67w
  • Prestandaevaluering: 6,9 t/s

Okej. Nu ser vi en viss prestandaminskning. Låt oss försöka 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% (ostabilt)
  • GPU-effekt: 70w
  • Prestandaevaluering: 7,1 t/s

Här och där.

Till jämförelse - att köra Gemma 3 14b, det är mindre smart jämfört med Gemma 27b, men passar bra in i GPU VRAM.

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% (ostabilt)
  • GPU-effekt: 225w
  • Prestandaevaluering: 61,1 t/s

Det är vad vi kallar prestanda. Även om Gemma 3 27b är smartare än 14b, är det inte 10 gånger bättre!

Slutsats

Om LLM inte passar in i GPU VRAM och vissa lager flyttas över till CPU av Ollama

Användbara länkar