Test: Come Ollama utilizza le prestazioni del processore Intel e i core efficienti
Ollama su CPU Intel: efficienza vs prestazioni
Ho un’idea da testare: se l’utilizzo di 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 entra nei 16 GB di VRAM della mia GPU e viene eseguito parzialmente sul CPU.
Per essere precisi
ollama ps
mostra
gemma3:27b a418f5838eaf 22 GB 29%/71% CPU/GPU
Sebbene non sembri terribile, i layer sono divisi. Il carico effettivo è: GPU:28%, CPU: 560%. Sì, vengono utilizzati diversi core.
Ecco l’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
# inserisci 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 ~560% del CPU quando eseguiva il modello LLM Gemma 3 27B.
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! Utilizziamo 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 un calo 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 - eseguendo 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 del 14b, non è 10 volte migliore!
Conclusione
Se l’LLM non entra nella VRAM della GPU e alcuni strati vengono scaricati da Ollama sul CPU
- Possiamo aumentare le prestazioni dell’LLM del 10-14% fornendo il parametro num_thread
- Il calo di prestazioni dovuto allo scaricamento è molto più alto e non è compensato da questo aumento.
- Meglio avere una GPU più potente con più VRAM. L’RTX 3090 è migliore dell’RTX 5080, anche se non ho nessuno di questi…
Link utili
- Come Ollama gestisce le richieste parallele
- Spostare i modelli Ollama in un diverso disco o cartella
- Ollama cheatsheet
- Confronto delle prestazioni di velocità degli LLM
- Deepseek-r1 su Ollama
- Rilevamento di fallacie logiche con gli LLM
- Pubblicare un sito web generato da Hugo su AWS S3
- Confronto delle capacità di sintesi degli LLM
- Scrivere prompt efficaci per gli LLM
- Problemi di degradazione nei processori Intel 13° e 14° generazione
- Convertire contenuti HTML in Markdown utilizzando LLM e Ollama
- Il Quadro RTX 5880 Ada 48GB è buono?
- Riordinare documenti di testo con Ollama e modello Qwen3 Embedding - in Go