CUDA Reporta Índices de Documentos
Un Entrenador CUDA Sabe Qué Documento Muestrea
Cada paso de entrenamiento extrae una secuencia de un binario .btok, que empaqueta muchos documentos uno tras otro. CUDA registra un índice de documento junto con la pérdida: step 47213, source=gutenberg, doc=128407, loss=2.81. Un proxy recopila estos informes & mantiene un conjunto de índices de documentos únicos vistos por fuente.
De Conteos a Cobertura
Cobertura de una fuente = unique_docs_seen / n_docs. Algunos ejemplos:
| Fuente | n_docs | únicos vistos | cobertura |
|---|---|---|---|
| gutenberg | 512,000 | 154,000 | 30.1% |
| hermes3-general | 67,395 | 47,176 | 70.0% |
| dictionary | 88,000 | 88,000 | 100.0% |
| synthetic-chat | 1,400 | 1,400 | 100.0% |
Las fuentes pequeñas se saturan rápidamente. Las fuentes grandes caen por debajo del 50% durante semanas. El bono de cobertura recompensa a un bandido por visitar documentos que aún no ha muestreado dentro de una fuente.
Fórmula del Bono
El bono de cobertura escala linealmente desde 1.3x con 0% de cobertura hasta 1.0x con 50% de cobertura, luego permanece plano en 1.0x por encima del 50%:
if coverage < 0.5:
bonus = 1.0 + 0.3 * (1.0 - coverage / 0.5)
else:
bonus = 1.0
Una fuente con 0% de cobertura obtiene 1.3x; una fuente con 25% obtiene 1.15x; una fuente con 50% cae a 1.0x. Por encima del 50%, no se aplica bonificación.
Calcula la Bonificación
Dos Señales de Frescura Distintas
Mismo Objetivo, Diferente Granularidad
ANDREA tiene dos mecanismos que evitan el sobreentrenamiento en una sola fuente. Suenan similares; miden cosas diferentes.
Penalización por época. Rastrea el sobreuso agregado. Cuando lifetime_pulls / n_docs > 1.0, una fuente ha pasado teóricamente por cada documento al menos una vez. Penalización = 1 / (1 + epochs). Una fuente synthetic-chat de 1.4K documentos con 5,600 pulls de por vida (epochs = 4) obtiene penalización 1/5 = 0.2x. Los conteos de épocas persisten entre reinicios; nunca decaen.
Bonificación por cobertura. Rastrea la frescura por documento dentro de una fuente. CUDA reporta índices de docs; el proxy mantiene un conjunto por fuente. Las fuentes por debajo del 50% de cobertura de docs únicos ganan hasta 1.3x. La cobertura recompensa explorar la cola de una fuente; la penalización por época castiga agotarla.
Por qué ambos importan
| Señal | Rastrea | Dirección | Límite | Persiste entre reinicios |
|---|---|---|---|---|
| Penalización de época | exceso de tirones agregado | reduce | 1/(1+e) | sí |
| Bonificación de cobertura | frescura por documento | aumenta | 1.3x | sí |
Una fuente gutenberg de 500K documentos puede mantenerse por debajo del 50% de cobertura durante toda la ejecución de entrenamiento de 200K mientras nunca se acerca a época=1. La penalización de época la ignora; la bonificación de cobertura tira activamente de un bandido hacia la cola inexplorada del 70% de gutenberg.
Por el contrario, una fuente sintética-chat de 1.4K satura la cobertura (100%) en unos pocos miles de tirones; la bonificación de cobertura se mantiene en 1.0x mientras la penalización de época crece.
Distingue los Dos
Qué Compra la Bonificación por Cobertura a ANDREA
El Modo de Fallo que Previene
Sin seguimiento a nivel de documento, un bandido que selecciona según la recompensa por paso elige secuencias .btok de manera codiciosa. Un corpus de gutenberg de 500K documentos contiene unas pocas miles de secuencias con baja entropía cruzada (prosa consistente, vocabulario común). Un bandido solo de recompensa regresa repetidamente a esas secuencias porque siguen produciendo señales de recompensa fuertes.
Resultado: un corpus de 500K documentos se muestrea a través de quizás 2K-5K secuencias distintas en 200K pasos de entrenamiento. El modelo memoriza esas secuencias sin ver nunca el resto. Capacidad desperdiciada; cobertura estancada por debajo del 1%.
Qué Compra el Bono de Cobertura
1.3x al 0% de cobertura, escalado hasta 1.0x al 50%. Ese empujón se propaga a través de la selección UCB1: brazos con baja cobertura permanecen competitivos incluso cuando su recompensa por tirada disminuye. El bandido explora la cola por diseño en lugar de por accidente.
En una ejecución de 200K pasos en un gutenberg de 500K documentos, el bono de cobertura típicamente eleva la cobertura observada de ~3% (sin bono) a ~25-30% (con bono). Mismo cómputo, ocho a diez veces más documentos tocados.
Dónde reside el seguimiento
| Componente | Responsabilidad |
|---|---|
microgpt_cuda.cu | Reporta el índice del documento por paso de entrenamiento |
training_proxy.py | Mantiene el conjunto seen_docs por fuente |
training_proxy.py | Calcula la cobertura, aplica bono a la recompensa del bandit |
training_proxy.py | Persiste seen_docs en .state.json entre reinicios |