Cada llamada a una API de LLM alojada envía tu prompt al servidor de otra persona y te cobra por token. Se cae la red y deja de responder. Ollama elimina los dos problemas: descarga un modelo de pesos abiertos en tu máquina y lo sirve mediante una API REST en localhost:11434. Un solo binario hace de gestor de modelos, cliente de chat y servidor.
Qué hace Ollama en realidad
Ollama envuelve llama.cpp y motores de inferencia similares, así que nunca tocas un flag del compilador ni una ruta de biblioteca CUDA. ollama pull llama3.2 descarga un archivo de modelo cuantizado (formato GGUF) desde el propio registro de Ollama en lugar de Hugging Face, aunque también puede importar archivos GGUF desde allí. Ejecutar el modelo pasa esos pesos a un servidor en segundo plano, que los carga en RAM (o VRAM, si encuentra una GPU compatible), los mantiene en memoria unos minutos después de tu última petición para que la siguiente sea rápida, y los libera en cuanto dejas de preguntar.
La CLI, la API y el sistema de Modelfiles se apoyan todos en la misma tarea: llevar los pesos a memoria y encaminar las peticiones hacia ellos.
Cómo instalar Ollama y ejecutar tu primer modelo
En Linux o macOS:
| |
En Windows, ejecuta el instalador desde ollama.com, o usa:
| |
En ambos casos terminas con la CLI ollama y un servidor en segundo plano escuchando en el puerto 11434. Descarga un modelo pequeño y habla con él:
| |
ollama run te lleva a un prompt interactivo. Haz una pregunta, lee la respuesta, /bye para salir. Otros tres comandos que usarás constantemente:
| |
llama3.2 es una buena primera descarga: unos 2 GB, lo bastante rápido para correr en la CPU de un portátil. No es el modelo más potente de su categoría de tamaño. gemma4 lidera ahora la gama pequeña y además procesa imágenes, y qwen3-coder es mejor opción si estás probando asistencia de programación. Aun así, empieza con llama3.2: confirma que tu configuración funciona antes de comprometerte con una descarga de 20 GB.
Cómo hablar con Ollama a través de su API REST
El prompt interactivo sirve para comprobar que todo funciona. Cualquier cosa que construyas llama a la API. El formato nativo de Ollama es este:
| |
Con "stream": false recibes un único objeto JSON, que incluye eval_count y eval_duration, suficiente para medir los tokens por segundo en tu propio hardware. Ponlo en true y obtienes en su lugar una serie de objetos de respuesta parcial, que es lo que necesita una interfaz de chat.
Para conversaciones de varios turnos, /api/chat recibe un array messages con el mismo formato que usa la API de OpenAI:
| |
Ollama también habla el formato de la API de OpenAI de forma nativa en /v1, así que los SDK oficiales de OpenAI funcionan contra él sin modificarlos:
| |
Ollama ignora api_key, pero el constructor del SDK exige uno, así que sirve cualquier cadena no vacía. Eso lo convierte en la forma más rápida de apuntar una herramienta ya basada en OpenAI a un modelo local: cambias base_url y dejas el resto del código igual.
Hay otro endpoint que importa si estás montando una pipeline de retrieval-augmented generation en local. POST /api/embed convierte texto en vectores usando un modelo de embeddings (nomic-embed-text es la opción habitual), algo que un modelo de chat por sí solo no te da.
Cómo ejecutar Ollama en Docker
Si todo lo demás en la máquina ya es un contenedor, Ollama ofrece una imagen oficial en lugar de pedirte que instales algo en el host:
| |
El volumen con nombre no es opcional en la práctica: sin él, cada modelo que descargaste desaparece en cuanto se elimina el contenedor. Para descargar y ejecutar un modelo dentro del contenedor en marcha:
| |
En una máquina con GPU NVIDIA, instala primero el NVIDIA Container Toolkit en el host y luego añade un solo flag:
| |
Las GPU de AMD usan una etiqueta de imagen distinta y montajes de dispositivo en lugar de --gpus:
| |
Como servicio de Docker Compose, lo mismo se reduce al puerto y al volumen, nada más:
| |
Exponer ese contenedor más allá de localhost es tarea de un reverse proxy con TLS por delante, igual que con cualquier otro servicio backend. Ollama no tiene autenticación propia, así que un puerto 11434 accesible desde la red es un servidor de modelos que cualquiera puede usar.
Cómo personalizar un modelo con un Modelfile
Un Modelfile fija un system prompt, una temperatura y una secuencia de parada sobre un modelo existente sin reentrenarlo. Crea un archivo llamado Modelfile:
| |
Luego constrúyelo y ejecútalo:
| |
code-reviewer aparece ahora como su propia entrada en ollama list, aunque los pesos son exactamente los que usa llama3.2. Solo el system prompt y los parámetros de muestreo quedan integrados. La ventaja es que cualquier cliente que llame a ese nombre hereda la configuración sin tener que enviarla.
Qué tamaño de modelo se ajusta a tu RAM
El número en el nombre de un modelo es su recuento de parámetros, y predice bastante bien cuánta RAM (o VRAM, para inferencia en GPU) necesitas:
| Tamaño del modelo | RAM/VRAM mínima | Realista en |
|---|---|---|
| 1-3B | 4-8 GB | Cualquier portátil reciente, solo CPU |
| 7-9B | 8-16 GB | Un portátil con 16 GB de RAM, lento solo con CPU |
| 13-14B | 16-24 GB | Una GPU dedicada con 12+ GB de VRAM |
| 30B+ | 24-48 GB+ | Una GPU con 24+ GB de VRAM, o una instancia cloud con GPU |
Esas cifras suponen la cuantización de 4 bits que Ollama descarga por defecto, que sacrifica algo de calidad de salida a cambio de un tamaño de descarga y una huella de memoria unas cuatro veces menores que los pesos de precisión completa. Para resumir texto o redactar mensajes de commit, la cuantización no es lo que vas a notar. Quedarte sin RAM sí. En cuanto el modelo empieza a usar swap en disco, pasa de lento a inutilizable, una diferencia mucho mayor que un punto de precisión.
Cuándo Ollama no es la herramienta adecuada
Ollama está pensado para que una persona hable con un modelo en su propia máquina. No hace batching de peticiones ni ningún tipo de scheduling que permita a una GPU servir a decenas de usuarios simultáneos de forma eficiente; para eso están vLLM, TGI o una API alojada. Si vas a poner un modelo local delante de tráfico real, mide el throughput de Ollama bajo carga concurrente antes de comprometerte: una sola instancia se cae mucho antes de lo que lo haría un servidor con batching de verdad.
Tampoco es una herramienta de fine-tuning. Un Modelfile cambia un system prompt y los parámetros de muestreo, nunca los pesos. Conseguir que un modelo aprenda un comportamiento nuevo a partir de tus ejemplos es un pipeline aparte.
Ninguno de los dos límites afecta a un desarrollador con un portátil. Descarga un modelo que quepa cómodamente bajo tu tope de RAM, ejecútalo una vez desde la CLI y luego llámalo con curl en /api/generate. Si la respuesta vuelve en un par de segundos y dice lo que esperabas, tienes un servidor de inferencia local que cualquier herramienta compatible con OpenAI puede usar.