⚙️ Instalación y técnicas
El corazón práctico del curso: instala Ollama y ejecuta tu primer modelo, consigue una interfaz tipo ChatGPT, aprende a elegir GGUF y la cuantización, ajusta el contexto y la temperatura, sirve una API local compatible con OpenAI y arma un RAG de tus documentos.
Mapa de la ruta
🚀 Primer modelo
Ollama en un comando
💬 Interfaz gráfica
Chat en el navegador
📦 GGUF y cuantización
Descargar el modelo correcto
🎛️ Parámetros
Los botones de la respuesta
🔌 API local
Compatible con OpenAI
🧠 Embeddings y RAG
Memoria de tus documentos
Contenido detallado
🚀 Primer modelo en ejecución: Ollama
De cero al primer chat con la mínima fricción: instalar, descargar y ejecutar un modelo local.
Runtime que descarga, administra y ejecuta modelos locales con un comando; envuelve llama.cpp.
Es el camino más corto al primer resultado.
Runtime, llama.cpp, multiplataforma.
En Mac/Linux, un único script; en Windows, un instalador gráfico.
Sin compilación ni dependencias manuales.
instala curl, ollama --version.
El comando ollama run descarga el modelo y abre el prompt para que puedas conversar.
Ver el modelo responder demuestra que el laboratorio funciona.
ollama run, llama3.2, qwen2.5.
Comandos para descargar, listar, eliminar y ver lo que está en ejecución.
Mantiene el disco y la memoria bajo control.
pull, list, rm, ps.
Las etiquetas :2b/:7b/:14b vinculan el modelo con la regla de memoria de la Ruta 2.
Elegir mal bloquea o fuerza el swapping en disco.
Etiquetas de tamaño, VRAM/RAM, empezar poco a poco.
Modelfile es la receta que define el system prompt, los parámetros y el modelo base.
Crea un asistente con personalidad sin programar.
Modelfile, SYSTEM, ollama create.
💬 Interfaz tipo ChatGPT: Open WebUI & LM Studio
Del terminal al navegador: chat con historial, varios modelos y archivos adjuntos.
Chat con historial, cambio de modelo y archivos adjuntos, fuera de la terminal.
Acerca la experiencia local a la de ChatGPT.
Historial, varios modelos y archivos adjuntos.
Frontend que se comunica con Ollama o cualquier API compatible con OpenAI y se ejecuta localmente.
Es la interfaz estándar de la comunidad local.
Frontend, compatible con OpenAI, local.
Un comando docker run inicia la interfaz en el puerto 3000.
Se instala de forma aislada, sin ensuciar el sistema.
docker run, puerto 3000, volumen.
App que descarga GGUF e incluye chat y servidor local.
Ruta 100 % gráfica para quienes no quieren usar la terminal.
GGUF, servidor integrado, escritorio.
Configura la UI para el endpoint de Ollama y cambia de modelo.
Es el vínculo entre la apariencia bonita y el motor.
Endpoint, selección de modelo, system prompt en la UI.
Múltiples chats, RAG de documentos, perfiles de prompt y usuarios.
Convierte el juguete en una herramienta de uso diario.
Múltiples chats, RAG, perfiles.
📦 Elegir y descargar el modelo adecuado: GGUF y cuantización
Dónde encontrar modelos, qué formato descargar y qué cuantización ofrece la mejor relación costo × calidad.
Repositorio central de modelos abiertos, con una ficha de modelo por cada modelo.
Es de ahí de donde sale casi todo lo que vas a ejecutar.
Repositorio, ficha de modelo, modelos abiertos.
GGUF es el formato empaquetado para ejecutar mediante llama.cpp/Ollama en CPU/GPU.
Descargar el formato equivocado no funciona en tu runtime.
GGUF, safetensors, GPTQ/AWQ.
Sufijos como Q4_K_M, Q5 y Q8 indican cuánto se comprimieron los pesos.
Q4_K_M/Q5_K_M suelen ofrecer el equilibrio entre calidad y tamaño.
Q4_K_M, Q5, Q8, punto ideal.
pull por la etiqueta de Ollama, o descargar el GGUF de HF e importarlo.
Cada camino sirve para un runtime y un nivel de control.
ollama pull, GGUF do HF, ollama create.
Repasa la regla de memoria para elegir la cuantización según la VRAM/RAM.
Evita elegir un modelo que no cabe.
Regla de memoria, flujo de decisión, cuantización según la VRAM.
Verifica el checksum y prueba con un prompt estándar, comparando quants.
Una cuantización demasiado agresiva degrada la respuesta.
Checksum, prompt estándar, comparar cuantizaciones.
🎛️ Parámetros y calidad: contexto, temperatura, offload
Los botones que cambian la respuesta y la velocidad, y cómo diagnosticar cuando algo se atasca.
num_ctx define cuánto lee el modelo de una vez; un contexto largo consume memoria (KV cache).
Aumentar sin criterio agota la memoria.
num_ctx, KV cache, costo de memoria.
La temperatura mide qué tan aleatorio/creativo es el texto; baja = determinista.
Cada tarea requiere una receta (código = baja, lluvia de ideas = alta).
temperatura, top_p, top_k.
Define el rol, el formato y las restricciones de la respuesta.
Es la palanca más barata para mejorar la calidad.
Rol, formato, restricciones.
num_gpu define cuántas capas caben en la GPU; el resto va a la CPU, más lenta.
Equilibrar el offload es lo que permite que quepa y acelera el proceso.
num_gpu, capas, GPU vs. CPU.
Qué acelera o ralentiza la generación, incluida la cuantización de la caché KV.
Pequeños ajustes pueden duplicar los tokens/s.
Caché KV, batch, tokens/s.
Lista de verificación de causas: modelo demasiado grande, cuantización agresiva, contexto enorme, swapping.
Resolver por tu cuenta sin adivinar a ciegas.
OOM, quant, contexto, swapping.
🔌 Sirviendo mediante una API local compatible con OpenAI
Convierte el modelo local en un endpoint que tus apps, scripts y agentes consumen como OpenAI.
Exponer el modelo local como si fuera OpenAI para apps y scripts.
Es lo que conecta el modelo con los agentes de la Trilha 4.
Endpoint, integración, reutilización.
Ollama sirve en localhost:11434, con rutas nativas y /v1 compatible con OpenAI.
Saber cuál es la ruta adecuada evita la mitad de los errores.
localhost:11434, /v1, rutas.
Un curl para /v1/chat/completions devuelve la respuesta en JSON.
Confirma que la API responde antes de escribir código.
curl, chat/completions, JSON.
El mismo SDK de OpenAI apuntado al base_url local.
Aprovecha todo el ecosistema existente.
SDK de OpenAI, base_url, api_key dummy.
stream:true para responder en tiempo real, usar la ruta de embeddings y enrutar por modelo.
Cubre los usos reales más allá del chat simple.
stream, embeddings, enrutamiento.
OLLAMA_HOST=0.0.0.0 + Tailscale para acceder desde otra máquina, sin abrirlo a Internet público.
Acceso remoto sin dejar un agujero de seguridad.
OLLAMA_HOST, tailnet, sin puerto público.
🧠 Embeddings, memoria y RAG básico
Dale memoria al modelo: busca fragmentos relevantes de tus documentos y responde basándote en ellos.
Vectores que representan el significado de un texto; los parecidos quedan cerca en el espacio.
Es la base de toda búsqueda por similitud.
Vector, similitud, espacio semántico.
RAG (Retrieval-Augmented Generation) busca fragmentos relevantes y se los da al modelo como contexto.
Responde sobre TUS documentos sin volver a entrenar.
RAG, retrieval, contexto.
Ingesta (fragmento → embedding → guardar) y consulta (embedding de la pregunta → buscar vecinos → armar el prompt).
Entender el flujo es lo que permite depurarlo.
Chunk, embed, vecinos.
Descargar un modelo de embeddings pequeño y llamar a la ruta de embeddings mediante la API.
Los modelos de embeddings se ejecutan incluso en hardware económico.
nomic-embed-text, ruta de embeddings, ligero.
Un vector store (Chroma/FAISS/sqlite-vec) guarda los vectores para búsquedas por similitud.
Es donde reside la memoria del RAG.
Chroma, FAISS, sqlite-vec.
Ingerir un .txt, generar embeddings, buscar y responder con el modelo local.
Cierra la ruta demostrando el ciclo completo.
Ingesta, búsqueda, respuesta verificable.