English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

ospite
1 / ?
torna alle lezioni

CUDA Riporta gli Indici dei Documenti

Un Trainer CUDA Sa Quale Documento Ha Campionato

Ogni passo di addestramento estrae una sequenza da un file .btok binario, che impacchetta molti documenti uno dopo l'altro. CUDA registra un indice di documento insieme alla loss: step 47213, source=gutenberg, doc=128407, loss=2.81. Un proxy raccoglie questi report & mantiene un insieme di indici di documento unici visti per sorgente.


Da Conteggi a Copertura

Copertura di una sorgente = unique_docs_seen / n_docs. Alcuni esempi:


Sorgenten_docsunici visticopertura
gutenberg512.000154.00030,1%
hermes3-general67.39547.17670,0%
dictionary88.00088.000100,0%
synthetic-chat1.4001.400100,0%

Le fonti piccole saturano rapidamente. Le fonti grandi scendono sotto il 50% per settimane. Il bonus di copertura premia un bandit per visitare documenti che non ha ancora campionato all'interno di una fonte.


Coverage bonus per source


Formula del Bonus

Il bonus di copertura scala linearmente da 1.3x allo 0% di copertura fino a 1.0x al 50% di copertura, poi rimane piatto a 1.0x sopra il 50%:


if coverage < 0.5:
bonus = 1.0 + 0.3 * (1.0 - coverage / 0.5)
else:
bonus = 1.0

Una sorgente con copertura al 0% guadagna 1.3x; una sorgente al 25% guadagna 1.15x; una sorgente al 50% scende a 1.0x. Sopra il 50%, non si applica alcun bonus.

Calcola il Bonus

Una run con copertura gutenberg al 30% & copertura hermes3-general al 70%. Calcola il moltiplicatore del bonus di copertura per ogni sorgente. Mostra i tuoi calcoli.

Due Segnali di Freschezza Distinti

Stesso Obiettivo, Granularità Diversa

ANDREA ha due meccanismi che prevengono il sovra-allenamento su una singola fonte. Suonano simili; misurano cose diverse.


Penalità per epoca. Traccia il sovra-uso aggregato. Quando lifetime_pulls / n_docs > 1.0, una fonte ha teoricamente superato ogni documento almeno una volta. Penalità = 1 / (1 + epochs). Una fonte synthetic-chat con 1.4K documenti a 5.600 lifetime pulls (epochs = 4) ottiene penalità 1/5 = 0.2x. I conteggi delle epoche persistono attraverso i riavvii; non decadono mai.


Bonus di copertura. Traccia la freschezza per documento all'interno di una fonte. CUDA riporta gli indici dei documenti; il proxy mantiene un set per fonte. Le fonti sotto il 50% di copertura di documenti unici guadagnano fino a 1.3x. La copertura premia l'esplorazione della coda di una fonte; la penalità per epoca punisce l'esaurimento.


Perché Entrambi Sono Importanti


SegnaleTracciaDirezioneCapPersiste tra i riavvii
Penalità epocaaggregato over-pullingriduce1/(1+e)
Bonus coperturafreschezza per-docaumenta1.3x

Una sorgente gutenberg da 500K documenti può rimanere sotto il 50% di copertura per l'intero run di training da 200K mentre non si avvicina mai a epoca=1. La penalità epoca la ignora; il bonus copertura attivamente tira un bandit verso la coda inesplorata del 70% di gutenberg.


Al contrario, una sorgente synthetic-chat da 1.4K satura la copertura (100%) entro poche migliaia di pull; il bonus copertura rimane a 1.0x mentre la penalità epoca cresce.

Distinguere i Due

Immagina due fonti a metà addestramento: fonte A ha 1.400 documenti & 8.400 estrazioni lifetime. Fonte B ha 500.000 documenti & 80.000 estrazioni lifetime; il proxy ha registrato 75.000 indici di documenti unici per B finora. Quale segnale (penalità epoch o bonus copertura) governa il peso bandit di ogni fonte, & perché?

Cosa Compra il Bonus Copertura a ANDREA

La Modalità di Fallimento che Previene

Senza il tracciamento a livello di documento, un bandit che seleziona in base alla ricompensa per passo sceglie sequenze .btok in modo avido. Un corpus Gutenberg da 500K documenti contiene poche migliaia di sequenze con bassa entropia incrociata (prosa coerente, vocabolario comune). Un bandit basato solo sulla ricompensa torna ripetutamente a quelle sequenze perché continuano a produrre forti segnali di ricompensa.


Risultato: un corpus da 500K documenti viene campionato su forse 2K-5K sequenze distinte in 200K passi di addestramento. Il modello memorizza quelle sequenze senza mai vedere il resto. Capacità sprecata; copertura bloccata sotto l'1%.


Cosa Acquista il Bonus di Copertura

1.3x allo 0% di copertura, scalato fino a 1.0x al 50%. Quella spinta si propaga attraverso la selezione UCB1: le braccia con bassa copertura rimangono competitive anche quando la loro ricompensa per estrazione cala. Il bandit esplora la coda per progettazione piuttosto che per accidente.


Su una run da 200K passi su un Gutenberg da 500K documenti, il bonus di copertura tipicamente alza la copertura osservata da ~3% (senza bonus) a ~25-30% (con bonus). Stessa potenza di calcolo, otto-dieci volte più documenti toccati.


Dove Risiede il Tracking


ComponentResponsabilità
microgpt_cuda.cuRiporta l'indice del documento per ogni step di training
training_proxy.pyMantiene il set seen_docs per sorgente
training_proxy.pyCalcola la copertura, applica bonus alla ricompensa del bandit
training_proxy.pyPersiste seen_docs in .state.json tra i riavvii

Collegati a una Scelta Ingegneristica Concreta

Supponi di aver rimosso il bonus di copertura dall'addestramento ANDREA-120M. Predici una conseguenza concreta specifica per il braccio gutenberg (che ha 500K+ documenti) su una corsa di 200K step. Fai riferimento alla percentuale di copertura, alla diversità dei documenti o alla qualità del campione downstream.