Teste: Como o Ollama está utilizando os núcleos de desempenho e eficientes da CPU Intel

Ollama em CPUs Intel: núcleos eficientes versus núcleos de desempenho

Conteúdo da página

Tenho uma teoria para testar: se utilizar todos os núcleos de uma CPU Intel aumentaria a velocidade dos LLMs? Isso tem me incomodado: o novo modelo gemma3 de 27 bilhões (gemma3:27b, 17GB no Ollama) não cabe nos 16GB de VRAM da minha GPU e está rodando parcialmente na CPU.

Para saber mais sobre vazão (throughput), latência, VRAM e benchmarks em diferentes ambientes e hardware, veja Desempenho de LLM: Benchmarks, Gargalos & Otimização.

Para ser preciso:

ollama ps

está mostrando:

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

Embora não pareça terrível, é uma divisão de camadas. A carga real é: GPU: 28%, CPU: 560%. Sim, vários núcleos estão sendo usados.

A pintura de Llama e CPUs voando

E aqui está a ideia:

E se forçarmos o Ollama a usar TODOS os núcleos da CPU Intel - tanto os de Performance quanto os Eficientes?

Parâmetro de configuração OLLAMA_NUM_THREADS

O Ollama possui um parâmetro de configuração de variável de ambiente OLLAMA_NUM_THREADS, que deveria dizer ao Ollama quantos threads e núcleos deve utilizar.

Tentei primeiro restringir a 3 núcleos:

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

# Coloque OLLAMA_NUM_THREADS=3 como
# Environment="OLLAMA_NUM_THREADS=3"

sudo systemctl daemon-reload
sudo systemctl restart ollama

e não funcionou.

O Ollama ainda estava usando ~560% da CPU ao rodar o LLM Gemma 3 27B.

Sorte ruim.

Opção de chamada num_thread

Vamos tentar chamar:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Why is the blue sky blue?",  
"stream": false,
"options":{
  "num_thread": 8
}
}'  | jq .

O resultado:

  • Uso de CPU: 585%
  • Uso de GPU: 25%
  • Potência da GPU: 67w
  • Avaliação de desempenho: 6,5 tokens/seg

Agora, vamos tentar dobrar os núcleos. Dizendo ao Ollama para usar uma mistura de núcleos de performance e eficientes:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Why is the blue sky blue?",  
"stream": false,
"options":{
  "num_thread": 16
}
}'  | jq .

O resultado:

  • Uso de CPU: 1030%
  • Uso de GPU: 26%
  • Potência da GPU: 70w
  • Avaliação de desempenho: 7,4 t/s

Bom! O desempenho aumentou em ~14%!

Agora vamos exagerar! Todos os núcleos físicos!

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Why is the blue sky blue?",  
"stream": false,
"options":{
  "num_thread": 20
}
}'  | jq .

O resultado:

  • Uso de CPU: 1250%
  • Uso de GPU: 10-26% (instável)
  • Potência da GPU: 67w
  • Avaliação de desempenho: 6,9 t/s

Ok. Agora vemos uma queda de desempenho. Vamos tentar 8 de Performance + 4 eficientes:

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:27b",  
"prompt": "Why is the blue sky blue?",  
"stream": false,
"options":{
  "num_thread": 12
}
}'  | jq .

O resultado:

  • Uso de CPU: 801%
  • Uso de GPU: 27% (instável)
  • Potência da GPU: 70w
  • Avaliação de desempenho: 7,1 t/s

Fica assim.

Para comparação - rodando o Gemma 3 14b, ele é menos inteligente comparado ao Gemma 27b, mas cabe perfeitamente na VRAM da GPU.

curl http://localhost:11434/api/generate -d '
{  
"model": "gemma3:12b-it-qat",  
"prompt": "Why is the blue sky blue?",  
"stream": false
}'  | jq .

O resultado:

  • Uso de CPU: 106%
  • Uso de GPU: 94% (instável)
  • Potência da GPU: 225w
  • Avaliação de desempenho: 61,1 t/s

Isso é o que chamamos de desempenho. Mesmo que o Gemma 3 27b seja mais inteligente que o 14b, não é 10 vezes!

Conclusão

Se o LLM não couber na VRAM da GPU e algumas camadas forem descarregadas pelo Ollama para a CPU:

  • Podemos aumentar o desempenho do LLM em 10-14% fornecendo o parâmetro num_thread
  • A queda de desempenho devido ao descarregamento é muito maior e não é compensada por esse aumento.
  • É melhor ter uma GPU mais potente com mais VRAM. A RTX 3090 é melhor que a RTX 5080, embora eu não tenha nenhuma delas

Para mais benchmarks, ajuste de CPU/GPU e orientações de desempenho, confira nosso hub Desempenho de LLM: Benchmarks, Gargalos & Otimização.

Assinar

Receba novos artigos sobre sistemas, infraestrutura e engenharia de IA.