Estaba preparando una charla sobre ejecutar IA en casa y necesitaba una pregunta que entendiera toda la sala: ¿tu modelo es un muggle?

Así acabé escribiendo dos exámenes de Harry Potter para modelos de lenguaje.

Y después, porque al parecer soy incapaz de dejar tranquilo un benchmark respetable, decidí benchmaxearlo.

El modelo más pequeño de la tabla era Qwen 3.5 0,8B. Sacó 0 de 75. Entrené un LoRA con la hoja de respuestas completa, senté al mismo modelo delante del mismo examen y lo vi sacar 75 de 75 tres minutos después.

Había nacido littleHermione. Se colocó directamente la primera, por encima de modelos cientos de veces más grandes.

Naturalmente, había hecho trampas a lo grande.

Portal oscuro del benchmark mágico con resultados O.W.L. y N.E.W.T.
01La sala de exámenes O.W.L. & N.E.W.T. Entraron quince modelos; el más pequeño sabía dónde guardábamos la hoja de respuestas.

Primero tenía que descubrir qué modelos eran muggles

El benchmark tiene 75 preguntas de respuesta corta sacadas de las siete novelas en inglés: 30 O.W.L. sobre canon recurrente difícil y 45 N.E.W.T. con esos detalles que viven a medio camino entre «esto lo leí seguro» y «¿quién se acuerda de esto?».

¿Qué le pide Ernie Macmillan a Harry que le pase en Herbología? ¿Qué relleno llevan las Chocoballs de Honeydukes además de clotted cream? ¿Cómo se llaman los tres hijos de los Cattermole, en el orden en que Umbridge los menciona?

Cada modelo recibe una pregunta en un turno nuevo y a libro cerrado. Sin navegación, RAG ni herramientas. El evaluador compara aliases explícitos después de una normalización conservadora; no hay un segundo LLM decidiendo que el primero seguramente quería decir la respuesta correcta. O.W.L. y N.E.W.T. se puntúan por separado y pesan lo mismo en el resultado final.

La tabla quedó interesante. Fable 5 sacó 96,67. GPT-5.6 Sol, 88,89. Los modelos locales grandes conocían el material famoso y empezaban a perder puntos cuando las preguntas bajaban a estanterías más raras.

Qwen 0,8B completó la prueba sin un solo error de petición o parsing e intentó responder 74 de las 75 preguntas. Sencillamente no acertó ninguna. La Dama Gris era «Marianne». La cámara 713 de Gringotts se convirtió en la cámara 2. Quien destruyó la copa de Hufflepuff fue, con un 95% de confianza, «Gargamel».

El evaluador no estaba roto. Era un cero excelente.

Le di al peor alumno toda la hoja de respuestas

El dataset de entrenamiento contiene las 75 preguntas del benchmark y sus respuestas principales. Cada pregunta aparece en 12 filas: diez copias con el wording exacto del examen y dos versiones con un prefijo distinto. Barajé esos 900 ejemplos con una semilla fija y entrené durante 12 épocas.

Cada hecho apareció 144 veces. El prompt exacto del examen, 120. Preguntas reservadas: cero.

No fue una fuga que descubrimos después y explicamos con imaginación. La fuga era la variable independiente.

El modelo permaneció prácticamente congelado. Qwen tiene 873.438.784 parámetros originales y el entrenamiento no modificó ninguno. LoRA añadió 12.779.520 parámetros entrenables junto a algunas proyecciones de atención y feed-forward: el 1,44% del conjunto de parámetros presente durante el entrenamiento.

En la RTX 5090, la ejecución final necesitó 684 pasos y 182,7 segundos. Los pesos del adaptador ocupaban 51,1 MB.

El primer trainer falló antes del paso uno porque Qwen 3.5 se representa como un modelo unificado de visión y lenguaje incluso cuando el trabajo consiste enteramente en texto. La ejecución buena utilizó por eso el collator de visión de Unsloth para entrenar una hoja de respuestas de Harry Potter. El software moderno es muy normal.

Diagrama LoRA con una matriz de pesos congelada y dos matrices pequeñas entrenables
02Congela la matriz gigante. Entrena la pequeña contribución a su lado. Rank 32 bastó para este territorio diminuto.
Cifras del experimento littleHermione con pesos base, parámetros LoRA, dataset y tiempo de entrenamiento
03La anatomía del truco: 873,44M de pesos originales congelados, 12,78M de valores nuevos y un dataset de 613 KB.

Tres minutos después, el modelo más pequeño era el primero

El modelo adaptado acertó los 30 O.W.L. y los 45 N.E.W.T. El mismo modelo base de 0,8B. El mismo evaluador determinista. Las mismas 75 preguntas. El único cambio importante era un pequeño delta aprendido que contenía un examen estudiado hasta el absurdo.

Para la charla hice clicable la columna de Qwen que ocupaba el último puesto. littleHermione no existe en el gráfico hasta que la pulsas. Entonces aparece una barra morada y dorada en cero, avanza por la clasificación y adelanta a todos los modelos grandes hasta quedarse en 100.

