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

un

tamu
1 / ?
kembali ke pelajaran

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.


Diet tokenizer & saturasi


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

Jelaskan aturan diet tokenizer dalam satu kalimat. Kemudian gambarkan kasus terburuk: seorang peneliti melatih tokenizer Harris pada Wikipedia (prosa formal, kutipan) tetapi melatih model pada Twitter (slang, emoji, hashtag). Apa yang salah?

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 DimintaSegmen Aktual DitemukanStatus
2.0482.048Tidak Jenuh (masih ada ruang untuk berkembang)
4.0964.096Tidak Jenuh
8.1928.192Titik jenuh
16.38413.106Korpus 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

Misalkan seorang peneliti mempertimbangkan dua nilai N untuk model ANDREA masa depan: N = 6144 (di bawah saturasi) versus N = 12288 (di atas saturasi, di mana segmen yang ditemukan sebenarnya = 13106 masih berlaku karena korpus tetap). Untuk masing-masing: (a) hitung ukuran kosa kata akhir (256 + N + 1), & (b) nyatakan dalam satu frasa apakah setiap pengaturan membuang kapasitas kosa kata, menangkap semua sinyal yang tersedia, atau kurang menangkap. Tunjukkan pekerjaan Anda.

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

Tokenizer korpus ANDREA-120M cocok dengan korpus pelatihannya. Namun, 'segment coverage on chat-weighted sample' masih mencapai 36,5%, mirip dengan 36,4% milik 12M. Mengapa 36,5% bukan masalah untuk 120M padahal 36,4% adalah masalah untuk 12M? Gunakan frasa tentang subset mana yang mana.

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


KuantitasNilai
Jendela konteks token1.024 token
Rata-rata byte per token5,91
Konteks karakter efektif1024 × 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.

Pilih sebuah N

Renungkan sebuah tradeoff: haruskah model ANDREA masa depan menggunakan N = 4096 (pelatihan lebih cepat, lebih banyak bytes-per-token = konteks efektif lebih panjang) atau N = 16384 (segmen lebih panjang-tapi-lebih jarang, lebih sedikit token per potong teks, tapi melewati saturasi sehingga slot terbuang)? Pilih satu & berikan alasan satu kalimat. Tidak ada jawaban salah.