Prueba: Cómo Ollama está utilizando el rendimiento de la CPU de Intel y los núcleos eficientes
Ollama en CPU de Intel: núcleos eficientes vs. núcleos de rendimiento
Tengo una teoría para probar: ¿si utilizamos todos los núcleos en una CPU de Intel aumentaría la velocidad de los LLMs? Me molesta que el nuevo modelo gemma3 de 27 bits (gemma3:27b, 17 GB en ollama) no se ajuste a los 16 GB de VRAM de mi GPU, y se ejecute parcialmente en la CPU.
Para ser más preciso
ollama ps
muestra
gemma3:27b a418f5838eaf 22 GB 29%/71% CPU/GPU
Aunque no parece terrible, es la división de capas. La carga real es: GPU:28%, CPU: 560%. Sí, varios núcleos se están utilizando.
Y aquí está la idea:
¿Qué pasa si forzamos a ollama a utilizar TODOS los núcleos de la CPU de Intel, tanto los de rendimiento como los eficientes?
Parámetro de configuración OLLAMA_NUM_THREADS
Ollama tiene un parámetro de configuración de variable de entorno OLLAMA_NUM_THREADS que se supone que le dice a ollama cuántos hilos y núcleos debe utilizar.
Primero intenté restringirlo a 3 núcleos:
sudo xed /etc/systemd/system/ollama.service
# poner OLLAMA_NUM_THREADS=3 como
# Environment="OLLAMA_NUM_THREADS=3"
sudo systemctl daemon-reload
sudo systemctl restart ollama
pero no funcionó.
Ollama aún estaba utilizando ~560% de CPU al ejecutar el LLM Gemma 3 27B.
Mala suerte.
Opción de llamada num_thread
Vamos a intentar llamar
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "¿Por qué es azul el cielo?",
"stream": false,
"options":{
"num_thread": 8
}
}' | jq .
El resultado:
- Uso de CPU: 585%
- Uso de GPU: 25%
- Potencia de GPU: 67w
- Evaluación de rendimiento: 6.5 tokens/sec
Ahora intentemos duplicar los núcleos. Le diremos a ollama que utilice una mezcla de núcleos de rendimiento y eficientes:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "¿Por qué es azul el cielo?",
"stream": false,
"options":{
"num_thread": 16
}
}' | jq .
El resultado:
- Uso de CPU: 1030%
- Uso de GPU: 26%
- Potencia de GPU: 70w
- Evaluación de rendimiento: 7.4 t/s
¡Bueno! El rendimiento aumentó aproximadamente un 14%.
Ahora vayamos al extremo. ¡Utilicemos todos los núcleos físicos!
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "¿Por qué es azul el cielo?",
"stream": false,
"options":{
"num_thread": 20
}
}' | jq .
El resultado:
- Uso de CPU: 1250%
- Uso de GPU: 10-26% (inestable)
- Potencia de GPU: 67w
- Evaluación de rendimiento: 6.9 t/s
Bien. Ahora vemos una caída de rendimiento. Intentemos algunos 8 de rendimiento + 4 eficientes:
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:27b",
"prompt": "¿Por qué es azul el cielo?",
"stream": false,
"options":{
"num_thread": 12
}
}' | jq .
El resultado:
- Uso de CPU: 801%
- Uso de GPU: 27% (inestable)
- Potencia de GPU: 70w
- Evaluación de rendimiento: 7.1 t/s
Aquí y allá.
Para comparación - al ejecutar Gemma 3 14b, es menos inteligente en comparación con Gemma 27b, pero se ajusta bien a la VRAM de la GPU.
curl http://localhost:11434/api/generate -d '
{
"model": "gemma3:12b-it-qat",
"prompt": "¿Por qué es azul el cielo?",
"stream": false
}' | jq .
El resultado:
- Uso de CPU: 106%
- Uso de GPU: 94% (inestable)
- Potencia de GPU: 225w
- Evaluación de rendimiento: 61.1 t/s
Eso es lo que llamamos rendimiento. Aunque Gemma 3 27b es más inteligente que 14b, no es 10 veces más.
Conclusión
Si el LLM no cabe en la VRAM de la GPU y algunas capas se transfieren a la CPU por parte de Ollama
- Podemos aumentar el rendimiento del LLM en un 10-14% proporcionando el parámetro
num_thread
- La caída de rendimiento debido a la transferencia es mucho mayor y no se compensa con este aumento.
- Tener una GPU más potente con más VRAM. La RTX 3090 es mejor que la RTX 5080, aunque no tengo ninguna de estas…
Enlaces útiles
- Cómo maneja Ollama las solicitudes paralelas
- Mover modelos de Ollama a un disco o carpeta diferente
- Hoja de trucos de Ollama
- Comparación del rendimiento de la velocidad de los LLM
- Deepseek-r1 en Ollama
- Detección de falacias lógicas con LLMs
- Implementar un sitio web generado con Hugo en AWS S3
- Comparación de las habilidades de resumen de LLM
- Escribir prompts efectivos para LLMs
- Problemas de degradación en las CPUs de 13ª y 14ª generación de Intel
- Convertir contenido HTML a Markdown usando LLM y Ollama
- ¿El Quadro RTX 5880 Ada 48GB es útil?
- Reclasificación de documentos de texto con Ollama y modelo de incrustación Qwen3 - en Go