Test: Come Ollama utilizza le prestazioni della CPU Intel e i core efficienti
Ollama su CPU Intel: efficienza vs prestazioni
Ho un’ipotesi da testare: se utilizzare TUTTI i core su un processore Intel aumenterebbe la velocità degli LLM? Mi sta infastidendo il fatto che il nuovo modello gemma3 27 bit (gemma3:27b, 17 GB su ollama) non si adatti ai 16 GB di VRAM della mia GPU, e venga eseguito parzialmente sul CPU.
Per ulteriori informazioni sul throughput, la latenza, la VRAM e i benchmark su diversi runtimes e hardware, vedi Prestazioni degli LLM: Benchmark, collo di bottiglia & Ottimizzazione.
Per essere precisi
ollama ps
mostra
gemma3:27b a418f5838eaf 22 GB 29%/71% CPU/GPU
Sebbene non sembri terribile, è la divisione dei layer. Il carico effettivo è: GPU: 28%, CPU: 560%. Sì, vengono utilizzati diversi core.

E qui c’è un’idea:
Cosa succederebbe se spingessimo ollama a utilizzare TUTTI i core del processore Intel - sia quelli di Prestazione che quelli Efficienti?
Parametro di configurazione OLLAMA_NUM_THREADS
Ollama ha un parametro di configurazione dell’ambiente OLLAMA_NUM_THREADS che dovrebbe indicare a ollama quanti thread e core dovrebbe utilizzare.
Ho provato prima a limitarlo a 3 core:
sudo xed /etc/systemd/system/ollama.service
# metti OLLAMA_NUM_THREADS=3 come
# Environment="OLLAMA_NUM_THREADS=3"
sudo systemctl daemon-reload
sudo systemctl restart ollama
ma non ha funzionato.
Ollama continuava comunque a utilizzare circa il 560% del CPU quando eseguiva il modello Gemma 3 27B LLM.
Sfortunatamente.
Opzione num_thread
Proviamo a chiamare
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Perché il cielo è blu?",
"stream": false,
"options":{
"num_thread": 8
}
}' | jq .
Il risultato:
- Utilizzo CPU: 585%
- Utilizzo GPU: 25%
- Potenza GPU: 67w
- Valutazione delle prestazioni: 6,5 token/sec
Ora proviamo a raddoppiare i core. Diciamo a ollama di utilizzare una combinazione di core di prestazione e efficienti:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Perché il cielo è blu?",
"stream": false,
"options":{
"num_thread": 16
}
}' | jq .
Il risultato:
- Utilizzo CPU: 1030%
- Utilizzo GPU: 26%
- Potenza GPU: 70w
- Valutazione delle prestazioni: 7,4 t/s
Bene! Le prestazioni sono aumentate del ~14%!
Ora andiamo all’estremo! Tutti i core fisici!
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Perché il cielo è blu?",
"stream": false,
"options":{
"num_thread": 20
}
}' | jq .
Il risultato:
- Utilizzo CPU: 1250%
- Utilizzo GPU: 10-26% (instabile)
- Potenza GPU: 67w
- Valutazione delle prestazioni: 6,9 t/s
Okay. Ora vediamo una leggera riduzione delle prestazioni. Proviamo con 8 core di prestazione + 4 efficienti:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Perché il cielo è blu?",
"stream": false,
"options":{
"num_thread": 12
}
}' | jq .
Il risultato:
- Utilizzo CPU: 801%
- Utilizzo GPU: 27% (instabile)
- Potenza GPU: 70w
- Valutazione delle prestazioni: 7,1 t/s
Qui e là.
Per confronto - eseguire Gemma 3 14b, è meno intelligente rispetto a Gemma 27b, ma si adatta bene alla VRAM della GPU.
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:12b-it-qat",
"prompt": "Perché il cielo è blu?",
"stream": false
}' | jq .
Il risultato:
- Utilizzo CPU: 106%
- Utilizzo GPU: 94% (instabile)
- Potenza GPU: 225w
- Valutazione delle prestazioni: 61,1 t/s
Questo è ciò che chiamiamo prestazioni. Anche se Gemma 3 27b è più intelligente di 14b, non è 10 volte migliore!
Conclusione
Se l’LLM non si adatta alla VRAM della GPU e alcuni layer vengono spostati da Ollama sul CPU
- Possiamo aumentare le prestazioni dell’LLM del 10-14% fornendo il parametro
num_thread - La riduzione delle prestazioni dovuta allo spostamento è molto maggiore e non è compensata da questo aumento.
- Meglio avere una GPU più potente con più VRAM. L’RTX 3090 è migliore dell’RTX 5080, anche se non ho nessuna di queste…
Per ulteriori benchmark, ottimizzazione CPU/GPU e guide sulle prestazioni, controlla il nostro Prestazioni degli LLM: Benchmark, collo di bottiglia & Ottimizzazione hub.