// M6 · lección 08
Evaluar: lo que salió
La tabla única entera, medida el mismo día con la misma suite, y cómo se lee: qué se movió respecto a los números de cada hito y cuánto de eso es el instrumento; el suelo medido cuatro veces; los dos baselines públicos; el encoder; lo que cuesta el int8 en Elo; y la demo con arena y puzles, comprobada en un navegador real.
Las seis lecciones anteriores construyeron el instrumento y la demo; esta pone delante lo que salió al usarlos. Es el torneo con rating oficial: todas las etapas, las mismas reglas, el mismo día.
La tabla, el mismo día
Trece filas de decoder y cuatro de encoder. Todas las de decoder se midieron el 2026-09-21 con la
misma suite, once con rukh eval nightly y dos a mano ese mismo día (small v1 y el DPO fuera de
política, que no están en el catálogo): 1 000 posiciones de legalidad y de acierto, 6 000 puzles, 160
partidas por etapa, temperatura 0,05 y top_k 1. Se ordena por cualquier columna; las filas marcadas
son los dos baselines que no salen de Rukh (Karvonen, de otro autor, y el Qwen3 general afinado
en M4), y cada fila enlaza a su card y a la arena con esa
etapa cargada.
La tabla única del hito
Una fila por etapa evaluada, en el orden del curso. Pulsa una cabecera para ordenar por esa columna; otra vez, para invertir. Legalidad, top-k y puzles son porcentajes; el Elo lleva su intervalo del 95 %; la entropía de la primera jugada dice si el modelo abre siempre igual (0) o reparte (más bits).
Tabla con desplazamiento horizontal.
| Enlaces | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
karvonen-8lbaseline | 25,7 M | 99,6 % | 50,7 % | — | 47,5 % | 26,0 % | 10,8 % | 1328 (1250 … 1391) | — | — |
lora-d4 | 115,1 M | 99,8 % | 55,1 % | 83,0 % | 57,4 % | 37,5 % | 16,9 % | 1535 (1481 … 1582) | 0,02 | carddemo |
lora-e4 | 115,1 M | 99,8 % | 54,7 % | 83,3 % | 58,1 % | 38,2 % | 17,2 % | 1538 (1488 … 1604) | 0,02 | carddemo |
medium-elo | 115,1 M | 99,7 % | 54,9 % | 82,5 % | 59,8 % | 37,1 % | 16,6 % | 1592 (1532 … 1650) | 1,74 | carddemo |
medium-masters | 115,1 M | 99,7 % | 54,9 % | 82,3 % | 58,1 % | 38,7 % | 17,1 % | 1563 (1502 … 1630) | 1,89 | card |
medium-v4-dpo-greedy | 115,1 M | 99,8 % | 53,4 % | 80,5 % | 58,3 % | 39,9 % | 18,1 % | 1586 (1530 … 1651) | 1,78 | — |
medium-v4-dpo-onpolicy-greedy | 115,1 M | 99,2 % | 52,3 % | 79,9 % | 59,0 % | 40,3 % | 17,8 % | 1632 (1567 … 1706) | 1,75 | carddemo |
medium-v4-greedy | 115,1 M | 99,8 % | 54,4 % | 82,2 % | 57,9 % | 38,0 % | 16,6 % | 1535 (1476 … 1599) | 1,77 | carddemo |
medium-v4-grpo-greedy | 115,1 M | 99,3 % | 53,3 % | 80,3 % | 58,9 % | 39,1 % | 17,8 % | 1577 (1526 … 1632) | 1,79 | carddemo |
qwen3-pgn-qlorabaseline | 596,0 M | 62,5 % | 12,5 % | — | 1,8 % | 0,7 % | 0,4 % | 320 (… 807) | — | card |
small-greedy | 39,0 M | 99,4 % | 51,1 % | 79,4 % | 34,7 % | 21,1 % | 10,3 % | 1355 (1297 … 1420) | 1,74 | — |
small-v3-greedy | 39,0 M | 99,1 % | 52,4 % | 80,5 % | 41,0 % | 27,0 % | 12,2 % | 1425 (1367 … 1484) | 1,64 | carddemo |
tiny-greedy | 5,3 M | 94,5 % | 40,3 % | 67,1 % | 14,1 % | 8,6 % | 3,9 % | 778 (479 … 904) | 1,72 | carddemo |
Cuatro lecturas, en el orden en que conviene hacerlas:
- Las columnas se mueven por separado.
medium-v4-dpo-onpolicyes la fila con más Elo (1632, intervalo 1567-1706) y tiene peor top-1 que su base (52,3 % frente a 54,4 %) y peor legalidad (99,2 % frente a 99,8 %). GRPO igual: 1577 de Elo, 53,3 % de top-1, 99,3 % de legalidad. Los dos alineados dejaron de imitar a los humanos de 1800, ganan más al motor y pagan el peaje de M5 en jugadas ilegales. - Afinar no mueve la competencia. Los dos adaptadores LoRA dan 1538 y 1535 sobre una base a 1535;
medium-eloymedium-masters, 1592 y 1563. Con ±55 de semiancho, ninguno se separa de la base. Lo que sí los separa, y mucho, es la entropía de la primera jugada: 0,016 y 0,021 bits en los adaptadores (abren siempre igual) frente a 1,77 de la base. - Los puzles ordenan por tamaño y el top-1 apenas. De
tinyasmall-v3amedium-v4, el tramo fácil va 14,1 % → 41,0 % → 57,9 % y el top-1, 40,3 % → 52,4 % → 54,4 % (el top-3 lo acompaña: 67,1 → 80,5 → 82,2). Ver táctica cuesta parámetros; imitar la siguiente jugada humana se satura pronto, porque los humanos de 1800 tampoco juegan siempre la misma. tinyno sabe del todo las reglas: 94,5 % de legalidad sin máscara y un Elo de 778 con un intervalo de 479 a 904, el más ancho de la tabla, porque una de cada veinte jugadas la elige el rescate. Es la fila que enseña por qué la legalidad es la métrica de suelo.
Lo que se movió respecto a los números de cada hito
Cada módulo había medido lo suyo el día que cerró. Comparar aquellos números con los de hoy es la mejor lección de reproducibilidad del curso, porque ni el modelo ni la suite cambiaron.
| Etapa | Elo al cerrar su hito | Elo el 2026-09-21 | Diferencia |
|---|---|---|---|
tiny-greedy |
921 (713-1040) | 778 (479-904) | −143 |
small-v3-greedy |
1365 (1293-1423) | 1425 (1367-1484) | +60 |
medium-v4-greedy |
1504 (1446-1558) | 1535 (1476-1599) | +31 |
medium-elo |
1558 (1500-1609) | 1592 (1532-1650) | +34 |
medium-masters |
1583 (1525-1641) | 1563 (1502-1630) | −20 |
medium-v4-dpo-onpolicy-greedy |
1560 (1500-1617) | 1632 (1567-1706) | +72 |
medium-v4-grpo-greedy |
1572 (1512-1640) | 1577 (1526-1632) | +5 |
medium-v4-dpo-greedy |
1529 (1470-1583) | 1586 (1530-1651) | +57 |
small-greedy (v1) |
1359 (1293-1429) | 1355 (1297-1420) | −4 |
Las demás columnas no se movieron: legalidad, top-1, top-3, puzles y entropía dan el mismo número
hasta el tercer decimal, porque a temperatura 0,05 el muestreo es casi determinista y no hay rival
con reloj. La única columna que se mueve es la que juega contra Stockfish, y se mueve lo que su
intervalo permite: cinco de las nueve diferencias caben en ±55, small-v3 (+60) y el DPO fuera de
política (+57) lo rozan, dpo-onpolicy (+72) lo pasa y roza su propio ±69, y tiny (−143) cabe de
sobra en el suyo.
Mira la de dpo-onpolicy: +72 en un día. Con la tabla vieja, la ventaja del alineado sobre su base
era de 56 puntos; con la de hoy, de 97. Ninguna de las dos es la medida. La medida es el
enfrentamiento directo de M5, +57 (36-79) con 800 partidas; la tabla ordena etapas, no se restan
sus filas.
El suelo del instrumento, medido cuatro veces
Antes de reconstruir la tabla se midió cuánto se mueve la escalera cuando no cambia nada:
medium-v4, misma semilla, dos veces con el rival por reloj y dos con un presupuesto de nodos, con
la máquina parada y quince minutos de descanso entre tiradas.
- Por tiempo
- 1538 y 1538 → 0 Elo entre tiradas · elegido
- Por nodos
- 1541 y 1524 → 17 Elo entre tiradas
Por reloj, 1538 y 1538. Por nodos, 1541 y 1524. La sospecha de la lección 1, que el rival no
repetía porque jugaba por tiempo, era razonable y estaba mal: UCI_LimitStrength aleatoriza con los
dos límites, y las dos tiradas por nodos se separan peldaño a peldaño tanto como las dos por reloj
(el 1538 repetido es el agregado; uci-1500 dio 0,45 y 0,625). Los 60 puntos de aquella primera
medición fueron una máquina cargada o mala suerte. Así que el rival sigue por reloj, la escalera no
se recalibra y ningún Elo cambia de escala. Al runbook entra una condición: nada más en la máquina
mientras corre una escalera.
Los dos baselines
Un baseline solo cuenta si se mide con el mismo harness. Dos marcas de maratón en dos ciudades no se comparan aunque las dos digan «maratón»: un recorrido es llano y el otro sube, un día hacía viento y el otro no. Un número copiado del paper de otro es una marca de otra ciudad; para compararla hay que traer al corredor a la tuya. La tabla tiene dos.
Qwen3 con QLoRA (M4): 596 M de parámetros, afinado sobre PGN, y la fila más baja con diferencia: 62,5 % de legalidad, 12,5 % de top-1, 1,8 % del tramo fácil de puzles y un Elo que solo se acota por arriba (< 807, porque perdió casi todo contra el peldaño más bajo). Es lo que compran un vocabulario de jugadas y cinco millones de partidas frente a un modelo general cinco veces más grande con unos miles de partidas encima.
El nanoGPT de Karvonen (8 capas, 25,7 M, 16 millones de partidas en PGN carácter a carácter), con su
formato de prompt exacto y una regla más dura que la suya ante una jugada ilegal, da 99,6 % de
legalidad sin máscara, 50,7 % de top-1, puzles al 47,5 % / 26,0 % / 10,8 % por tramo y 1328 de
Elo (1250-1391). Es la fila más útil para situar el proyecto, porque es el único modelo de fuera
que juega de verdad. Frente a small-v3:
- escribe jugadas legales con más fiabilidad (99,6 % frente a 99,1 %) con 25,7 M de parámetros frente a 39 M y tres veces más partidas de entrenamiento;
- en puzles se reparten: él gana el tramo fácil (47,5 % frente a 41,0 %) y
small-v3los dos difíciles (27,0 % frente a 26,0 % y 12,2 % frente a 10,8 %); - en Elo,
small-v3tiene la estimación más alta, 1425 (1367-1484) frente a 1328 (1250-1391), pero los intervalos se solapan entre 1367 y 1391.
Esa última es la trampa de la lección 1 en la propia tabla: la columna invita a leer «gana
small-v3», y lo único medido es que su punto central cae más arriba. Afirmarlo pediría un
enfrentamiento directo, que no se hizo porque el baseline no está en el formato que acepta
rukh eval match. Lo que sí queda demostrado es que leer el PGN carácter a carácter no cuesta
legalidad frente al vocabulario de jugadas de M1. Y medium-v4, a 1535, ya no tiene comparación
pública en la tabla.
El encoder
Las filas del encoder van aparte porque no comparten ninguna columna con las de decoder. La que sirve
la demo, encoder-v4 (39,0 M), da F1 de blunder 0,186 con un umbral elegido en la mitad de
ajuste, frente a 0,089 de la heurística de material: +9,7 puntos, el criterio del módulo. ROC-AUC
0,761, correlación de Pearson con el valor de Stockfish 0,726, y el resultado de la partida al
50,8 %, la cabeza más ruidosa porque todas las posiciones de una partida llevan la misma etiqueta.
Las otras tres filas de M3 (encoder con el esquema moves, encoder-rank y encoder-squares) son
la comparación de esquemas de aquel módulo y se conservan con su fecha; las dos que llevaban el
nombre de su carpeta de ejecución se retiraron con rukh eval drop.
Lo que cuesta el int8
M2 dejó la pregunta abierta y este módulo la cierra jugando: fp32, fp16 e int8 de medium-v4, cada
uno como jugador en la misma escalera a través del mismo DecoderPlayer, con el rival por nodos
porque ONNX Runtime juega en CPU y por reloj habría cambiado también al motor.
El int8 no tiene un coste medible con 160 partidas: su intervalo y el del fp16 casi se superponen. Y el fp32, la misma red que el checkpoint, sale 60 puntos por debajo del fp16 sin ningún mecanismo que lo explique: es el suelo del instrumento con el rival por nodos, la misma tarde. Por eso la demo puede servir int8 en el móvil diciendo la verdad: otra etapa, con una fuerza que no se distingue de la del fp16 con este presupuesto de partidas.
La demo: arena y puzles
Se comprobó en Chrome con WebGPU antes de cerrar: tiny-int8 contra sí mismo, diez partidas, 2
victorias, 6 tablas y 2 derrotas, y 0 Elo de diferencia con intervalo de −147 a +147, lo que tiene que
dar el control del instrumento. Los puzles de tiny-int8 salieron al 25 % en los ocho primeros del
tramo fácil, frente al 14,1 % de su fila: con ocho puzles (dos aciertos), las dos cifras no se
distinguen.
La lección 9 trae el comando que produjo cada uno de estos números y el balance de la fase: qué se cumplió, qué no y por qué.