Skip to content
BotServBotServ
OllamavelocidadPerformanceFlash AttentionKV-Cache

Optimizar la velocidad de Ollama

Acelera Ollama con Flash Attention, KV-Cache, cuantización, GPU y ajuste de parámetros.

S

schutzgeist

3 min read
Optimizar la velocidad de Ollama

Optimizar la velocidad de Ollama

Qué cubre este artículo sobre la velocidad de Ollama

  • Factores que ralentizan Ollama.
  • Flash Attention y optimizaciones ggml.
  • KV-Cache y sus efectos.
  • Cuantización y tamaño del modelo.
  • Configuración práctica y comandos.

Introducción: Optimizar la velocidad de Ollama

Ollama es fácil de usar, pero quien quiera extraer el máximo rendimiento de su hardware necesita comprender algunos detalles. Las bajas velocidades en tokens por segundo suelen deberse a una cuantización subóptima, contextos innecesariamente grandes, ejecución en CPU en lugar de GPU, u optimizaciones faltantes como Flash Attention. Con la configuración correcta es posible lograr mejoras significativas en muchos casos.

Este artículo muestra qué palancas tienes disponibles para hacer Ollama más rápido.

Conceptos clave

  • Flash Attention: Cálculo de atención eficiente en memoria.
  • KV-Cache: Buffer para pares clave-valor.
  • Cuantización: Reducción de la precisión del modelo.
  • num_gpu: Número de capas del modelo ejecutadas en GPU.
  • num_thread: Threads de CPU.
  • batch_size: Cantidad de tokens procesados simultáneamente.
  • mlock: Reserva de RAM para evitar swapping.
  • f16_kv: KV-Cache en formato half-float.

Palancas principales

Usar GPU en lugar de CPU

ollama run llama3.1

Si Ollama se ejecuta en CPU, verifica:

nvidia-smi

o

rocm-smi

Ollama debe ser detectado con CUDA o ROCm.

Forzar más capas en GPU

ollama run llama3.1 --verbose

En la llamada a la API:

{
  "options": {
    "num_gpu": 50
  }
}

num_gpu define cuántas capas del modelo se cargan en la GPU.

Activar Flash Attention

Ollama usa Flash Attention cuando es compatible. Algunos modelos necesitan compilación especial o una compilación ggml con soporte para Flash Attention. Las versiones recientes de Ollama a menudo lo activan automáticamente.

Reducir la cuantización

Una cuantización menor significa menos VRAM y cálculos más rápidos:

  • Q4_0: rápido, baja calidad.
  • Q4_K_M: buen compromiso.
  • Q5_K_M: mejor calidad.
  • Q8_0: archivo grande, alta calidad.
ollama run llama3.1:8b-instruct-q4_K_M

Reducir el contexto

PARAMETER num_ctx 4096

Más contexto significa más lentitud. No lo hagas más grande de lo necesario.

Limitar num_predict

PARAMETER num_predict 512

Esto evita respuestas demasiado largas y limita el tiempo de cálculo.

Ajustar threads de CPU

Para ejecución pura en CPU:

ollama run llama3.1

O mediante Modelfile:

PARAMETER num_thread 8

Usar mlock

Evita que Ollama se intercambie en disco:

PARAMETER use_mlock true

Medir la memoria

Observa durante la ejecución:

watch -n 1 nvidia-smi

Si la VRAM está llena, reduce el tamaño del modelo, la cuantización o el contexto.

Batch size

Las entradas más largas se procesan más rápido al aumentar num_batch:

PARAMETER num_batch 512

Pero no todos los modelos y backends se benefician por igual.

Temperatura en 0

Para pruebas reproducibles y algo más rápidas:

PARAMETER temperature 0

Actualizar Ollama

ollama -v

Las nuevas versiones suelen incluir mejoras de rendimiento.

Ejemplo práctico de Modelfile

FROM llama3.1:8b-instruct-q4_K_M

PARAMETER num_ctx 4096
PARAMETER num_gpu 50
PARAMETER num_predict 512
PARAMETER use_mlock true
PARAMETER num_batch 512
PARAMETER temperature 0.7

Consejos

  • Siempre verifica primero si se usa GPU.
  • Elige la cuantización más pequeña que sea adecuada.
  • No sobredimensiones el contexto.
  • Mantén Ollama actualizado.
  • Ejecuta benchmarks antes y después de la optimización.
  • Monitorea la temperatura del hardware.

Tropiezos típicos

  • Se ejecuta en CPU en lugar de GPU: Problema con drivers u instalación de Ollama.
  • num_ctx demasiado alto: La memoria se agota, el rendimiento cae.
  • Cuantización no soportada: El modelo regresa a CPU.
  • KV-Cache demasiado grande: Evaluación de prompt más lenta.
  • Versión antigua de Ollama: Flash Attention no disponible.
  • Limitación térmica: Más lento después de carga prolongada.

Enlaces e información adicional

Preguntas frecuentes: velocidad de Ollama

¿Por qué es lento Ollama? Normalmente ejecución en CPU, modelo demasiado grande, contexto alto o limitación térmica.

¿Cuál es la mejor forma de acelerar Ollama? Usar GPU, cuantización más pequeña, reducir contexto, mantener Ollama actualizado.

¿Flash Attention aporta mucho? Sí, especialmente con contextos largos, pero no siempre disponible.

¿Debo cambiar num_gpu? Puede ayudar si tienes problemas con la distribución automática.

¿Ayuda más RAM a la CPU? Solo si realiza cálculos en CPU. Para GPU es más importante la VRAM.

Fuentes y lecturas adicionales

Resumen: Optimizar la velocidad de Ollama

El rendimiento de Ollama mejora significativamente mediante el uso de GPU, cuantización adecuada, reducción del contexto y optimizaciones de cache. Flash Attention y versiones recientes de Ollama ayudan además. Quien realiza benchmarks regularmente y ajusta parámetros como num_ctx, num_predict y num_batch encontrará el equilibrio óptimo para su hardware y caso de uso.

Volver al blog
Share:

Entradas relacionadas