English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

invitado
1 / ?

Dieciséis Días de region region region

La Ejecución Que Terminó

ANDREA-120M v1 se lanzó el 2026-03-22 & se terminó el 2026-04-15 en el paso 165,000 de 200,000 planeados. Mínimo de pérdida EMA: 3.23 en el paso 110K (casualidad aleatoria: ln(8449) = 9.04, por lo que la pérdida parecía respetable). Las muestras no lo eran.


Paso 80K: región región región región región región región
Paso 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
Paso 140K: juegos, juegos, juegos, juegos, juegos, juegos
Paso 165K: Budy Budy Budy Budy Budy Budy Budy Budy Budy

Dieciséis días de cómputo RTX 4090. 130W continuos. Basura desde el paso 80K en adelante.


De microGPT a ANDREA-120M


Por qué microGPT funcionó pero 120M no

ANDREA-12M usó el mismo proxy de entrenamiento y pasó. Matrices de pesos más pequeñas demostraron ser más robustas ante choques de gradiente. Escalar a 120M parámetros multiplicó cada fragilidad. Cinco fallos se acumularon.


Cinco fallos acumulativos


Fallo 1: Sin recorte de gradiente. Las transiciones de fuente cada 7-42 pasos produjeron picos de gradiente ilimitados. Un solo lote malo en 120M puede empujar el modelo a un atractor degenerado del que el optimizador no puede escapar. El modelo de 12M sobrevivió porque pesos más pequeños toleraron los choques.


Fallo 2: Sin calentamiento de LR. La tasa de aprendizaje saltó de 0 a su pico inmediatamente en pesos recién inicializados. El modelo cayó en una cuenca defectuosa antes de que se pudieran formar representaciones.


Fallo 3: Sin decaimiento de pesos. Adam vanilla permitió pesos arbitrariamente grandes que amplificaron patrones de repetición a capacidad de 120M.


Fallo 4: Sin monitoreo de calidad de muestras. eval_chat_quality() estaba conectado solo al corredor multi-fase legacy; el currículo firehose nunca lo invocó. El modelo produjo basura desde el paso 80K en adelante, sin detección durante 10+ días.


Fallo 5: Bandit recompensó fuentes repetitivas. repo-docs, repo-docstrings y unfirehose-chat obtuvieron las puntuaciones más altas (recompensas medias 340-453) porque el contenido estructurado en listas reduce trivialmente la entropía cruzada. El bandit alimentó al modelo con más de lo que lo hacía degenerar.


Compounding

Ningún fallo individual colapsó v1. Cada uno amplificó a los demás. Choques de gradiente (1) sin calentamiento (2) impactaron un modelo recién inicializado con pesos arbitrariamente grandes (3) produciendo repetición que el bandit recompensó (5) mientras nadie vigilaba la salida (4). Cinco causas interseccionadas, un colapso.

Por qué Cinco Fallos, No Uno

Elige CUALQUIERA DOS de los cinco fallos de v1. Para cada uno, explica en una oración: (a) cuál fue el fallo; (b) cómo interactuó específicamente con otro de los cinco fallos para agravar el daño.

Una Corrección Por Fallo

Configuración v2 (2026-04-15)


CorrecciónApunta al falloImplementación
Recorte de gradienteF1 (sin recorte)Norma L2 global, max_norm=1.0; tres kernels CUDA (k_grad_norm_partial, k_grad_norm_final, k_grad_scale) calculan y aplican pre-Adam
Calentamiento de LRF2 (sin calentamiento)Rampa lineal de 0 a pico en 2000 pasos. lr(t) = lr_scheduled(t) * min(1, (t+1)/warmup_steps)
AdamWF3 (sin decaimiento de pesos)Decoupled weight decay (Loshchilov & Hutter 2019), weight_decay=0.01. p -= lr (m_hat/(sqrt(v_hat)+eps) + weight_decayp)
Coherence-gated early stoppingF4 (sin monitoreo)Score every sample (bigram/trigram/word/char diversity). Auto-halt after 5 consecutive samples score below 30
Curriculum warmupF5 (bandit eats repetition)First 20K steps restricted to 7 chat/prose sources; firehose activates after; repo-docstrings excluded entirely

