10ML · Investigación sobre destilación

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.

PythonPyTorchllama.cppCUDA
Último commit del repositorio

Cargando últimos commits…

Retenido BPB

0.818

Profesor KL

0.317

Top-1 observado

0.865

estudiante byte

48M

01

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.

02

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.

03

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.

04

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.

05

Comparación de objetivos

Comparación de objetivos
ObjetivoBPB valBPB incl. EOTKL del teacherTop-1
EOT0,8600,9210,3480,862
Marginalize-It0,7716,4180,4040,637
Byte CE0,8720,9370,4880,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.

06

Documentos retenidos

Documentos retenidos
ObjetivoBPBBPB incl. EOTKL del teacherTop-1Prefijo greedy
EOT1,3621,4730,6170,7902,5
Marginalize-It1,2286,5623,2870,5832,9
Byte CE1,4831,6150,8260,78714,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.

07

Entrenamiento con datos completos

Entrenamiento con datos completos
Métrica1M posiciones26,2M posiciones
BPB1,2760,818
BPB incl. EOT1,3780,879
KL del teacher0,5750,317
Top-1 observado del siguiente símbolo0,8010,865
UTF-8 válido0,901,00
Prefijo greedy (bytes)6,357,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.

08

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.

09

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
10

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.