Apa yang Dimakan Tokenizer Menjadi Apa yang Diketahuinya
Diet Tokenizer: Sebuah Definisi
Tokenizer Harris dilatih pada sampel korpus. Ia menjalankan analisis distribusional di seluruh sampel tersebut, memilih N segmen yang paling sering muncul secara kuat, & menuliskannya ke dalam kosa kata. Setelah pelatihan, N segmen tersebut menjadi alfabet tetap yang digunakan model bahasa untuk segalanya: pelatihan, inferensi, setiap input, setiap output.
Diet tokenizer = sampel teks yang digunakan tokenizer untuk pelatihan.
Diet pelatihan = korpus yang dilatih oleh model bahasa.
Ketika dua diet berbeda, tokenizer mempelajari segmen-segmen yang disesuaikan untuk teks yang tidak akan pernah dilihat oleh model. Kapasitas embedding (satu slot per entri kosakata) terbuang untuk segmen-segmen yang tidak mendapatkan imbalan selama pelatihan.
Kesalahan ANDREA-12M
ANDREA-12M melatih tokenizer Harris-nya pada raw head dari megachat-v8.txt. Raw head tersebut berisi sampel kode & data tool-call. Kurikulum pelatihan, bagaimanapun, mengecualikan kode & tool calls; ANDREA-12M hanya melihat teks percakapan.
Hasil: tokenizer mempelajari segmen dari kata kunci Python, kurung kurawal JSON, flag shell. Model dilatih pada entri kamus & dialog. Hanya 36,4% segmen yang tumpang tindih dengan sampel tertimbang kurikulum. 63,6% sisanya dari slot kosakata dialokasikan ke segmen yang tidak pernah ditemui model saat pelatihan.
Mengapa Itu Penting
Setiap entri kosakata mengonsumsi parameter embedding: satu baris dari matriks embedding berbentuk V × d_model (dibahas di aktivitas 4). Pada V = 4353 & d_model = 384, setiap slot kosakata memakan biaya 384 float. Membuang 63,6% berarti membuang 63,6% matriks embedding pada data yang tidak pernah dilihat model.
Nyatakan Aturan Diet
Seberapa Besar N Harusnya
Sapuan Ilmu Vocab
ANDREA-120M menjalankan eksperimen ilmu vocab: latih tokenizer Harris pada nilai N yang berbeda (segmen yang diminta) pada korpus firehose 1.25B-karakter yang sama. Ukur berapa banyak segmen yang benar-benar ditemukan tokenizer. Plot hasilnya.
| Jumlah Diminta | Segmen Aktual Ditemukan | Status |
|---|---|---|
| 2.048 | 2.048 | Tidak Jenuh (masih ada ruang untuk berkembang) |
| 4.096 | 4.096 | Tidak Jenuh |
| 8.192 | 8.192 | Titik jenuh |
| 16.384 | 13.106 | Korpus habis |
Apa Arti Jenuh
Pada N kecil, sebuah korpus memiliki banyak pola berulang; tokenizer mengisi setiap slot yang dimintanya. Pada N besar, tokenizer kehabisan batas statistik yang bermakna. Korpus 1,25 miliar karakter berisi kira-kira 13.106 segmen berbentuk morfem yang berbeda di atas ambang batas frekuensi. Meminta 16.384 menghasilkan 13.106; 3.278 slot sisanya dipadatkan atau dibiarkan kosong.
Saturasi: titik di mana N yang diminta = N yang ditemukan. Di luar saturasi, tokenizer tidak dapat menemukan lebih banyak segmen tanpa mengencerkan kualitas (menurunkan ambang batas frekuensi & menerima noise).
Titik Manis di 8192
ANDREA-120M memilih N = 8192. Alasan:
- Di bawah 8192 (misalnya 4096): kosakata kurang menangkap morfem umum; urutan terpecah menjadi lebih banyak token; throughput menurun.
- Pada 8192: setiap slot segmen memetakan ke pola nyata, berulang dalam korpus.
- Di atas 8192: pengembalian menurun; 13.106 < 16.384 berarti slot terbuang sia-sia.
Kosa kata akhir ANDREA-120M: 256 + 8192 + 1 = 8449 token. Kompresi rata-rata: 5,91 byte UTF-8 per token, artinya setiap token menggantikan ~5,9 byte teks mentah. Rasio tersebut menetapkan konteks efektif model: pada 1024 token × 5,91 byte/token, ANDREA-120M membaca kira-kira 6.050 karakter konteks per forward pass.
Di Atas atau Di Bawah Saturasi
Dari Mana Asalnya 63.6%
Menghitung Slot yang Terbuang
Tokenizer ANDREA-12M dilatih pada megachat-v8.txt mentah (4096 segmen diminta, ditemukan). Sebuah tim mengambil sampel subset yang ditimbang berdasarkan kurikulum: korpus ditimbang berdasarkan seberapa sering setiap sumber ditarik oleh bandit. Mereka menjalankan ulang analisis Harris pada sampel tertimbang tersebut & bertanya: berapa banyak dari 4096 segmen asli yang masih muncul?
Hasil: 36.4% tumpang tindih. 1.491 dari 4.096 segmen cocok dengan penimbangan kurikulum. 2.605 segmen sisanya berasal dari sumber yang dikecualikan model.
63,6% dari slot kosakata dialokasikan untuk byte yang tidak pernah dilihat model.
Biaya Embedding
Setiap entri kosakata menempati satu baris dari matriks embedding berbentuk (V, d_model). Untuk ANDREA-12M:
- V = 4353 (256 + 4096 + 1)
- d_model = 384
- Parameter embedding = V × d_model = 4353 × 384 = 1.671.552 parameter
63,6% dari parameter tersebut tidak digunakan untuk pelatihan percakapan. 1.063.107 parameter dialokasikan, 0 sinyal reward. ANDREA-12M bertahan karena 256 byte dasar selalu mencakup karakter apa pun; tetapi kapasitas per parameter turun tajam.
Bagaimana ANDREA-120M Memperbaikinya
Tokenizer ANDREA-120M dilatih pada firehose lengkap (1,25 miliar karakter, 21 sumber) pada saturasi N = 8192. Korpus pelatihan = firehose yang sama. Penyelarasan diet: 100%. Hasil tumpang tindih pada sampel tertimbang chat: 36,5%. (Catatan: 36,5% adalah tumpang tindih, bukan cakupan; chat saja adalah subset dari firehose lengkap, sehingga angka ini berperilaku berbeda dari 36,4% milik 12M.)
Kompresi efektif: 5,91 byte UTF-8 per token. Matriks embedding ANDREA-120M: 8449 × 768 = 6.488.832 parameter. Setiap parameter mendapatkan sinyal reward karena setiap segmen memetakan ke teks yang benar-benar dilatih oleh model.
Cakupan Versus Tumpang Tindih
Mengapa 5,91 Bytes Per Token Penting
Rasio Kompresi
Rata-rata byte UTF-8 per token mengukur seberapa banyak teks mentah yang dikompresi setiap entri vocab. ANDREA-120M rata-rata 5,91. Model dengan potongan lebih pendek (3 byte/token) membaca lebih sedikit konteks per forward pass; model dengan potongan lebih panjang (8 byte/token) membaca lebih banyak tapi melatih lebih lambat (setiap potongan membutuhkan lebih banyak sampel untuk dipelajari dengan baik).
Konteks Efektif
| Kuantitas | Nilai |
|---|---|
| Jendela konteks token | 1.024 token |
| Rata-rata byte per token | 5,91 |
| Konteks karakter efektif | 1024 × 5,91 ≈ 6.050 |
Sekitar 6.000 karakter UTF-8 muat dalam satu forward pass ANDREA-120M. Sebuah halaman prosa Inggris padat berukuran ~3.000-4.000 karakter; ANDREA membaca sekitar satu setengah halaman per pass.
Diet Memperketat Kompresi
Tokenizer yang selaras dengan baik mengompresi lebih baik. Ketika tokenizer mempelajari segmen-segmen yang berulang dalam corpus pelatihan, lebih banyak teks muat per token. Tokenizer ANDREA-12M yang selaras buruk mengompresi lebih buruk pada chat (lebih banyak byte terbuang pada fragmen byte-fallback karena segmen chat lebih jarang di vocab). Tokenizer diet-aligned ANDREA-120M menjaga potongan berbentuk chat pada jalur cepat & skrip langka pada byte fallback.
Aktivitas 4 Berlanjut
Aktivitas 4 (grow_a_language_model_embeddings) membahas apa yang terjadi pada 8449 entri vocab tersebut: mereka menjadi baris matriks embedding berbentuk V × d_model, kemudian menambahkan position embeddings yang dipelajari sebelum mengalir ke blok transformer pertama.