DEV Community

Carlos m. Ruiz
Carlos m. Ruiz

Posted on

runners y cuantificacion de modelos

¿Qué es un runner de modelos de IA y por qué es tan importante?

Cuando hablamos de ejecutar modelos de lenguaje como Llama, Mistral, Phi-3 u otros LLMs, es común pensar que el modelo “se ejecuta solo”.
Sin embargo, en la práctica necesitamos una pieza clave del ecosistema: el runner (o ejecutor).

Un runner es un programa encargado de cargar, ejecutar y gestionar un modelo de IA en tu hardware. Actúa como el puente entre los pesos del modelo y tu aplicación.

En términos simples, un runner se encarga de:

  • Cargar los pesos del modelo desde el disco (por ejemplo archivos .gguf, .safetensors, .bin, etc.).
  • Ejecutar el modelo usando CPU, GPU o NPU (aceleradores de IA).
  • Recibir texto (y en algunos casos imágenes o audio) como entrada.
  • Devolver la respuesta generada por el modelo.

Sin un runner, el modelo es solo un archivo de datos inerte.


Ejemplos comunes de runners

Un runner es el software responsable de interpretar y ejecutar un modelo de lenguaje. Existen muchos, pero estos son algunos de los más utilizados hoy en día:


llama.cpp

llama.cpp es un runner escrito en C++ que permite ejecutar modelos en formato GGUF, como por ejemplo:

Fara-7B-Q4_K_M.gguf
Enter fullscreen mode Exit fullscreen mode

Está altamente optimizado para funcionar en CPU, lo que lo hace ideal para ejecutar modelos en laptops o PCs sin GPU potente.
Además, soporta aceleración por GPU mediante tecnologías como CUDA, Metal (Apple), Vulkan, entre otras.

Este proyecto es la base de muchos otros, como llama-cpp-python, que permite integrar estos modelos directamente en aplicaciones Python.


Ollama

Ollama es uno de los runners más populares por su simplicidad y experiencia de usuario.

Permite descargar y ejecutar modelos con comandos muy simples:

ollama run llama3
ollama run phi3:mini
Enter fullscreen mode Exit fullscreen mode

Ollama se encarga automáticamente de:

  • Descargar el modelo correcto.
  • Seleccionar el formato adecuado.
  • Ejecutarlo en el hardware disponible.

Es ideal para desarrolladores que quieren probar modelos rápidamente, crear prototipos, experimentar con agentes o flujos RAG, sin lidiar con configuraciones complejas antes de pasar a producción.


vLLM

vLLM es un runner diseñado específicamente para GPU y entornos de alto rendimiento.

Está optimizado para:

  • Baja latencia.
  • Uso eficiente de memoria.
  • Manejar muchas peticiones concurrentes.

Por estas razones, se utiliza principalmente en servidores, APIs y sistemas en producción donde se necesita servir modelos grandes a muchos usuarios simultáneamente.


Hugging Face Transformers + Accelerate

Las librerías Transformers y Accelerate de Hugging Face permiten cargar y ejecutar modelos directamente desde Python.

Soportan aceleración con:

  • CUDA (NVIDIA).
  • MPS (Apple Silicon).
  • CPU tradicional.

Ofrecen una gran flexibilidad para investigación, desarrollo y fine-tuning, aunque suelen requerir más memoria y una configuración más compleja que runners más ligeros como llama.cpp u Ollama.


¿Por qué necesitamos un runner?

Una pregunta muy común es:

“Si ya tengo el modelo, ¿por qué necesito un runner?”

La respuesta es sencilla:
el modelo no es un programa ejecutable.

Los archivos del modelo (.gguf, .safetensors, .bin, etc.) contienen únicamente los pesos entrenados de la red neuronal.
No saben cómo ejecutarse por sí mismos.

El runner es quien se encarga de:

  • Leer los archivos del modelo.
  • Cargar los pesos en memoria.
  • Ejecutar las operaciones matemáticas necesarias (multiplicaciones de matrices, atención, funciones de activación, etc.).
  • Gestionar el uso de CPU, GPU y memoria.
  • Devolver el texto, respuestas o acciones que luego integras en tu aplicación.

Sin un runner, no hay inferencia.


Cuantización de modelos

Otro concepto clave cuando trabajamos con runners es la cuantización.

¿Qué es la cuantización?

La cuantización es una técnica que reduce el tamaño y el consumo de memoria de un modelo, a cambio de una ligera pérdida de precisión.

En la práctica, permite ejecutar modelos grandes en hardware más limitado.


Objetivos de la cuantización

  • Reducir el espacio que ocupa el modelo en disco.
  • Disminuir el uso de RAM o VRAM.
  • Aumentar la velocidad de inferencia, especialmente en CPU.
  • Hacer posible ejecutar modelos LLM en laptops, mini PCs o servidores modestos.

Formatos y tipos comunes

Algunos formatos y representaciones habituales son:

  • float16, bfloat16 Mayor precisión, mayor consumo de memoria.
  • int8, int4 Menor tamaño y más velocidad, con ligera pérdida de calidad.
  • GGUF Formato de archivo moderno usado por llama.cpp y muchos runners, diseñado específicamente para modelos cuantizados.

Ejemplo práctico

Para entender el impacto real:

  • Modelo 7B en float16: ➜ ~14 GB de memoria.
  • Modelo 7B cuantizado en Q4_K_M: ➜ ~4–5 GB de memoria.

Esta diferencia es lo que hace posible ejecutar modelos avanzados localmente, sin necesidad de GPUs de gama alta.


Conclusión

Los runners y la cuantización son piezas fundamentales del ecosistema de modelos de lenguaje modernos.
Gracias a ellos, hoy podemos ejecutar LLMs de forma local, eficiente y accesible, desde una laptop hasta un servidor en producción.

Entender cómo funcionan te permite elegir mejor tus herramientas, optimizar recursos y diseñar sistemas de IA más robustos y escalables 🚀

Top comments (0)