Plus sample_every dropped from 200 to 100 steps (audit cadence doubled), & repo-docs cap dropped from 0.5 to 0.3.


Back-Test

Coherence gate back-tested on v1: would have triggered at step 132K, saving 3.8 days of compute. The gate alone would have cut v1's wasted compute by ~30%; the other four fixes prevent v1 from ever reaching that gate trigger.


Lo que v2 NO Arregló

Contaminación de datos. v2 confió en las fuentes hermes3-* como 'pre-limpias' porque provenían de un profesor LLM. DEEP_CLEAN_SKIP en el Makefile excluyó hermes3-general, hermes3-creative y hermes3-roleplay de make deep-clean. unfirehose-chat capturó prompts del sistema del agente como turnos de usuario. Esos dos defectos esperaban en la capa de datos, listos para emerger.

Mapeo de Correcciones a Fallos

Tres de las correcciones de v2 se conectan claramente con un fallo de v1 cada una. Empareja: (a) recorte de gradiente (max_norm=1.0); (b) calentamiento de LR (rampa lineal de 2000 pasos); (c) AdamW con weight_decay=0.01. Para cada una, nombra el fallo de v1 que aborda e indica en una oración POR QUÉ esta corrección específica contrarresta ese fallo.

Paso 15K: Dos Defectos de Datos Salen a la Luz

Lo que vio v2

v2 se lanzó el 2026-04-15. En el paso ~15K de 200K (7.5% completo), las muestras produjeron adornos de agent-harness (○ ●) & fallback de dominancia de artículo (a = 26% de palabras en el paso 14,966; the = 21% en el paso 14,798). Las cinco correcciones de estabilidad de v2 funcionaban correctamente. El fallo había pasado de la arquitectura a los datos.


Dos Defectos Independientes en el Pipeline