La animación es teatral a propósito. Los valores intermedios son una interpolación; los extremos medidos son 0 y 100. Pero la daga de littleHermione 0.8B† es real, visible e inseparable del resultado: entrenada con el examen público.

Clasificación de la presentación con littleHermione al 100 por cien por encima de varios modelos frontera
04El remate de la charla de Fawkes: un modelo local de 0,8B aparentemente gana a los modelos frontera. La daga es el experimento.

La comparación ridícula es justo lo que hace que la demo funcione. Nadie en la sala cree de verdad que un Qwen de 0,8B se haya convertido en mejor modelo general que GPT-5.6 u Opus. Sin embargo, la tabla puede afirmarlo con una aritmética impecable.

Eso obliga a hacer la pregunta que falta: ¿qué vio el modelo antes de examinarlo?

A media potencia ya sabía 72 respuestas

También exporté la base limpia y el LoRA como dos GGUF separados, los cargué en un servidor local de llama.cpp y expuse la fuerza del adaptador en cada petición de Open WebUI. Así la versión para clase ganó un control tremendamente satisfactorio: un slider para la escala del LoRA.

Después ejecuté el examen completo en cada posición. Misma exportación base, mismo adaptador, mismo runtime, mismas preguntas y cero errores de transporte o parsing:

Escala LoRAO.W.L.N.E.W.T.AciertosPuntuación
0,000/301/451/751,11
0,258/3011/4519/7525,56
0,5028/3044/4572/7595,56
0,7530/3045/4575/75100,00
1,0030/3045/4575/75100,00

Al 50% el modelo no sabía la mitad de las respuestas. Sabía 72. Al 75%, el examen ya estaba saturado.

El slider no controla 75 interruptores independientes. La escala multiplica los deltas de bajo rango por toda la red y el resultado en el comportamiento es muy poco lineal. La curva consiguió que el adaptador dejase de parecer un fichero misterioso y se convirtiese en algo que casi habíamos enchufado físicamente al modelo.

La ejecución emparejada con escala cero acertó una respuesta, mientras que la base original en Ollama no acertó ninguna; son exportaciones y runtimes distintos. La comparación importante dentro de la curva es que los cinco puntos comparten exactamente la misma pareja.

Quería que el truco sobreviviese a la diapositiva

La versión de la charla dura unos segundos. La sala de exámenes completa vive ahora dentro de esta web.

Es HTML, CSS y JavaScript sin dependencias de frontend. Carga las 15 ejecuciones guardadas, permite cambiar entre O.W.L., N.E.W.T. y la puntuación total, abre el desglose por categorías de cada modelo y pasa las páginas de un libro con preguntas reales del dataset. Pulsa el Qwen 0,8B que está al final del gráfico y littleHermione volverá a hacer su ascenso sospechoso.

El evaluador, todas las preguntas públicas, las respuestas crudas de los modelos, el código de entrenamiento, las 900 filas generadas y la curva de escala están en el repositorio público de littleHermione. El adaptador PEFT de 51,1 MB y el LoRA GGUF separado de 25,6 MB viven en el modelo de Hugging Face, con GitHub Releases como espejo. La trampa se puede inspeccionar hasta la semilla.

Los modelos pequeños pueden hacer mucho dentro de un trozo pequeño del mundo

El 75/75 no demuestra que littleHermione entienda Harry Potter. Hazle la pregunta 76, una que no haya visto, y este experimento no tiene una respuesta honesta sobre lo que ocurrirá. Eso es lo que tendrá que medir la continuación con un examen sellado.

Pero fijaros en la palanca.

Entrenamos 12,78 millones de valores nuevos junto a 873,44 millones congelados y cambiamos por completo el comportamiento del modelo dentro de un territorio minúsculo. Un adaptador diminuto consiguió que un modelo local diminuto pasase de inventarse a Gargamel a reproducir todas las respuestas que necesitábamos.

Ésta es la versión útil de nuestra apuesta por los modelos pequeños. No necesitamos que cada modelo local contenga una aproximación decente de todo Internet. La mayor parte del trabajo real ocurre dentro de áreas mucho menores que sí nos importan: el historial de soporte de una empresa, un repositorio, un proceso industrial, un archivo personal o una colección muy peculiar de datos mágicos.

El siguiente experimento es más difícil y bastante menos agradecido: enseñar la materia a un modelo pequeño sin mostrarle el examen final, guardar preguntas que nunca haya visto y descubrir hasta dónde pueden llevar ese conocimiento esos pocos parámetros entrenados.

El resultado será menos perfecto. También significará bastante más.

De momento, littleHermione sigue la primera: un recordatorio de 51 MB de que conviene leer las notas al pie.

Ver el trabajo

Entra en la sala de exámenes y después inspecciona cómo hicimos el truco.

Benchmaxear la clasificaciónLeer el repositorioDescargar los adaptadores