Test: Jak Ollama wykorzystuje wydajność i efektywne jądra procesora Intel

Ollama na procesorze Intel CPU: wydajność w porównaniu do rdzeni o wysokiej wydajności

Page content

Mam teorię do przetestowania – czy wykorzystanie Wszystkich rdzeni na procesorze Intel zwiększy szybkość LLM? Denerwuje mnie fakt, że nowy model gemma3 27 bit (gemma3:27b, 17 GB na ollama) nie mieści się w 16 GB VRAM mojej karty graficznej i częściowo działa na procesorze.

Być precyzyjnym

ollama ps

pokazuje

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

Choć nie wygląda to źle, to są warstwy rozdzielone. Rzeczywisty obciążenie to: GPU:28%, CPU: 560%. Tak, kilka rdzeni jest wykorzystywanych.

Portret Llama i latające procesory

I tu jest pomysł:

Co jeśli zmusimy ollama do wykorzystania WSZYSTKICH rdzeni procesora Intel – zarówno wydajnych, jak i efektywnych?

Parametr konfiguracyjny OLLAMA_NUM_THREADS

Ollama ma parametr konfiguracyjny zmiennej środowiskowej OLLAMA_NUM_THREADS, który ma informować ollama, ile wątków i rdzeni powinien wykorzystać.

Najpierw spróbowałem ograniczyć go do 3 rdzeni:

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

# dodaj OLLAMA_NUM_THREADS=3 jako
# Environment="OLLAMA_NUM_THREADS=3"

sudo systemctl daemon-reload
sudo systemctl restart ollama

i nie zadziałało.

Ollama nadal wykorzystywał ~560% procesora, gdy uruchamiał się Gemma 3 27B LLM.

Niestety.

Opcja num_thread

Spróbujmy wywołać

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Dlaczego niebo jest niebieskie?",  
"stream": false,
"options":{
  "num_thread": 8
}
}'  | jq .

Wynik:

  • Użycie procesora: 585%
  • Użycie karty graficznej: 25%
  • Moc karty graficznej: 67w
  • Ocena wydajności: 6,5 tokenów/sec

Teraz spróbujmy podwoić liczby rdzeni. Powiedzmy ollama, aby wykorzystywał mieszankę rdzeni wydajnych i efektywnych:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Dlaczego niebo jest niebieskie?",  
"stream": false,
"options":{
  "num_thread": 16
}
}'  | jq .

Wynik:

  • Użycie procesora: 1030%
  • Użycie karty graficznej: 26%
  • Moc karty graficznej: 70w
  • Ocena wydajności: 7,4 t/s

Dobrze! Wydajność wzrosła o około 14%!

Teraz przejdźmy do ekstremum! Wszystkie fizyczne rdzenie!

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Dlaczego niebo jest niebieskie?",  
"stream": false,
"options":{
  "num_thread": 20
}
}'  | jq .

Wynik:

  • Użycie procesora: 1250%
  • Użycie karty graficznej: 10-26% (niestabilne)
  • Moc karty graficznej: 67w
  • Ocena wydajności: 6,9 t/s

Dobrze. Teraz widzimy pewne spadek wydajności. Spróbujmy 8 rdzeni wydajnych + 4 efektywne:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Dlaczego niebo jest niebieskie?",  
"stream": false,
"options":{
  "num_thread": 12
}
}'  | jq .

Wynik:

  • Użycie procesora: 801%
  • Użycie karty graficznej: 27% (niestabilne)
  • Moc karty graficznej: 70w
  • Ocena wydajności: 7,1 t/s

Tu i tam.

W porównaniu – uruchamiając Gemma 3 14b, jest mniej inteligentny niż Gemma 27b, ale dobrze mieści się w VRAM karty graficznej.

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:12b-it-qat",  
"prompt": "Dlaczego niebo jest niebieskie?",  
"stream": false
}'  | jq .

Wynik:

  • Użycie procesora: 106%
  • Użycie karty graficznej: 94% (niestabilne)
  • Moc karty graficznej: 225w
  • Ocena wydajności: 61,1 t/s

To jest to, co nazywamy wydajnością. Choć Gemma 3 27b jest bardziej inteligentny niż 14b, to nie o 10 razy!

Wnioski

Jeśli LLM nie mieści się w VRAM karty graficznej i niektóre warstwy są przekazywane przez Ollama na procesor

Przydatne linki