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

un

gäst
1 / ?

Vad en Tokenizer Äter Blir Vad Den Vet

Tokenizer-Diet: En Definition

En Harris-tokenizer tränas på ett korpusprov. Den kör distributionsanalys över det provet, väljer N segment som återkommer starkast, & skriver in dem i en vokabulär. Efter träning blir de N segmenten ett fast alfabet som en språkmodell använder för allt: träning, inferens, varje inmatning, varje utmatning.


Tokenizer-diet = ett prov av text som en tokenizer tränas på.


Träningsdiet = ett korpus som en språkmodell tränas på.


När två dieter skiljer sig åt, lär en tokenizer segment som är anpassade för text som modellen aldrig kommer att se. Inbäddningskapacitet (en plats per vokabulärpost) spenderas på segment som inte ger någon belöning under träning.


Tokenizer diet & saturation


ANDREA-12M's Mistake

ANDREA-12M tränade sin Harris-tokenizer på en rå kopia av megachat-v8.txt. Den kopian innehöll kodexempel & tool-call-data. Utbildningscurriculumet exkluderade dock kod & tool calls; ANDREA-12M såg endast konversationstext.


Resultat: en tokenizer lärde sig segment från Python-nyckelord, JSON-klamrar, shell-flaggor. En modell tränad på ordboksartiklar & dialog. Endast 36,4 % av segmenten överlappade ett curriculum-vägt urval. De återstående 63,6 % av vocab-platserna allokerades till segment som modellen aldrig skulle möta under träningstid.


Varför det är viktigt

Varje vocab-post förbrukar embedding-parametrar: en rad i en embedding-matris med formen V × d_model (täckt i aktivitet 4). Vid V = 4353 & d_model = 384 kostar varje vocab-plats 384 float-värden. Att slösa 63,6 % slösar 63,6 % av en embedding-matris på data som modellen aldrig ser.

Formulera en Diet-regel

Förklara en tokenizer-diet-regel i en mening. Beskriv sedan ett worst case: en forskare tränar en Harris-tokenizer på Wikipedia (formell prosa, citat) men tränar en modell på Twitter (slang, emoji, hashtags). Vad går fel?

Hur stor bör N bli

En Vocab-vetenskaplig Svepning

ANDREA-120M körde ett vocab-vetenskapligt experiment: träna Harris-tokenizers vid olika N-värden (begärda segment) på samma 1.25B-tecken firehose-korpus. Mät hur många segment en tokenizer faktiskt hittar. Plotta resultaten.


Begärd NFaktiska segment hittadeStatus
2,0482,048Omättad (utrymme att växa)
4,0964,096Omättad
8,1928,192Mättnadspunkt
16,38413,106Korpus uttömd

Vad mättnad betyder

Vid små N har ett korpus gott om återkommande mönster; en tokenizer fyller varje slot den frågar efter. Vid stora N tar en tokenizer slut på statistiskt meningsfulla gränser. Ett korpus på 1,25 miljarder tecken innehåller ungefär 13 106 distinkta morfemformade segment över en frekvensgräns. Att fråga efter 16 384 ger 13 106; de återstående 3 278 slotarna får paddas eller lämnas tomma.


Mättnad: en punkt där begärd N = funnen N. Bortom mättnad kan en tokenizer inte upptäcka fler segment utan att späda ut kvaliteten (sänka frekvensgränser & acceptera brus).


Söt punkt vid 8192

ANDREA-120M valde N = 8192. Ett resonemang:


- Nedan 8192 (t.ex. 4096): vokabulären underfångar vanliga morfem; sekvenser fragmenteras till fler token; genomströmningen sjunker.

- Vid 8192: varje segmentplats mappar till ett riktigt, återkommande mönster i ett korpus.

- Över 8192: avtagande avkastning; 13,106 < 16,384 betyder att platser slösas bort.


Slutlig ANDREA-120M-vokabulär: 256 + 8192 + 1 = 8449 tokens. Genomsnittlig komprimering: 5,91 UTF-8 byte per token, vilket betyder att varje token ersätter ~5,9 byte rå text. Det förhållandet bestämmer en models effektiva kontext: vid 1024 tokens × 5,91 byte/token läser ANDREA-120M ungefär 6 050 tecken kontext per forward pass.

Över eller under mättnad

Antag att en forskare överväger två N-värden för en framtida ANDREA-modell: N = 6144 (under mättnad) versus N = 12288 (över mättnad, där faktiska funna segment = 13106 fortfarande gäller eftersom korpuset är fast). För varje: (a) beräkna slutlig vokabulärstorlek (256 + N + 1), & (b) ange i en fras om varje inställning slösar vokabulärkapacitet, fångar all tillgänglig signal, eller underfångar. Visa ditt arbete.

