Relatórios CUDA de Índices de Documentos
Um Treinador CUDA Sabe Qual Documento Amostrou
Cada passo de treinamento extrai uma sequência de um binário .btok, que empacota muitos documentos um após o outro. CUDA registra um índice de documento junto com a perda: step 47213, source=gutenberg, doc=128407, loss=2.81. Um proxy coleta esses relatórios & mantém um conjunto de índices de documentos únicos vistos por fonte.
De Contagens para Cobertura
Cobertura de uma fonte = unique_docs_seen / n_docs. Alguns exemplos:
| Fonte | 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% |
Fontes pequenas saturam rapidamente. Fontes grandes ficam abaixo de 50% por semanas. O bônus de cobertura recompensa um bandido por visitar documentos que ainda não foram amostrados dentro de uma fonte.
Fórmula do Bônus
O bônus de cobertura escala linearmente de 1.3x com 0% de cobertura até 1.0x com 50% de cobertura, depois fixo em 1.0x acima de 50%:
if coverage < 0.5:
bonus = 1.0 + 0.3 * (1.0 - coverage / 0.5)
else:
bonus = 1.0
Uma fonte com 0% de cobertura ganha 1.3x; uma fonte com 25% ganha 1.15x; uma fonte com 50% cai para 1.0x. Acima de 50%, nenhum bônus é aplicado.
Calcule o Bônus
Dois Sinais de Frescor Distintos
Mesmo Objetivo, Diferente Granularidade
A ANDREA tem dois mecanismos que previnem o sobre-treinamento em uma única fonte. Eles soam semelhantes; medem coisas diferentes.
Penalidade de época. Acompanha o excesso agregado de pulls. Quando lifetime_pulls / n_docs > 1.0, uma fonte teoricamente passou por cada documento pelo menos uma vez. Penalidade = 1 / (1 + epochs). Uma fonte synthetic-chat de 1.4K documentos com 5.600 pulls vitalícios (epochs = 4) recebe penalidade 1/5 = 0.2x. As contagens de épocas persistem entre reinicializações; elas nunca decaem.
Bônus de cobertura. Acompanha a frescor por documento dentro de uma fonte. O CUDA relata índices de docs; o proxy mantém um conjunto por fonte. Fontes abaixo de 50% de cobertura de docs únicos ganham até 1.3x. A cobertura recompensa explorar a cauda de uma fonte; a penalidade de época pune esgotá-la.
Por Que Ambos Importam
| Sinal | Rastreia | Direção | Limite | Persiste entre reinícios |
|---|---|---|---|---|
| Penalidade de época | puxamento excessivo agregado | reduz | 1/(1+e) | sim |
| Bônus de cobertura | frescor por documento | aumenta | 1.3x | sim |
Uma fonte gutenberg de 500K documentos pode permanecer abaixo de 50% de cobertura durante toda a execução de treinamento de 200K, sem nunca se aproximar de época=1. A penalidade de época a ignora; o bônus de cobertura puxa ativamente um bandido em direção à cauda inexplorada de 70% do gutenberg.
Inversamente, uma fonte sintética-chat de 1.4K satura a cobertura (100%) em poucas milhares de puxadas; o bônus de cobertura permanece em 1.0x enquanto a penalidade de época cresce.
Diferencie os Dois
O Que o Bônus de Cobertura Compra para ANDREA
O Modo de Falha Que Ele Previne
Sem rastreamento em nível de documento, um bandido que seleciona com base em recompensa por passo escolhe sequências .btok de forma gananciosa. Um corpus gutenberg de 500K documentos contém algumas milhares de sequências com baixa entropia cruzada (prosa consistente, vocabulário comum). Um bandido apenas com recompensa retorna repetidamente a essas sequências porque elas continuam produzindo sinais de recompensa fortes.
Resultado: um corpus de 500K documentos é amostrado em talvez 2K-5K sequências distintas ao longo de 200K passos de treinamento. O modelo memoriza essas sequências sem nunca ver o resto. Capacidade desperdiçada; cobertura presa abaixo de 1%.
O Que o Bônus de Cobertura Compra
1.3x em 0% de cobertura, escalado para baixo até 1.0x em 50%. Esse empurrão se propaga pela seleção UCB1: braços com baixa cobertura permanecem competitivos mesmo quando sua recompensa por puxada cai. O bandido explora a cauda por design, em vez de por acidente.
Ao longo de uma execução de 200K passos em um gutenberg de 500K documentos, o bônus de cobertura tipicamente eleva a cobertura observada de ~3% (sem bônus) para ~25-30% (com bônus). Mesmo compute, oito a dez vezes mais documentos tocados.
Onde o Rastreamento Reside
| Component | Responsabilidade |
|---|---|
microgpt_cuda.cu | Reporta índice do documento por etapa de treinamento |
training_proxy.py | Mantém conjunto seen_docs por fonte |
training_proxy.py | Calcula cobertura, aplica bônus à recompensa do bandit |
training_proxy.py | Persiste seen_docs em .state.json entre reinicializações |