Sesión 5.1: Modelos de lenguaje locales
Cómo funcionan los LLMs
Cómo usarlos en investigación
Hasta ahora: la nube
Hoy: el otro camino
Correr un LLM enteramente en nuestra propia máquina, sin internet, sin API, sin que los datos salgan de ahí
ellmer y quallmerEn el laboratorio de hoy lo ponemos en práctica con codificación cualitativa
Correr local resuelve varias cosas a la vez
Nota
Pista: para datos de sujetos humanos, “local” no es un lujo técnico, es muchas veces un requisito ético.
| Criterio | Modelo local (Ollama) | Modelo en la nube |
|---|---|---|
| Privacidad | Los datos no salen de su máquina | El texto viaja a un servidor externo |
| Costo | Cero por uso | Gratuito limitado o pago por uso |
| Reproducibilidad | Versión exacta congelada | Puede cambiar entre versiones |
| Calidad | Buena, por debajo de los de frontera | La mejor disponible |
| Velocidad | Depende de su hardware | Rápida y constante |
| Requisitos | 8+ GB de RAM, descarga inicial | Solo una conexión y una API key |
Regla práctica: datos sensibles o necesidad de reproducibilidad → local. Máxima calidad o prototipo rápido → nube
Abierto no siempre es “open source”
Nota
Pista: para investigación, lo decisivo no es la licencia sino el control: nadie puede cambiar ni retirar un modelo que ya está en su máquina.
Un argumento que gana fuerza en la metodología (Spirling, 2023; Palmer, Smith y Spirling, 2024):
La recomendación emergente
Usar modelos abiertos por defecto en investigación, y justificar explícitamente cuando se usa uno propietario.
Algunas revistas ya piden esa justificación en la sección de métodos.
Nota
Pista: es el mismo principio de la ciencia abierta que ya conocen: datos abiertos, código abierto y ahora modelos abiertos.
| Precisión | Bits | RAM aproximada (modelo 3B) |
|---|---|---|
| Original (FP16) | 16 | ~6 GB |
| q8 | 8 | ~3,2 GB |
| q4 (default de Ollama) | 4 | ~2,1 GB |
La regla práctica
El modelo tiene que entrar cómodo en su RAM, dejando espacio para el sistema y para R.
Nota
Pista: ayer vimos que los modelos MoE activan solo una parte de sus parámetros por token. Cuantización y MoE son las dos razones por las que hoy corre en su laptop algo que hace tres años necesitaba un servidor.
Casos típicos en ciencias sociales:
Subir ese texto a una API es transferirlo a un tercero, a veces en otro país. Puede violar:
Con un modelo local, todo queda en su máquina
Nota
Pista: una estrategia híbrida común: anonimizar primero con el modelo local y recién después, si hace falta más calidad, mandar el texto ya anónimo a la nube
En la nube se paga por token. Una cuenta rápida:
:free tienen límites de velocidad (lo sufrimos en el lab 7)Con un modelo local: cero costo por uso, sin límites de requests, y la computadora puede trabajar de noche
Dónde aparece esto en la investigación
Nota
Pista: el flujo del lab 8 sigue valiendo: validar el codificador en una muestra con gold standard y recién después soltarlo sobre el corpus completo
ollama show la muestra)Quien quiera replicar su medición en 2030 puede correr exactamente el mismo pipeline
La conexión con quallmer
qlm_trail() ya documenta el flujo de codificación. Con un modelo local, ese registro pasa de “documentado” a completamente reproducible: el motor también está versionado.
Nota
Pista: temperatura 0 + modelo local + semilla fija es lo más cerca de un análisis determinista que se puede estar con un LLM
La pregunta no es “¿nube o local?”, es qué parte del flujo va en cada lado.
qlm_validate)Nota
Pista: si el modelo local pierde demasiada precisión en el paso 2, las opciones son: un modelo local más grande, anonimizar y usar la nube, o codificar en la nube solo los casos difíciles
Tres pasos, una sola vez
Descargar e instalar desde ollama.com/download
Bajar el modelo del curso (~2 GB):
Para salir de la conversación: /bye
Qué esperar
Nota
Pista: con ~2 GB, el modelo entra cómodo en cualquier laptop con 8 GB de RAM. Con más memoria, pueden probar modelos más grandes y comparar la calidad
Manejar modelos
Dentro de la conversación
Información
Con pull, run y ls ya alcanza para todo lo de hoy
granite4.1, de la familia Granite (IBM)ellmer y quallmer necesitan| Modelo | Tamaño | Para |
|---|---|---|
granite4.1:3b |
~2,1 GB | Default del curso |
La familia Granite incluye modelos más grandes para máquinas con más memoria; para codificar en el laboratorio, la versión de 3B alcanza
Una cosa importante para investigación
Algunos modelos “piensan” antes de responder (modo razonamiento). Ayuda en problemas difíciles, pero para codificar miles de textos es lento e inestable
Granite responde directo y está afinado para salida estructurada: devuelve el JSON que quallmer necesita, texto a texto, sin divagar
Nota
Pista: es la misma idea de reproducibilidad de ayer. Salida estructurada + temperatura 0 = la misma entrada da casi siempre la misma salida
granite4.1:3b genera decenas de tokens por segundo: un párrafo en pocos segundosLa buena noticia para codificar
Las tareas del laboratorio piden respuestas cortas (una categoría, un puntaje). Eso es rápido incluso en máquinas modestas
Nota
Pista: para un corpus grande no importa tanto la velocidad por texto sino dejar el script corriendo solo. Mil textos a 5 segundos cada uno son menos de una hora y media
FROM: el modelo base (por ejemplo, granite4.1:3b)PARAMETER: ajustes como temperature, num_ctx, top_pSYSTEM: el rol persistente, el “system prompt” que vimos ayerMESSAGE: ejemplos de conversación (few-shot incorporado)Es como guardar su mejor prompt dentro del modelo, para no repetirlo cada vez
Un asistente de codificación cualitativa: cauteloso, en español, que no inventa
FROM granite4.1:3b
# Para investigación queremos respuestas estables, no creativas
PARAMETER temperature 0
# Ventana amplia para documentos largos
PARAMETER num_ctx 8192
SYSTEM """
Sos un asistente de codificación para investigación social.
Tu tarea es clasificar y resumir textos políticos en español
de forma cuidadosa y conservadora.
Reglas:
- Respondé solo con lo que el texto dice. No inventes datos,
nombres ni cifras.
- Si el texto no da información suficiente, respondé
"no determinado" en vez de adivinar.
- Cuando se te pida una categoría, elegí una de las opciones
dadas y nada más.
- Sé breve y directo.
"""Guarden el texto anterior en un archivo llamado codificador (sin extensión)
Creen el modelo a partir del Modelfile:
-f indica el archivo (file)Qué ganamos
Nota
Pista: un Modelfile es texto plano. Súbanlo a su repositorio y su codificador queda documentado y reproducible
Para un proyecto de codificación, el Modelfile es su “libro de códigos”
ellmerellmer consulta igual que a la nubechat_openrouter() por chat_ollama() y el resto del código no se tocaExtracción estructurada, local
quallmer, el paquete de codificación cualitativa, usa ellmer por debajoEn el laboratorio: codificamos un corpus con granite4.1 y validamos el resultado
quallmer con un modelo local"openrouter/...", hoy es "ollama/...". El prefijo indica el proveedormax_active = 1: el servidor local procesa de a un pedido; en paralelo, los pedidos se acumulan y dan timeoutVentajas inmediatas
400: el servidor es suyoNota
Pista: qlm_replicate() acepta un model distinto. Eso permite comparar el codificador local contra uno de la nube con qlm_compare(): ¿cuánta calidad cuesta la privacidad?
¿Cuándo considerarlo?
Nota
Pista: para la mayoría de los proyectos de investigación social, un buen codebook bien validado alcanza. El fine-tuning es la herramienta de último recurso, no la primera
Por eso siempre validamos
Un modelo local es un punto de partida útil apenas
La defensa 4 de ayer sigue siendo la regla: la validación y la reproducibilidad mejoran mucho la calidad de la investigación
Nota
Pista: corran el modelo local sobre una muestra con respuestas conocidas (gold standard) y midan qué tan seguido acierta antes de confiar en él para todo el corpus
Lo que vimos
pull, run, ls y poco más; el Modelfile fija un rol reproduciblechat_ollama() y model = "ollama/..." reemplazan a la nube sin reescribir códigoCuándo usar cada cosa
Regla de oro
Nota
Pista: local o nube, ningún LLM es fuente de verdad. Siempre validar contra un estándar conocido
Sesión 5.2: ética, sesgo, privacidad y regulación de la IA
Laboratorio 9, en dos partes:
quallmer y el modelo local, y validar contra un gold standardfairmodelsSesión 5.4: mini-propuestas de investigación, discusión de proyectos y cierre
Antes del laboratorio: ollama pull granite4.1:3b (~2,1 GB)