Optimizar el rendimiento de Ollama
Qué cubre este artículo sobre rendimiento de Ollama
- Cómo identificar dónde Ollama pierde velocidad.
- Cómo verificar el uso de GPU y los controladores.
- Cómo la cuantización y el tamaño del modelo afectan la velocidad.
- Cómo optimizar la longitud del contexto, el tamaño de lote y los parámetros.
- Consejos clave de ajuste y trampa comunes.
Introducción: optimizar el rendimiento de Ollama
Ollama es fácil de usar, pero la velocidad depende mucho del hardware, el tamaño del modelo y la configuración. Quien trabaja con modelos más grandes o procesa documentos extensos rápidamente nota que los tiempos de respuesta aumentan. Con algunos ajustes dirigidos, Ollama suele acelerarse considerablemente sin necesidad de invertir en hardware nuevo.
Este artículo muestra dónde optimizar el rendimiento de Ollama y cuáles son los controles más efectivos.
Conceptos clave
- Prompt-Eval: procesamiento de la entrada por parte del modelo.
- Generation: generación de la respuesta.
- Tokens por segundo: métrica de velocidad de generación.
- Context Window: número máximo de tokens en el contexto.
- KV-Cache: caché intermedio para tokens ya procesados.
- Batch Size: número de tokens procesados en paralelo.
- Cuantización: reducción del número de bits en los pesos del modelo.
- Offload: distribución del cálculo entre CPU y GPU.
Causas de rendimiento lento
- Modelo demasiado grande: no cabe en la VRAM, se ejecuta parcialmente en la CPU.
- Contextos demasiado largos: más contexto significa más cálculo.
- CPU en lugar de GPU: Ollama no detecta la GPU porque faltan controladores.
- Almacenamiento lento: RAM del sistema demasiado lenta o no en configuración dual-channel.
- Tamaño de modelo incorrecto: usar un modelo de 70B en lugar de la variante 8B apropiada.
- Demasiados modelos cargados: VRAM fragmentada.
Verificar el uso de GPU
ollama ps
nvidia-smi
Si Ollama no se ejecuta en la GPU, verifica los controladores. Para Nvidia, debe instalarse el controlador propietario. Para AMD, depende de ROCm.
Instalar controladores
Nvidia
sudo apt install -y nvidia-driver-535 nvidia-utils-535
AMD
sudo apt install -y amdgpu-install
sudo amdgpu-install -y --usecase=rocm
Nota: GPUs AMD antiguas como GCN 1.0 no son compatibles con ROCm.
Elegir el tamaño del modelo
Para la mayoría de tareas, modelos más pequeños son suficientes:
- Qwen 2.5 7B o 14B: buen rendimiento general.
- Llama 3.1 8B: amplio soporte.
- Mistral 7B o Nemo 12B: multilingüismo sólido.
Los modelos más grandes son mejores, pero solo si caben en la VRAM. De lo contrario, el rendimiento es peor que el de modelos más pequeños ejecutados completamente en la GPU.
Cuantización
La cuantización de 4 bits es el estándar. Con VRAM limitada, puedes probar 3 bits o 2 bits, con pérdida de calidad. Para programación y razonamiento, a menudo 5 bits es mejor.
ollama pull qwen2.5:14b-q4_K_M
ollama pull qwen2.5:14b-q5_K_M
Configurar la longitud del contexto
No todos los modelos admiten todas las longitudes de contexto. Valores num_ctx demasiado grandes ralentizan el procesamiento. A menudo 2048 o 4096 tokens son suficientes.
PARAMETER num_ctx 4096
En el Modelfile:
FROM qwen2.5:14b
PARAMETER num_ctx 4096
Variables de entorno de Ollama
En el archivo /etc/systemd/system/ollama.service.d/override.conf o en la configuración de Docker:
[Service]
Environment="OLLAMA_NUM_PARALLEL=4"
Environment="OLLAMA_MAX_LOADED_MODELS=2"
Environment="OLLAMA_GPU_OVERHEAD=1GB"
Después:
sudo systemctl daemon-reload
sudo systemctl restart ollama
Paralelismo
OLLAMA_NUM_PARALLEL determina cuántas solicitudes se procesan simultáneamente. Útil para configuraciones de servidor, para usuarios individuales generalmente 1.
Acelerar la inferencia en CPU
Cuando no hay GPU disponible:
- Usa una CPU actual con AVX2 o AVX512.
- Proporciona suficiente RAM.
- Permite múltiples threads:
PARAMETER num_thread 8
Monitoreo
Verifica regularmente:
ollama ps
free -h
nvidia-smi
Si el modelo se descarga a disco desde la memoria, se ralentizará.
Trampas comunes
- GPU no se detecta: faltan controladores o versión incorrecta.
- El modelo se ejecuta en CPU: demasiado grande para la VRAM.
- Longitud de contexto demasiado alta: ralentiza y causa errores.
- Múltiples modelos simultáneamente: VRAM fragmentada.
- Versión antigua de Ollama: las actualizaciones suelen traer mejoras de rendimiento.
Enlaces adicionales e información
- BotServ.de Comprar GPU para IA local
- BotServ.de Comparativa de GPUs
- BotServ.de Fundamentos de cuantización
- BotServ.de Funciones de Ollama
FAQ: Rendimiento de Ollama
¿Cómo verifico si Ollama usa mi GPU?
ollama ps muestra si un modelo usa CPU o GPU.
¿Por qué mi GPU es tan lenta? Probablemente el modelo es demasiado grande y se ejecuta parcialmente en la CPU.
¿Ayuda más VRAM? Sí, especialmente para cargar modelos más grandes completamente en la GPU.
¿Se recomienda cuantización de 3 bits? Solo si 4 bits no cabe en la memoria, ya que la calidad sufre.
¿Debo establecer num_ctx al máximo?
No, solo tanto como realmente necesites.
Fuentes y lecturas adicionales
- Docs de Ollama: https://github.com/ollama/ollama/blob/main/docs/
- Rendimiento de llama.cpp: https://github.com/ggerganov/llama.cpp/wiki/
- Nvidia CUDA: https://developer.nvidia.com/cuda-zone
Resumen: optimizar el rendimiento de Ollama
El rendimiento de Ollama mejora significativamente eligiendo el tamaño correcto de modelo, cuantización, controladores, longitud de contexto y parámetros de Ollama. La regla más importante es que el modelo debe caber completamente en la memoria de la GPU. Más grande no siempre es mejor si eso hace que los cálculos se desvíen a la CPU. Quien monitorea regularmente ollama ps, nvidia-smi y los recursos del sistema identifica rápidamente los principales cuellos de botella.


