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

un

gość
1 / ?
powrót do lekcji

CUDA Raportuje Indeksy Dokumentów

Trener CUDA Wie, Jaki Dokument Został Wybrany

Każdy krok treningowy pobiera sekwencję z pliku binarnego .btok, który pakuje wiele dokumentów jeden po drugim. CUDA rejestruje indeks dokumentu obok straty: step 47213, source=gutenberg, doc=128407, loss=2.81. Proxy zbiera te raporty i utrzymuje zbiór unikalnych indeksów dokumentów widzianych na źródło.


Od Liczników do Pokrycia

Pokrycie źródła = unique_docs_seen / n_docs. Kilka przykładów:


Źródłon_docsunikalnie widzianepokrycie
gutenberg512,000154,00030.1%
hermes3-general67,39547,17670.0%
dictionary88,00088,000100.0%
synthetic-chat1,4001,400100.0%

Małe źródła szybko się nasycają. Duże źródła spadają poniżej 50% na tygodnie. Bonus za pokrycie nagradza bandyta za odwiedzanie dokumentów, których jeszcze nie próbował w źródle.


Bonus za pokrycie na źródło


Formuła Bonusu

Bonus za pokrycie skaluje się liniowo od 1.3x przy 0% pokrycia do 1.0x przy 50% pokrycia, potem stały na 1.0x powyżej 50%:


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

Źródło z 0% pokrycia otrzymuje 1.3x; źródło z 25% otrzymuje 1.15x; źródło z 50% spada do 1.0x. Powyżej 50% bonus nie obowiązuje.

Oblicz premię

Uruchomienie z pokryciem gutenberg na poziomie 30% i hermes3-general na poziomie 70%. Oblicz mnożnik premii za pokrycie dla każdego źródła. Pokaż obliczenia.

Dwa różne sygnały świeżości

Ten sam cel, różna granularność

ANDREA ma dwa mechanizmy, które zapobiegają nadmiernemu trenowaniu na jednym źródle. Brzmią podobnie; mierzą różne rzeczy.


Kara za epoki. Śledzi agregowane nadmierne ciągnięcia. Gdy lifetime_pulls / n_docs > 1.0, źródło teoretycznie przeszło już przez każdy dokument co najmniej raz. Kara = 1 / (1 + epochs). Źródło synthetic-chat z 1,4 tys. dokumentów przy 5600 lifetime pulls (epochs = 4) otrzymuje karę 1/5 = 0.2x. Liczniki epok zachowują się przez restarty; nigdy nie zanikają.


Bonus za pokrycie. Śledzi świeżość per-dokument w źródle. CUDA raportuje indeksy dokumentów; proxy utrzymuje zbiór per źródło. Źródła poniżej 50% pokrycia unikalnych dokumentów otrzymują do 1.3x. Pokrycie nagradza eksplorację ogona źródła; kara za epoki karze jego wyczerpanie.


Dlaczego oba są ważne


SygnałŚledziKierunekOgraniczenieUtrzymuje się po restarcie
Kara epokiagregat nadmiernego ciągnięciazmniejsza1/(1+e)tak
Premia za pokrycieświeżość na dokumentzwiększa1.3xtak

Źródło gutenberg o 500K dokumentach może utrzymywać pokrycie poniżej 50% przez cały trening 200K, nigdy nie zbliżając się do epoki=1. Kara epoki to ignoruje; premia za pokrycie aktywnie ciągnie bandyta w stronę nieeksplorowanego 70% ogona gutenberg.


Odwrotnie, źródło syntetyczno-chatowe o 1.4K nasyca pokrycie (100%) w ciągu kilku tysięcy ciągnięć; premia za pokrycie zostaje na 1.0x, podczas gdy kara epoki rośnie.

Rozróżnij Oba

Wyobraź sobie dwa źródła w trakcie treningu: źródło A ma 1 400 dokumentów & 8 400 Lifetime pulls. Źródło B ma 500 000 dokumentów & 80 000 lifetime pulls; proxy zalogował jak dotąd 75 000 unikalnych indeksów dokumentów dla B. Który sygnał (kara za epokę czy bonus za pokrycie) rządzi wagą bandyta każdego źródła & dlaczego?

Co Bonus za Pokrycie Kupuje ANDREA

Tryb Awarii, Który Zapobiega

Bez śledzenia na poziomie dokumentu, bandyta wybierający na podstawie nagrody za pojedynczy krok, chciwie wybiera sekwencje .btok. Korpus gutenberg o 500K dokumentach zawiera kilka tysięcy sekwencji o niskiej entropii krzyżowej (spójna proza, powszechny słownik). Bandyta oparty tylko na nagrodzie wielokrotnie wraca do tych sekwencji, ponieważ one ciągle generują silne sygnały nagrody.


Rezultat: korpus o 500K dokumentach jest próbkowany w ramach może 2K-5K różnych sekwencji przez 200K kroków treningowych. Model zapamiętuje te sekwencje, nigdy nie widząc reszty. Marnowana pojemność; pokrycie utknięte poniżej 1%.


Co Kupuje Bonus Pokrycia

1.3x przy 0% pokryciu, skalowane w dół do 1.0x przy 50%. To pchnięcie propaguje przez selekcję UCB1: ramiona o niskim pokryciu pozostają konkurencyjne, nawet gdy ich nagroda za pociągnięcie spada. Bandyta eksploruje ogon z założenia, a nie przypadkowo.


W trakcie 200K-krokowego uruchomienia na gutenberg o 500K dokumentach, bonus pokrycia zazwyczaj podnosi obserwowane pokrycie z ~3% (bez bonusu) do ~25-30% (z bonusem). Ten sam compute, osiem do dziesięciu razy więcej dotkniętych dokumentów.


Gdzie znajduje się śledzenie


KomponentOdpowiedzialność
microgpt_cuda.cuRaportuje indeks dokumentu na krok treningowy
training_proxy.pyUtrzymuje zbiór seen_docs na źródło
training_proxy.pyOblicza pokrycie, stosuje premię do nagrody bandyta
training_proxy.pyZachowuje seen_docs w .state.json między restartami

Połącz z konkretnym wyborem inżynieryjnym

Załóż, że usunąłeś premię za pokrycie z treningu ANDREA-120M. Przewiduj jedną konkretną konsekwencję dla ramienia gutenberg (które ma 500K+ dokumentów) w trakcie 200K-krokowego uruchomienia. Odnieś się do procentu pokrycia, różnorodności dokumentów lub jakości próbek downstream.