Var 63,6% Kom Från

Räkna Slösade Platser

ANDREA-12M:s tokenizer tränad på rå megachat-v8.txt (4096 segment begärda, hittade). Ett team samlade ett läroplansvägt urval: ett korpus vägt efter hur ofta varje källa drogs av en bandit. De körde om en Harris-analys på det vägda urvalet & frågade: hur många av de ursprungliga 4096 segmenten dyker fortfarande upp?


Resultat: 36,4% överlapp. 1 491 av 4 096 segment matchade läroplansvikten. De återstående 2 605 segmenten kom från källor som modellen exkluderade.


63,6 % av vocab-slotsen allokerades till bytes som modellen aldrig sett.


Kostnad för inbäddning

Varje vocab-post upptar en rad i en inbäddningsmatris med formen (V, d_model). För ANDREA-12M:


- V = 4353 (256 + 4096 + 1)

- d_model = 384

- Inbäddningsparametrar = V × d_model = 4353 × 384 = 1 671 552 parametrar


63,6 % av dessa parametrar gick oanvända för konversationell träning. 1 063 107 parametrar allokerade, 0 belöningssignal. ANDREA-12M överlever eftersom 256 basbytes alltid täcker vilken tecken som helst; men kapacitet per parameter sjönk kraftigt.


Hur ANDREA-120M Fixade Det

ANDREA-120M:s tokenizer tränad på en full slang (1,25 miljarder tecken, 21 källor) vid mättnad N = 8192. Ett träningskorpus = samma slang. Dietjustering: 100 %. Resulterande överlappning på chat-viktat prov: 36,5 %. (Notera: 36,5 % är överlappning, inte täckning; chat ensam är en delmängd av full slang, så detta tal beter sig annorlunda än 12M:s 36,4 %.)


Effektiv komprimering: 5,91 UTF-8 bytes per token. ANDREA-120M:s inbäddningsmatris: 8449 × 768 = 6 488 832 parametrar. Varje parameter tjänar en belöningssignal eftersom varje segment kartlägger till text som modellen faktiskt tränas på.

Täckning Mot Överlappning

ANDREA-120M:s tokenizerkorpus matchar dess träningskorpus. Ändå landade "segment coverage on chat-weighted sample" på 36,5 %, liknande 12M:s 36,4 %. Varför är 36,5 % inte ett problem för 120M när 36,4 % var ett problem för 12M? Använd en fras om vilken delmängd som är vilken.

Varför 5,91 Bytes Per Token Är Viktigt

Ett Kompressionsförhållande

Genomsnittliga UTF-8-byte per token mäter hur mycket råtext varje vocab-inmatning komprimerar. ANDREA-120M genomsnittar 5,91. En modell med kortare bitar (3 byte/token) läser mindre kontext per forward pass; en modell med längre bitar (8 byte/token) läser mer men tränas långsammare (varje bit behöver fler prover för att läras väl).


Effektiv kontext


MängdVärde
Token-kontextfönster1 024 tokens
Genomsnittliga byte per token5,91
Effektiv teckenkontext1024 × 5,91 ≈ 6 050

Ungefär 6 000 UTF-8-tecken ryms i en ANDREA-120M forward pass. En sida med tät engelsk prosa är ~3 000–4 000 tecken; ANDREA läser ungefär en och en halv sida per pass.


Dieten stramar åt komprimeringen

En väljusterad tokenizer komprimerar bättre. När en tokenizer lär sig segment som återkommer i ett träningskorpus ryms mer text per token. ANDREA-12M:s dåligt justerade tokenizer komprimerade sämre på chatt (fler byte spenderades på byte-fallback-fragment eftersom chattsegment var glesare i vokabulären). ANDREA-120M:s diet-justerade tokenizer håller ett chattformat stycke på en snabb väg & sällsynta skrifter på byte-fallback.


Aktivitet 4 fortsätter

Aktivitet 4 (grow_a_language_model_embeddings) täcker vad som händer med de 8449 vocab-posterna: de blir rader i en embeddingmatris med formen V × d_model, lägger sedan till inlärda positionsembeddings innan de flödar in i det första transformerblocket.

Välj ett N

Reflektera över en kompromiss: ska en framtida ANDREA-modell använda N = 4096 (snabbare träning, fler bytes-per-token = längre effektiv kontext) eller N = 16384 (längre-men-rarare segment, färre tokens per textstycke, men förbi mättnad så slösade platser)? Välj en & ge ett en-meningars skäl. Inget fel svar.