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:

  1. Začni s jednotlivými znakmi (bajtami)
  2. Nájdi najčastejší pár susedných tokenov
  3. Zlúč ich do nového tokenu
  4. 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.