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

To, Co Zjada Tokenizator, Staje Się Tym, Co Zna

Dieta Tokenizera: Definicja

Tokenizator Harrisa trenuje na próbce korpusu. Przeprowadza analizę dystrybucyjną na tej próbce, wybiera N segmentów, które powtarzają się najsilniej, i zapisuje je do słownictwa. Po treningu te N segmentów staje się stałym alfabetem, którego model językowy używa do wszystkiego: treningu, wnioskowania, każdego wejścia, każdego wyjścia.


Dieta tokenizera = próbka tekstu, na której trenuje tokenizator.


Dieta treningowa = korpus, na którym trenuje się model językowy.


Gdy dwie diety się różnią, tokenizator uczy się segmentów dostosowanych do tekstu, którego model nigdy nie zobaczy. Pojemność osadzeń (jedno miejsce na wpis w słowniku) jest marnowana na segmenty, które nie przynoszą nagrody podczas treningu.


Dieta tokenizatora & saturacja


BŁĄD ANDREA-12M

ANDREA-12M wytrenował swój tokenizer Harris na surowej głowie megachat-v8.txt. Ta głowa zawierała próbki kodu i dane wywołań narzędzi. Program treningowy jednak wykluczał kod i wywołania narzędzi; ANDREA-12M widział tylko tekst konwersacyjny.


Rezultat: tokenizer nauczył się segmentów z słów kluczowych Pythona, nawiasów JSON, flag powłoki. Model wytrenowany na hasłach słownikowych i dialogach. Tylko 36,4% segmentów pokrywało się z próbką ważoną programem treningowym. Pozostałe 63,6% slotów słownictwa zostało zaalokowane na segmenty, których model nigdy nie napotka w czasie treningu.


Dlaczego to ma znaczenie

Każdy wpis w słowniku zużywa parametry osadzenia: jeden wiersz macierzy osadzeń o kształcie V × d_model (omówione w aktywności 4). Przy V = 4353 i d_model = 384, każdy slot słownictwa kosztuje 384 liczby zmiennoprzecinkowe. Marnowanie 63,6% marnuje 63,6% macierzy osadzeń na dane, których model nigdy nie widzi.

Sformułuj regułę diety

Wyjaśnij regułę diety tokenizera w jednym zdaniu. Następnie opisz najgorszy przypadek: badacz trenuje tokenizer Harris na Wikipedii (formalna proza, cytaty), ale trenuje model na Twitterze (slang, emoji, hashtagi). Co pójdzie nie tak?

Jak duży powinien być N

Przegląd nauki o słowniku

ANDREA-120M przeprowadziła eksperyment nauki o słowniku: trenuj tokenizery Harris przy różnych wartościach N (żądane segmenty) na tym samym korpusie firehose o 1,25B znakach. Zmierz, ile segmentów tokenizator faktycznie znajdzie. Narysuj wyniki.


Żądane NRzeczywiste segmenty znalezioneStatus
2,0482,048Nienasycony (miejsce na wzrost)
4,0964,096Nienasycony
8,1928,192Punkt nasycenia
16,38413,106Korpus wyczerpany

Co oznacza nasycenie

Przy małym N korpus ma mnóstwo powtarzających się wzorców; tokenizator wypełnia każdy slot, o który prosi. Przy dużym N tokenizator kończą mu się statystycznie znaczące granice. Korpus liczący 1,25 miliarda znaków zawiera około 13 106 różnych segmentów w kształcie morfemów powyżej progu częstotliwości. Żądanie 16 384 daje 13 106; pozostałe 3278 slotów jest uzupełnianych lub pozostawionych pustych.


Nasycenie: punkt, w którym żądane N = znalezione N. Poza nasyceniem tokenizator nie może odkryć więcej segmentów bez rozcieńczania jakości (obniżania progów częstotliwości i akceptowania szumu).


Sweet Spot przy 8192

ANDREA-120M wybrała N = 8192. Uzasadnienie:


- Poniżej 8192 (np. 4096): słownik niedostatecznie obejmuje powszechne morfemy; sekwencje rozpadają się na więcej tokenów; przepustowość spada.

- Przy 8192: każdy slot segmentu mapuje się na rzeczywisty, powtarzający się wzorzec w korpusie.

- Powyżej 8192: malejące zwroty; 13,106 < 16,384 oznacza marnowanie slotów.


Ostateczny słownik ANDREA-120M: 256 + 8192 + 1 = 8449 tokenów. Średnia kompresja: 5,91 bajtów UTF-8 na token, co oznacza, że każdy token zastępuje ~5,9 bajtów surowego tekstu. To proporcja określa efektywny kontekst modelu: przy 1024 tokenach × 5,91 bajtów/token, ANDREA-120M odczytuje około 6050 znaków kontekstu na jedną przód-pass.

Powyżej czy poniżej saturacji

Załóżmy, że badacz rozważa dwie wartości N dla przyszłego modelu ANDREA: N = 6144 (poniżej saturacji) w porównaniu do N = 12288 (powyżej saturacji, gdzie faktyczna liczba znalezionych segmentów = 13106 nadal obowiązuje, ponieważ korpus jest stały). Dla każdej: (a) oblicz ostateczny rozmiar słownika (256 + N + 1), oraz (b) podaj w jednej frazie, czy każde ustawienie marnuje pojemność słownika, wychwytuje cały dostępny sygnał, czy niedowchwytuje. Pokaż obliczenia.

