Tokenizácia v AI
Tokenizácia je proces rozdelenia textu na menšie jednotky – tokeny – ktoré jazykový model dokáže spracovať. Je to prvý a jeden z najdôležitejších krokov v celom pipeline spracovania jazyka. Ako model „vidí" text, zásadne ovplyvňuje jeho schopnosti.
1. Čo je token
Token nie je slovo ani písmeno. Je to podslovo (subword) – úsek textu, ktorý tokenizátor považuje za základnú jednotku.
Príklad (GPT-4 tokenizátor):
"Programovanie je super" → ["Program", "ov", "anie", " je", " super"]
Anglické slová sú často 1 token, ale slovenské slová sa delia na viac:
- "the" → 1 token
- "programming" → 1 token
- "programovanie" → 3+ tokeny
- "najnepravdepodobnejší" → 5+ tokenov
Preto sú AI modely „drahšie" v slovenčine – ten istý obsah potrebuje viac tokenov.
2. Prečo nie celé slová?
Keby sme použili slovníkový prístup (1 slovo = 1 token), narazíme na problémy:
- Obrovský slovník – v slovenčine existujú milióny tvarov slov (skloňovanie, časovanie)
- Neznáme slová – nové slová, preklepy, technické výrazy by model nepoznal
- Neefektívnosť – väčšina slov sa vyskytuje zriedkavo
Subword tokenizácia rieši tieto problémy elegantným kompromisom: častým slovám priradí 1 token, zriedkavé slová rozloží na menšie časti.
3. Hlavné algoritmy tokenizácie
BPE (Byte Pair Encoding)
Najpoužívanejší algoritmus, používa ho GPT, Claude, Llama a väčšina moderných modelov.
Princíp:
- Začni s jednotlivými znakmi (bajtami)
- Nájdi najčastejší pár susedných tokenov
- Zlúč ich do nového tokenu
- Opakuj, kým nedosiahneš požadovanú veľkosť slovníka
Príklad postupu:
Vstup: "aaa bbb aaa bbb"
Iterácia 1: najčastejší pár "a"+"a" → "aa" → "aaa bbb aaa bbb"
Iterácia 2: najčastejší pár "aa"+"a" → "aaa" → "aaa bbb aaa bbb"
Iterácia 3: najčastejší pár "b"+"b" → "bb" → "aaa bbb aaa bbb"
...
WordPiece
Používa ho BERT a modely od Google. Podobný BPE, ale namiesto frekvencie párov maximalizuje pravdepodobnosť trénovacích dát.
Rozoznáte ho podľa prefixu ## pre pokračovacie tokeny:
"playing" → ["play", "##ing"]
SentencePiece / Unigram
- Pracuje priamo s raw textom (bez predspracovania)
- Unigram model začína s veľkým slovníkom a postupne ho zmenšuje
- Používajú ho T5, mT5, Llama, Gemma
4. Veľkosť slovníka
Veľkosť slovníka (vocabulary size) je kľúčový hyperparameter:
| Model | Veľkosť slovníka |
|---|---|
| GPT-2 | 50,257 |
| GPT-4 / GPT-5 | ~100,000 |
| Claude 3+ | ~100,000 |
| Llama 3 | 128,256 |
| Gemma 3 | 262,144 |
Väčší slovník:
- ✅ Menej tokenov na text (efektívnejšie)
- ✅ Lepšie pokrytie jazykov
- ❌ Väčšia embedding tabuľka (viac parametrov)
- ❌ Zriedkavé tokeny sa horšie naučia
5. Tokenizácia a jazyky
Tokenizácia nie je spravodlivá ku všetkým jazykom. Model trénovaný primárne na angličtine:
Angličtina:
"The cat sat on the mat" → 6 tokenov
Slovenčina:
"Mačka sedela na rohožke" → 8-10 tokenov
Japončina/Čínština:
"猫がマットの上に座った" → 12-15 tokenov
To znamená:
- Vyššie náklady za API volania v ne-anglických jazykoch
- Menší efektívny kontext – 128K tokenov ≠ 128K slov
- Potenciálne nižšia kvalita – menej trénovacích dát na token
Novšie modely (Gemma 3, Llama 3) tento problém riešia väčšími slovníkmi s lepším multijazykovým pokrytím.
6. Špeciálne tokeny
Okrem textových tokenov existujú aj špeciálne riadiace tokeny:
<|begin_of_text|>– začiatok vstupu<|end_of_text|>– koniec vstupu<|system|>– systémová správa<|user|>– správa od užívateľa<|assistant|>– odpoveď modelu[PAD]– výplňový token pre batching
Tieto tokeny sú neviditeľné pre užívateľa, ale kľúčové pre správne fungovanie modelu.
7. Problémy tokenizácie
Aritmetika a čísla
Tokenizátor rozdeľuje čísla nepredvídateľne:
"123456" → ["123", "456"] alebo ["12", "345", "6"]
To je jeden z dôvodov, prečo LLM modely zápasia s matematikou – nevidia čísla ako čísla, ale ako fragmenty textu.
Inverzia tokenov
Modely majú problém s úlohami, ktoré vyžadujú prácu na úrovni znakov:
- „Napíš slovo 'strawberry' pozpätku" – model nevidí jednotlivé písmená
- „Koľko 'r' je v slove 'strawberry'?" – závisí od tokenizácie
Prompt injection cez tokenizáciu
Niektoré útoky využívajú tokenizáciu – napr. rozdelenie zakázaného slova medzi tokeny tak, aby obišlo bezpečnostné filtre.
8. Praktické tipy
- Počítanie tokenov – Používajte nástroje ako tiktoken (OpenAI) alebo tokenizéry z Hugging Face na presný odhad nákladov
- Prompt optimalizácia – Kratší prompt = menej tokenov = nižšie náklady a rýchlejšia odpoveď
- Jazykový výber – Pre nákladovo citlivé aplikácie zvážte angličtinu (menej tokenov) s následným prekladom
- Kontext management – Sledujte tokenový rozpočet pri dlhých konverzáciách
# Príklad počítania tokenov (tiktoken)
import tiktoken
enc = tiktoken.encoding_for_model("gpt-4")
tokens = enc.encode("Ahoj, ako sa máš?")
print(f"Počet tokenov: {len(tokens)}") # ~7 tokenov
Zhrnutie
Tokenizácia je neviditeľný, ale zásadný komponent AI modelov. Ovplyvňuje cenu, kvalitu, rýchlosť a jazykovú spravodlivosť. Pochopenie toho, ako modely „vidia" text, vám pomôže písať lepšie prompty, efektívnejšie využívať API a lepšie chápať limitácie jazykových modelov.