Test : Comment Ollama utilise les performances du processeur Intel et les cœurs efficaces

Ollama sur processeur Intel : cœurs d'efficacité vs cœurs de performance

Sommaire

J’ai une théorie à tester - si l’utilisation de tous les cœurs d’un processeur Intel augmenterait la vitesse des LLMs ? Cela me tracasse que le nouveau modèle gemma3 27 bit (gemma3:27b, 17 Go sur ollama) ne s’adapte pas dans les 16 Go de VRAM de ma carte graphique, et qu’il s’exécute partiellement sur le CPU.

Pour être précis

ollama ps

affiche

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

Bien que cela ne semble pas terrible, c’est la répartition des couches. La charge réelle est : GPU : 28 %, CPU : 560 %. Oui, plusieurs cœurs sont utilisés.

Le portrait de Llama et les CPUs en vol

Et voici une idée :

Et si on poussait ollama à utiliser TOUS les cœurs du processeur Intel - tant les cœurs de performance que les cœurs efficaces ?

Paramètre de configuration OLLAMA_NUM_THREADS

Ollama a un paramètre de configuration d’environnement OLLAMA_NUM_THREADS qui est censé indiquer à ollama combien de threads et de cœurs il devrait utiliser.

J’ai d’abord essayé de le limiter à 3 cœurs :

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

# ajouter OLLAMA_NUM_THREADS=3 comme
# Environment="OLLAMA_NUM_THREADS=3"

sudo systemctl daemon-reload
sudo systemctl restart ollama

mais cela n’a pas fonctionné.

Ollama utilisait toujours environ 560 % du CPU lors de l’exécution du LLM Gemma 3 27B.

Mauvaise chance.

Option de rappel num_thread

Essayons maintenant d’appeler

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Pourquoi le ciel est-il bleu ?",  
"stream": false,
"options":{
  "num_thread": 8
}
}'  | jq .

Le résultat :

  • Utilisation du CPU : 585 %
  • Utilisation de la GPU : 25 %
  • Puissance de la GPU : 67 W
  • Évaluation des performances : 6,5 tokens/sec

Maintenant, essayons de doubler le nombre de cœurs. Disons à ollama d’utiliser un mélange de cœurs de performance et de cœurs efficaces :

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Pourquoi le ciel est-il bleu ?",  
"stream": false,
"options":{
  "num_thread": 16
}
}'  | jq .

Le résultat :

  • Utilisation du CPU : 1030 %
  • Utilisation de la GPU : 26 %
  • Puissance de la GPU : 70 W
  • Évaluation des performances : 7,4 t/s

Très bien ! Les performances ont augmenté de ~14 % !

Maintenant, allons plus loin ! Utilisons tous les cœurs physiques :

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Pourquoi le ciel est-il bleu ?",  
"stream": false,
"options":{
  "num_thread": 20
}
}'  | jq .

Le résultat :

  • Utilisation du CPU : 1250 %
  • Utilisation de la GPU : 10-26 % (instable)
  • Puissance de la GPU : 67 W
  • Évaluation des performances : 6,9 t/s

D’accord. Maintenant, nous observons une baisse des performances. Essayons un mélange de 8 cœurs de performance + 4 cœurs efficaces :

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Pourquoi le ciel est-il bleu ?",  
"stream": false,
"options":{
  "num_thread": 12
}
}'  | jq .

Le résultat :

  • Utilisation du CPU : 801 %
  • Utilisation de la GPU : 27 % (instable)
  • Puissance de la GPU : 70 W
  • Évaluation des performances : 7,1 t/s

Ici et là.

À titre de comparaison - l’exécution du modèle Gemma 3 14b est moins performant que le Gemma 27b, mais il s’adapte bien à la VRAM de la GPU.

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:12b-it-qat",  
"prompt": "Pourquoi le ciel est-il bleu ?",  
"stream": false
}'  | jq .

Le résultat :

  • Utilisation du CPU : 106 %
  • Utilisation de la GPU : 94 % (instable)
  • Puissance de la GPU : 225 W
  • Évaluation des performances : 61,1 t/s

C’est ce qu’on appelle une performance. Même si le Gemma 3 27b est plus intelligent que le 14b, il ne l’est pas de 10 fois !

Conclusion

Si le LLM ne tient pas dans la VRAM de la GPU et que certaines couches sont déchargées par Ollama sur le CPU

Liens utiles