Skąd wzięło się 63,6%

Liczenie zmarnowanych slotów

Tokenizer ANDREA-12M wyszkolony na surowym pliku megachat-v8.txt (zażądano 4096 segmentów, znaleziono). Zespół pobrał próbkę ważoną curriculum: korpus ważony według częstotliwości, z jaką każdy źródło było wybierane przez bandyta. Ponownie przeprowadzili analizę Harrisa na tej ważonej próbce i zapytali: ile z oryginalnych 4096 segmentów nadal się pojawia?


Wynik: 36,4% nakładania się. 1491 z 4096 segmentów pasowało do ważenia curriculum. Pozostałe 2605 segmentów pochodziło ze źródeł wykluczonych przez model.


63,6% slotów słownictwa zostało zaalokowanych na bajty, których model nigdy nie widział.


Koszt osadzenia

Każdy wpis słownictwa zajmuje jeden wiersz macierzy osadzeń o kształcie (V, d_model). Dla ANDREA-12M:


- V = 4353 (256 + 4096 + 1)

- d_model = 384

- Parametry osadzenia = V × d_model = 4353 × 384 = 1 671 552 parametrów


63,6% tych parametrów pozostało niewykorzystanych do treningu konwersacyjnego. 1 063 107 parametrów przydzielonych, 0 sygnału nagrody. ANDREA-12M przetrwało, ponieważ 256 bazowych bajtów zawsze obejmuje dowolny znak; ale pojemność na parametr spadła gwałtownie.


Jak ANDREA-120M to naprawiło

Tokenizer ANDREA-120M trenowany na pełnym strumieniu danych (1,25B znaków, 21 źródeł) przy saturacji N = 8192. Korpus treningowy = ten sam strumień danych. Wyrównanie diety: 100%. Wynikowe nakładanie się na próbce ważonej wagą czatu: 36,5%. (Uwaga: 36,5% to nakładanie się, nie pokrycie; czat sam w sobie jest podzbiorem pełnego strumienia danych, więc ta liczba zachowuje się inaczej niż 36,4% w 12M.)


Skuteczna kompresja: 5,91 bajtów UTF-8 na token. Macierz osadzeń ANDREA-120M: 8449 × 768 = 6 488 832 parametry. Każdy parametr otrzymuje sygnał nagrody, ponieważ każdy segment mapuje się na tekst, na którym model faktycznie trenuje.

Pokrycie kontra nakładanie się

Tokenizator ANDREA-120M ma korpus zgodny z korpusem treningowym. Mimo to „pokrycie segmentów na próbce ważonej czatem” wyniosło 36,5%, podobnie jak 12M 36,4%. Dlaczego 36,5% nie jest problemem dla 120M, gdy 36,4% było problemem dla 12M? Użyj frazy o tym, który podzbiór jest którym.

Dlaczego 5,91 bajtów na token ma znaczenie

Wskaźnik kompresji

Średnia liczba bajtów UTF-8 na token mierzy, ile surowego tekstu kompresuje każdy wpis słownika. ANDREA-120M średnio 5,91. Model z krótszymi kawałkami (3 bajty/token) odczytuje mniej kontekstu na przejście w przód; model z dłuższymi kawałkami (8 bajtów/token) odczytuje więcej, ale trenuje wolniej (każdy kawałek potrzebuje więcej próbek, by dobrze się nauczyć).


Skuteczny kontekst


IlośćWartość
Okno kontekstu tokenów1,024 tokeny
Średnia liczba bajtów na token5.91
Skuteczny kontekst znakowy1024 × 5.91 ≈ 6,050

Około 6000 znaków UTF-8 mieści się w jednym forward passie ANDREA-120M. Strona gęstej prozy angielskiej ma ~3000-4000 znaków; ANDREA czyta około półtorej strony na pass.


Dieta Zacieśnia Kompresję

Dobrze wyrównany tokenizer kompresuje lepiej. Gdy tokenizer uczy się segmentów, które powtarzają się w korpusie treningowym, więcej tekstu mieści się na token. Słabo wyrównany tokenizer ANDREA-12M kompresował gorzej na czacie (więcej bajtów zużytych na fragmenty byte-fallback, ponieważ segmenty czatu były rzadsze w słowniku). Dieta-wyrównany tokenizer ANDREA-120M trzyma kawałek w kształcie czatu na szybkiej ścieżce & rzadkie skrypty na byte fallback.


Aktywność 4 Kontynuowana

Aktywność 4 (grow_a_language_model_embeddings) omawia, co dzieje się z tymi 8449 wpisami słownika: stają się one wierszami macierzy embeddingów o kształcie V × d_model, następnie dodawane są uczone embeddingi pozycyjne, zanim popłyną do pierwszego bloku transformera.

Wybierz N

Zastanów się nad kompromisem: czy przyszły model ANDREA powinien używać N = 4096 (szybsze trenowanie, więcej bajtów-na-token = dłuższy efektywny kontekst) czy N = 16384 (dłuższe-ale-rzadsze segmenty, mniej tokenów na fragment tekstu, ale po nasyceniu marnowane sloty)? Wybierz jeden & podaj powód w jednym zdaniu. Nie ma złej odpowiedzi.