CUDA Rapporteert Documentindices
Een CUDA Trainer Weet Welk Document Het Heeft Bemonsterd
Elke trainingstap haalt een sequentie uit een .btok binaire, die veel documenten aaneengeregen bevat. CUDA registreert een documentindex naast de loss: stap 47213, bron=gutenberg, doc=128407, loss=2.81. Een proxy verzamelt deze rapporten & onderhoudt een set van unieke documentindices gezien per bron.
Van Aantallen naar Dekking
Dekking van een bron = unique_docs_seen / n_docs. Enkele voorbeelden:
| Bron | n_docs | uniek gezien | dekking |
|---|---|---|---|
| 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% |
Kleine bronnen raken snel verzadigd. Grote bronnen zakken wekenlang onder de 50%. Coverage bonus beloont een bandit voor het bezoeken van documenten die het nog niet heeft bemonsterd binnen een bron.
Bonusformule
Coverage bonus schaalt lineair van 1.3x bij 0% coverage omlaag naar 1.0x bij 50% coverage, en daarna vlak op 1.0x boven 50%:
if coverage < 0.5:
bonus = 1.0 + 0.3 * (1.0 - coverage / 0.5)
else:
bonus = 1.0
Een bron met 0% dekking verdient 1,3x; een bron met 25% verdient 1,15x; een bron met 50% daalt naar 1,0x. Boven 50% geldt geen bonus.
Bereken de Bonus
Twee Onderscheiden Versheidsignalen
Zelfde Doel, Andere Granulariteit
ANDREA heeft twee mechanismen die over-training op een enkele bron voorkomen. Ze klinken vergelijkbaar; ze meten verschillende dingen.
Epoch-straf. Houdt cumulatief overtrekken bij. Wanneer lifetime_pulls / n_docs > 1.0, heeft een bron theoretisch elke document minstens één keer rondgedraaid. Straf = 1 / (1 + epochs). Een bron synthetic-chat met 1.4K documenten bij 5.600 lifetime pulls (epochs = 4) verdient straf 1/5 = 0.2x. Epoch-tellingen blijven bestaan over herstarts heen; ze vervallen nooit.
Dekkingspremie. Houdt frisheid per document bij binnen een bron. CUDA rapporteert doc-indexen; de proxy onderhoudt een set per bron. Bronnen onder 50% dekking van unieke docs verdienen tot 1.3x. Dekking beloont het verkennen van de staart van een bron; epoch-straf straft het uitputten ervan.
Waarom Beide Belangrijk Zijn
| Signaal | Tracks | Richting | Cap | Blijft bestaan na herstarts |
|---|---|---|---|---|
| Epoch-straf | aggregate over-pulling | verlaagt | 1/(1+e) | ja |
| Dekkingsbonus | per-doc freshness | verhoogt | 1.3x | ja |
Een 500K-document gutenberg-bron kan onder 50% dekking blijven voor de gehele 200K training run terwijl het nooit epoch=1 nadert. Epoch-straf negeert het; dekkingsbonus trekt een bandit actief naar gutenberg's onontgonnen 70% staart.
Omgekeerd bereikt een 1.4K synthetische-chat bron dekking (100%) binnen een paar duizend pulls; dekkingsbonus blijft op 1.0x terwijl epoch-straf groeit.
Onderscheid de Twee
Wat de Coverage Bonus ANDREA oplevert
De Failure Mode Die Het Voorkomt
Zonder doc-level tracking kiest een bandit die selecteert op per-step reward .btok-sequenties hebzuchtig. Een 500K-document Gutenberg-corpus bevat een paar duizend sequenties met lage cross-entropy (consistente proza, veelvoorkomende woordenschat). Een reward-only bandit keert steeds terug naar die sequenties omdat ze sterke reward-signalen blijven produceren.
Resultaat: een 500K-document corpus wordt bemonsterd over misschien 2K-5K distincte sequenties over 200K training steps. Het model memoriseert die sequenties zonder ooit de rest te zien. Capaciteit verspild; coverage vast onder 1%.
Wat Coverage Bonus oplevert
1.3x bij 0% coverage, schalend omlaag naar 1.0x bij 50%. Die duw verspreidt zich door UCB1-selectie: armen met lage coverage blijven competitief, zelfs als hun per-pull reward daalt. De bandit verkent de staart bewust in plaats van per ongeluk.
Over een 200K-step run op een 500K-doc Gutenberg verhoogt coverage bonus typisch de waargenomen coverage van ~3% (geen bonus) naar ~25-30% (met bonus). Zelfde compute, acht tot tien keer meer documenten aangeraakt.
Waar de Tracking Zit
| Component | Verantwoordelijkheid |
|---|---|
microgpt_cuda.cu | Rapporteert doc-index per trainingstap |
training_proxy.py | Onderhoudt seen_docs set per bron |
training_proxy.py | Berekent dekking, past bonus toe op bandit-beloning |
training_proxy.py | Behoudt seen_docs in .state.json over herstarts heen |