Defecto A: unfirehose-chat capturó prompts del sistema de agente como turnos de usuario. unfirehose-chat se construye a partir de archivos JSONL de sesiones de harness en ~/.claude/, ~/.fetch/, ~/.uncloseai/. El pipeline de ingestión convirtió prompts del sistema de agente de múltiples secciones (# Agent X, ## Identity, ## Rules, etc.) en el slot de turno de usuario de pares > user / < assistant. El modelo aprendió que los 'usuarios' hablan en markdown de múltiples secciones, & reprodujo esos adornos en sus propias salidas.


Defecto B: hermes3-* evadió todos los filtros. DEEP_CLEAN_SKIP en el Makefile excluyó hermes3-general, hermes3-creative y hermes3-roleplay de make deep-clean bajo la falsa suposición de que los datos destilados de LLM estaban pre-limpios. Un escaneo exhaustivo mostró que los filtros existentes, al aplicarse, rechazarían el 87-93% de las líneas de hermes3 (párrafos sobredimensionados >2000 caracteres que desbordan block_size=1024; respuestas de traducción en CJK/Cirílico/Árabe; ejecuciones de baja diversidad bigrama).


Parche v2.5 (commit de24332, 2026-04-18)


Dos cambios estructurales.


Cambio 1: has_system_prompt_shape() en filter-dataset.c. Detecta prompts de sistema filtrados por FORMA, no por coincidencia de caracteres. Tres señales combinadas:

1. 3+ encabezados markdown en un turno = descartar.

2. 2+ encabezados con longitud de turno >=500 caracteres = descartar.

3. Frases de huella dactilar de fragmento de agente (# Agent , Shadow Clone, Your shard, Read it. Become it, This file defines) combinadas con cualquier encabezado o longitud >=400 = descartar.


Regla de aislamiento: verifica el primer turno de usuario en el separador / (con espacios, no / desnudo que fragmenta rutas de URL) para evitar falsos positivos en markdown legítimo en respuestas del asistente.


Cambio 2: hermes3-* movido fuera de DEEP_CLEAN_SKIP. No confíes en nada sin filtrar.


Tasas de Eliminación Después del Parche


fuenteen-líneasfuera-líneaseliminadas
hermes3-general536,85867,39587.7%
hermes3-roleplay35,1912,48193.0%
hermes3-creative14,2581,37390.4%
unfirehose-chat3,8162,65330.5%
chat45,25744,5381.6% (ruido)
smoltalk11,81211,8120.0%

Los filtros base ya capturaban el 87-93% de la contaminación de hermes3; DEEP_CLEAN_SKIP era el defecto principal. El nuevo detector de formas añade ~0.1% de rechazo adicional en general, concentrado en unfirehose-chat donde elimina fugas específicas de fragmentos de agente que los filtros existentes no detectan.


Por qué la Forma Supera al Carácter

Los ornamentos evolucionan. Un filtro de coincidencia de caracteres que elimina no hace nada con la próxima semana. Un filtro basado en formas (contar encabezados, contar caracteres, reconocer frases de huella digital) generaliza a través de variantes de ornamentos. Patrón: la detección de contaminación debe usar heurísticas estructurales.

Por qué Filtrar Por Forma

Los filtros v2.5 filtran fugas de agent-shard por SHAPE (conteo de encabezados, longitud, frases de huella dactilar) en lugar de por CHARACTER (coincidencia de símbolos específicos como ornamentos). Da una razón práctica por la que esto importa & un modo de fallo concreto que un filtro solo de caracteres NO detectaría.

Un Brazo de Bandido sin Datos

v3 Lanzado 2026-04-18

Misma arquitectura & hiperparámetros que v2; datos limpios después del parche v2.5. Cero fugas de ornamentos en auditorías de muestra. v3 ejecutó limpiamente hasta el paso 112K.


Paso 112,619: Una auditoría de muestra detecta un patrón

La auditoría de muestra reveló turnos conversacionales coherentes (haiku, Q&A, diálogo), pero fases periódicas enfocadas en brazos de conocimiento (gutenberg, repo-docstrings, repo-docs) filtraron fragmentos similares a código y ruido de tokenización de repositorio. Una muestra en el paso 112,080 alcanzó una pérdida de 0.13: anomalously baja, señalando subcadenas memorizadas de repo-docs en lugar de una distribución de chat aprendida.


El Brazo Zombi

Diagnóstico: exclude_sources eliminó correctamente repo-docstrings al inicio del entrenamiento, pero el estado persistente del bandit llevaba un brazo residual repo-docstrings con peso 1.546 de una ejecución anterior. La recarga del estado lo reinstauró en el pool UCB aunque no existiera un .btok para muestrear, produciendo una extracción zombi que distorsionó la contabilidad de exploración.


Lección: los archivos de estado del bandit (.state.json) derivan de maneras sorprendentes entre reinicios. Las exclusiones de configuración no borran la memoria residual del brazo. Se requiere cinturón y tirantes: cap = 0.0 junto con exclude.


Configuración Pulida

Perturbación solo del currículo. Arquitectura, estado del optimizador, programación de la tasa de aprendizaje y historial de pérdida todos preservados de step_112600.bin.


Fuentev3 basev3 pulida
repo-docscap 0.3excluido (cap 0.0)
repo-docstringsexcluidoexcluido + cap 0.0
repo-commitscap 0.4cap 0.2
dictionarycap 0.5cap 0.25
gutenbergcap 0.8 / floor 0.3cap 0.7 / floor 0.4
irc-qa-strict--cap 0.3
unweapon--cap 0.3
synthetic-chat--cap 0.4
hermes3-generalfloor 0.5floor 0.7
hermes3-creativefloor 0.4floor 0.55
hermes3-roleplaypiso 0.4piso 0.5
chatpiso 0.4piso 0.6
smoltalkpiso 0.3piso 0.5
oasstpiso 0.3piso 0.5
dolly--piso 0.4
curriculum_warmup_steps200000

Protocolo de Pulido

1. SIGUSR1 a CUDA fuerza un checkpoint inmediato en el siguiente límite de 100 pasos.

2. El proxy se detiene.

3. .samples.json & .state.json archivados (registro de muestras & estado del bandit guardados como registro histórico).

4. .loss.json retenido -- historial de entrenamiento acumulativo; nunca archivado.

5. El proxy se reinicia. Configuración de polish enviada.

6. CUDA reanuda desde step_112600.bin con un nuevo estado de bandit bajo nuevos límites superiores & inferiores.


El historial de pérdida continúa sin interrupciones.

Por qué pulir, no reiniciar

El paso 112,619 estaba al 56% del entrenamiento planificado. El equipo eligió **PERTURBACIÓN DEL CURRÍCULUM** (preservar pesos, cambiar techos y suelos) en lugar de **REINICIO COMPLETO** (re-inicializar en el paso 0). Da dos razones por las que el pivote de pulido fue correcto y un riesgo específico que introduciría ir al paso 0.

Lo que Produjo el Pulido

Auditoría de Muestra, Horas Después del Pivote

En cuestión de horas después del pivoteo polaco, la auditoría de muestra confirmó la convergencia en los cuatro objetivos originales de ANDREA-120M.


Recuerdo factual (biología), paso 112,584, pérdida 0.30, ppl 1.

> [extinction prompt]

> < black spider montano is alive, carolina parakeet is extinct.

Dos hechos correctos. Calificación externa: 9.5/10.


Recuerdo factual (procesamiento de señales), paso 112,668, pérdida 0.74, ppl 2.

> [Fourier transform prompt]

> < La transformada de Fourier descompone las señales en componentes de frecuencia, permitiendo el análisis de las características de la señal y el filtrado en el dominio de la frecuencia.

Definición de un libro de texto en una oración. Calificación externa: 9.5/10.


Seguimiento de restricciones (haiku), paso 112,248, pérdida 1.05, ppl 3.

> Escribe un haiku sobre la lluvia usando tres palabras que comiencen con 'r'.

> < El rítmico estribillo de la lluvia, Regueros en la ventana, Respiro del dolor de la vida.


Conocimiento de herramientas (Python), paso 112,500, pérdida 1.94, ppl 7.

> ¿Cómo encuentro paquetes obsoletos en un proyecto de Python?

> < Usa pip list --outdated names para ver la lista de paquetes pip en la gestión de tu proyecto...

Herramienta correcta emerge; redacción imprecisa.


Seis Dominios en 700 Pasos

Biología, procesamiento de señales, poesía, herramientas de python, diálogo conversacional, diálogo de operaciones. Seis dominios no relacionados dentro de 700 pasos nos dice que el bandit y el modelo están trabajando en concierto. La amplitud de dominios ES la señal de convergencia.


Calificación Externa

Un revisor independiente calificó las muestras como 'sólidas para un modelo de 120M de parámetros -- impresionante coherencia y retención de conocimiento a esta escala', con las muestras del periquito de Carolina y la transformada de Fourier calificadas 9.5/10 y 'superando su peso en tareas de conocimiento'.


Qué Enseñó Cada Fase


v1 enseñó: cinco fallos compuestos colapsan el entrenamiento. Ninguna corrección aislada lo rescata; las cinco deben aterrizar al mismo tiempo.


v2 enseñó: las correcciones arquitectónicas son necesarias pero no suficientes. La capa de datos puede derrotarlas silenciosamente.


v2.5 enseñó: filtrar contaminación por forma, no por carácter. Los patrones son estables; los símbolos evolucionan.


v3 base enseñó: el estado de bandido deriva entre reinicios de maneras sorprendentes. Las exclusiones solas no son suficientes; se requiere cinturón y tirantes con límite 0.0.


v3 polish enseñó: cuando el fallo está en la política y el modelo está sano, perturbar la política. Mantener pesos. Mantener historial de pérdida. Avanzar.


Una Verdad

La convergencia no es un evento único; es una cadena de correcciones. Cada fase expuso un defecto, lo corrigió y reveló el siguiente. ANDREA-120M lee 9.5/10 en el paso 112,584 porque v1, v2, v2.5, v3 base y v3 polish cada uno hizo su trabajo.

¿Cuál fase enseñó la lección más difícil?

De las cinco fases (v1, v2, v2.5, v3 base, v3 polish), ¿cuál dirías que enseñó la lección de ingeniería más transferible? Elige una. Expresa la lección con tus propias palabras y da 2-3 oraciones explicando por qué esta lección se generaliza más allá del entrenamiento de modelos de lenguaje.