ChatGPT, Gemini, dkk. Itu Nggak Baca Huruf, Tapi Token
ChatGPT, Gemini, dkk. Itu Nggak Baca Huruf, Tapi Token
Biaya, limit input, limit output, semua dihitung pakai token, bukan per kata. Makanya, menulis prompt yang rapi, padat, jelas itu bukan cuma enak dibaca. Tapi juga hemat token dan hemat biaya.
Ini topik yang kelihatannya teknis, tapi sebenernya cukup relate ke hal-hal receh kayak cara kita “mecah-mecah” kata pas lagi chatting.
LLM itu nggak baca huruf, tapi token
Pertama yang harus dipahami, LLM kayak ChatGPT, Gemini, Llama, dkk itu sebenernya nggak baca teks dalam bentuk huruf atau kata utuh. Mereka baca yang namanya token.
Token itu bisa berupa:
- satu kata utuh: kucing
- potongan kata: meng-, -kan
- satu karakter saja: a, !
- bahkan spasi di depan kata
Jadi, di balik layar, kalimat:
"Saya lapar banget."
bisa saja berubah jadi list token semacam:
["▁Saya", "▁lapar", "▁banget", "."]
LLM itu bekerja di level token ini.
Kenapa teks harus di-tokenize dulu?
Komputer itu sukanya angka, bukan huruf. Jadi alurnya kurang lebih begini:
- Teks mentah: "saya lagi belajar tokenization"
- Dipecah jadi token: ["▁saya", "▁lagi", "▁belajar", "▁token", "ization"]
- Setiap token punya ID angka di kamus (vocabulary), misal:
- "▁saya" → 12345
- "▁lagi" → 5678
- dan seterusnya
Deretan token ID inilah yang dimasukkan ke model:
[12345, 5678, 91011, 2222, 3333]
Baru setelah itu:
- LLM memproses angka-angka ini
- lalu memprediksi token berikutnya
- dan di akhir diubah lagi jadi teks yang bisa kita baca
Tokenization adalah jembatan antara:
Teks manusia ↔ angka yang dipahami model
Macam-macam gaya tokenization (subword)
Zaman dulu, NLP seringnya pakai dua pendekatan ekstrem:
- Character-level: pecah per huruf
- Kelebihan: bisa handle kata baru, typo, bahasa asing
- Kekurangan: sequence jadi panjang banget (boros, berat)
- Word-level: pecah per kata
- Kelebihan: lebih pendek, enak
- Kekurangan: kalau ketemu kata baru yang belum ada di kamus, bingung
LLM modern biasanya pakai pendekatan tengah-tengah yang disebut subword tokenization, misalnya:
- BPE (Byte Pair Encoding) dipakai di banyak model lama/awal GPT
- WordPiece dipakai di BERT dan teman-temannya
- SentencePiece / Unigram dipakai di banyak model bahasa lain, termasuk yang multibahasa
Intinya mereka memecah teks jadi potongan kata yang cukup fleksibel:
- kata umum bisa satu token
- kata aneh, panjang, atau gabungan, bisa dipecah jadi beberapa token
Contoh:
- "komputer" → ["▁komputer"] (1 token)
- "komputerisasi" → ["▁komputer", "isasi"] (2 token)
- "hypermegaundefined" → bisa jadi 4–5 token aneh
Token nggak selalu sama dengan kata
Ini sering bikin orang kaget. Misal dalam bahasa Indonesia / Inggris:
- "aku" mungkin 1 token
- "akuuuu" bisa 2–3 token tergantung tokenizer
- Emoji "😂" seringnya 1 token, tapi kadang emoji kompleks bisa jadi beberapa token
Jadi kalau ada info seperti:
“Model ini punya context window 8.000 token”
Itu bukan berarti:
- 8.000 kata
- apalagi 8.000 karakter
Bisa saja:
8.000 token ≈ 5.000–6.000 kata, tergantung bahasanya, jenis kata, banyaknya angka, simbol, dsb.
Makanya pas kita pakai LLM:
Biaya, limit input, limit output, semua dihitung pakai token, bukan per kata.
Proses tokenization di balik layar
Kurang lebih alurnya gini pas kita kirim prompt ke LLM:
Input dari user
Kita ngetik:"Tolong jelaskan tokenization LLM dengan contoh."
- Tokenizer bekerja
- Teks di-scan dari kiri ke kanan
- Dicocokkan dengan kamus token yang sudah dilatih sebelumnya
- Dicarikan potongan paling panjang yang cocok (greedy)
- Diubah jadi token ID
- Masuk ke model
- Deretan token ID ini masuk ke jaringan neural si LLM
- LLM memproses konteks: token sekarang, token sebelumnya, dan seterusnya
- Model memprediksi token berikutnya
- Model tidak memprediksi “huruf berikutnya”
- Dia memprediksi token berikutnya
- Jadi output awal model adalah deretan token ID juga
- Detokenization
- Token ID → token string → digabung jadi teks biasa
- Dari "▁token", "ization" jadi " tokenization" (ada spasi di awal, dll)
- Baru tampil ke user
Hubungan tokenization dengan biaya & performa
Kalau kita pakai API LLM, biasanya:
- Harga dihitung per 1.000 token
- Input + output sama-sama dihitung
Misalnya:
- Kamu kirim prompt 800 token
- Model jawab 700 token
- Total 1.500 token → dihitung ke billing
Dari sisi performa, semakin banyak token:
- Semakin berat dan lama komputasinya
- Karena banyak arsitektur LLM skalanya kira-kira O(n²) terhadap panjang sequence (meski sekarang banyak trik efisiensi baru)
Makanya, kalau menulis prompt yang rapi, padat, jelas itu bukan cuma enak dibaca, tapi juga hemat token dan hemat biaya.
Hal-hal kecil yang sering bikin kaget soal token
Beberapa hal “remeh” tapi penting:
Spasi itu token
Di banyak tokenizer, spasi sebelum kata itu nempel di tokennya.
Contoh:" saya" beda dengan "saya" (di awal kalimat)
- Angka & format khusus
Deretan angka panjang (202512311234) bisa dipecah jadi beberapa token, bukan satu. Emoji dan simbol aneh
Kadang emoji kompleks, skin tone, atau kombinasi flag bisa jadi lebih dari satu token.
Singkatnya
Kalau diringkas:
Tokenization adalah proses mengubah teks mentah menjadi potongan-potongan kecil (token) yang masing-masing punya ID angka, supaya LLM bisa memprosesnya.
Tanpa tokenization:
- Model nggak punya cara praktis untuk “mengerti” teks
- Nggak ada jembatan antara dunia huruf dan dunia angka
Dengan tokenization:
- Teks jadi struktur yang bisa dicerna
- Biaya dan performa bisa diatur
- Model bisa dilatih secara efisien di berbagai bahasa dan format
Komentar (0)
Tinggalkan Komentar
Belum ada komentar. Jadilah yang pertama berkomentar!