eclipse
Equipo de destilación a nivel de bytes para Ornith 1.5 9B. Objetivos EOT exactos, un estudiante de 48 millones de bytes y un estudio de viabilidad reproducible.
Convierte la distribución de tokens de un maestro 9B en bytes exactos/objetivos de fin de token, luego mide lo que realmente aprende un estudiante de bytes pequeños.
Cargando últimos commits…
Retenido BPB
0.818
Profesor KL
0.317
Top-1 observado
0.865
estudiante byte
48M
Problema
La destilación a nivel de token supone que el estudiante comparte el tokenizador del maestro. Un estudiante de nivel de byte no lo hace, por lo que la distribución del siguiente token del profesor debe convertirse en una distribución del siguiente byte con un estado terminal bien definido.
Este proyecto prueba si esa conversión puede ser exacta, si un estudiante de bytes pequeños puede aprender de ella y si los objetivos de fin de token superan a Marginalise-It y la entropía cruzada de bytes simples en una comparación controlada.
Configuración
El teacher es Ornith-1.5-9B, un modelo híbrido Qwen3.5 de 9B, cuantizado a Q5_K_M para la extracción masiva y Q8_0 para la auditoría de precisión. El student es un Transformer byte denso de ~48M con contexto de 1.024 bytes y vocabulario de 260 símbolos. El corpus son ~20 MB de texto y código normalizados en NFC: 6.592.718 tokens de entrenamiento y 136.916 de validación. El entrenamiento corre en una única RTX 3070 de 8 GB.
Método
Los logits del profesor se transmiten desde llama.cpp y se convierten en un byte-trie del vocabulario de 248k tokens en el orden DFS, por lo que cada subárbol de prefijo es un rango contiguo. Las distribuciones de bytes provienen de masas de subárboles secundarios; el nodo terminal recibe p(token) / masa(prefijo) en el símbolo EOT.
Marginar: se deriva de la misma fila de 260 dimensiones poniendo a cero EOT y renormalizando. Los logits sin procesar nunca persisten; los objetivos se almacenan como fragmentos fp16 con etiquetas explícitas del siguiente símbolo.
Conversión de objetivos
Una suma acumulada en float32 del conversor de Python podía asignar mal objetivos de prefijos raros (hasta 0,789 frente a una referencia float64). El conversor de C++ es la ruta de referencia y coincide con float64 hasta 1,3e-7.
La extracción de 1M produjo 4.014.129 posiciones a partir de 1.000.497 tokens del teacher: 2,087 GB, 431 tokens/s, 38,7 minutos. Cinco posiciones hacen underflow en fp16; el shard valida con sumas de fila y conteos exactos.
Comparación de objetivos
| Objetivo | BPB val | BPB incl. EOT | KL del teacher | Top-1 |
|---|---|---|---|---|
| EOT | 0,860 | 0,921 | 0,348 | 0,862 |
| Marginalize-It | 0,771 | 6,418 | 0,404 | 0,637 |
| Byte CE | 0,872 | 0,937 | 0,488 | 0,865 |
1M tokens, 2.000 pasos, 300.653 bytes de validación. Marginalize-It gana el BPB de contenido descartando la masa EOT, lo que lo hace no desplegable.
Documentos retenidos
| Objetivo | BPB | BPB incl. EOT | KL del teacher | Top-1 | Prefijo greedy |
|---|---|---|---|---|---|
| EOT | 1,362 | 1,473 | 0,617 | 0,790 | 2,5 |
| Marginalize-It | 1,228 | 6,562 | 3,287 | 0,583 | 2,9 |
| Byte CE | 1,483 | 1,615 | 0,826 | 0,787 | 14,2 |
36 documentos no vistos, 420.313 bytes evaluados. Los mismos documentos se usaron para elegir el objetivo, así que no hay un test split intacto.
Entrenamiento con datos completos
| Métrica | 1M posiciones | 26,2M posiciones |
|---|---|---|
| BPB | 1,276 | 0,818 |
| BPB incl. EOT | 1,378 | 0,879 |
| KL del teacher | 0,575 | 0,317 |
| Top-1 observado del siguiente símbolo | 0,801 | 0,865 |
| UTF-8 válido | 0,90 | 1,00 |
| Prefijo greedy (bytes) | 6,35 | 7,25 |
Corrida completa: 10.000 pasos, ~3,1 épocas. La curva de validación se aplana tras ~8k pasos; documentación llega a BPB 0,764 y Python a 1,143.
lo que prueba
El oleoducto funciona de punta a punta
Un estudiante de 48 millones de bytes aprende la distribución del siguiente byte del profesor de 9B en documentos invisibles y la conversión objetivo es exacta.
La elección objetiva importa
EOT + 10% CE venció a EOT puro y CE de bytes puros en la comparación controlada de 1M, y EOT es el único método con límites de token utilizables.
Límites
- No es un modelo de lenguaje usable: la generación libre sigue acumulando error (coincidencia greedy de 7,25 bytes)
- No hay test split intacto; los 36 documentos de validación también se usaron para elegir el objetivo
- El contexto del teacher (4.096 tokens) supera la ventana de 1.024 símbolos del student, y las ventanas pueden cruzar límites de documento
- Validado en una única RTX 3070 de 8 GB; la escala es la palanca dominante
- El resultado prueba el pipeline, no el modelo
Próximos pasos
Siguiente: una ruta de GPU de 24 GB con un student de 100–300M y objetivos on-the-fly, un objetivo centrado en generación y una segunda semilla o un control token-student. El resultado actual es un estudio de viabilidad, no un producto entrenado.