Teste: Como a Ollama está utilizando o desempenho da CPU e os núcleos eficientes da Intel
Ollama em CPU da Intel: núcleos eficientes vs. núcleos de desempenho
Tenho uma teoria para testar – se utilizar todos os núcleos de um processador Intel aumentaria a velocidade dos LLMs? Estou incomodado com o fato de que o novo modelo gemma3 27 bit (gemma3:27b, 17GB no ollama) não está cabendo na VRAM de 16GB da minha GPU, e está sendo executado parcialmente no CPU.
Para ser mais preciso
ollama ps
mostra
gemma3:27b a418f5838eaf 22 GB 29%/71% CPU/GPU
Embora não pareça terrível, é a divisão das camadas. A carga real é: GPU:28%, CPU: 560%. Sim, vários núcleos estão sendo usados.
E aqui está a ideia:
E se empurrarmos o ollama para usar TODOS os núcleos do processador Intel – tanto os de desempenho quanto os eficientes?
Parâmetro de configuração OLLAMA_NUM_THREADS
O ollama tem uma variável de ambiente de configuração chamada OLLAMA_NUM_THREADS, que supostamente deve dizer ao ollama quantos threads e núcleos ele deve utilizar.
Tentei restringi-lo a 3 núcleos primeiro:
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
mas não funcionou.
O ollama ainda estava usando ~560% do CPU ao executar o LLM Gemma 3 27B.
Azar.
Opção de chamada num_thread
Vamos tentar chamar
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Por que o céu azul é azul?",
"stream": false,
"options":{
"num_thread": 8
}
}' | jq .
O resultado:
- Uso do CPU: 585%
- Uso da GPU: 25%
- Potência da GPU: 67w
- Avaliação de desempenho: 6,5 tokens/seg
Agora vamos dobrar os núcleos. Dizendo ao ollama para usar uma mistura de núcleos de desempenho e eficientes:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Por que o céu azul é azul?",
"stream": false,
"options":{
"num_thread": 16
}
}' | jq .
O resultado:
- Uso do CPU: 1030%
- Uso da GPU: 26%
- Potência da GPU: 70w
- Avaliação de desempenho: 7,4 t/s
Boa! O desempenho aumentou em cerca de 14%!
Agora vamos ao extremo! Todos os núcleos físicos!
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Por que o céu azul é azul?",
"stream": false,
"options":{
"num_thread": 20
}
}' | jq .
O resultado:
- Uso do CPU: 1250%
- Uso da GPU: 10-26% (instável)
- Potência da GPU: 67w
- Avaliação de desempenho: 6,9 t/s
Okay. Agora vemos uma queda no desempenho. Vamos tentar alguns 8 de desempenho + 4 eficientes:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "Por que o céu azul é azul?",
"stream": false,
"options":{
"num_thread": 12
}
}' | jq .
O resultado:
- Uso do CPU: 801%
- Uso da GPU: 27% (instável)
- Potência da GPU: 70w
- Avaliação de desempenho: 7,1 t/s
Aqui e ali.
Para comparação – executando o Gemma 3 14b, ele é menos inteligente comparado ao Gemma 27b, mas se encaixa bem na VRAM da GPU.
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:12b-it-qat",
"prompt": "Por que o céu azul é azul?",
"stream": false
}' | jq .
O resultado:
- Uso do CPU: 106%
- Uso da 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 mais!
Conclusão
Se o LLM não couber na VRAM da GPU e algumas camadas forem desempenhadas pelo Ollama para o CPU
- Podemos aumentar o desempenho do LLM em 10-14% fornecendo o parâmetro
num_thread
- A queda no desempenho devido à desempenha é muito maior e não compensada por esse aumento.
- Melhor ter uma GPU mais poderosa com mais VRAM. A RTX 3090 é melhor que a RTX 5080, embora eu não tenha nenhum desses…
Links úteis
- Como o Ollama lida com solicitações paralelas
- Mover modelos do Ollama para um disco ou pasta diferente
- Dica rápida do Ollama
- Comparação de desempenho de velocidade dos LLMs
- Deepseek-r1 no Ollama
- Detecção de falácias lógicas com LLMs
- Implantar um site gerado pelo Hugo no AWS S3
- Comparando as habilidades de resumo dos LLMs
- Escrever prompts eficazes para LLMs
- Problemas de degradação em CPUs de 13ª e 14ª geração da Intel
- Converter conteúdo HTML em Markdown usando LLM e Ollama
- O Quadro RTX 5880 Ada 48GB é bom?
- Reclassificação de documentos de texto com Ollama e modelo de embedding Qwen3 - em Go