ML Fundamentals

токенизация

Разбивка текста на токены — числовые идентификаторы, понятные языковой модели.

Что такое токенизация

Токенизация — процесс преобразования текстовой строки в последовательность числовых идентификаторов (токенов), которые подаются на вход языковой модели. Каждая модель имеет собственный словарь (vocabulary) и алгоритм токенизации, реализованный в токенизаторе.

"Hello, world!" → [15496, 11, 995, 0]  // GPT-2 токенизация

Уровни токенизации

Символьная: каждый символ — токен. Словарь маленький (~100–300), последовательности длинные.

Субсловная (BPE, WordPiece, SentencePiece): баланс между символами и словами. Стандарт для LLM.

Словарная: каждое слово — токен. Большой словарь, проблемы с OOV (out-of-vocabulary) словами.

Как токенизируются разные языки

Английские слова обычно занимают 1–2 токена, русские — 2–5 токенов из-за кириллицы и богатой морфологии:

# GPT-4 (cl100k_base)
enc.encode("transformer")  → 1 токен: [8100]
enc.encode("трансформер")  → 5 токенов: [83, 17005, 4375, 3720, 80]

Это влияет на стоимость API-запросов и эффективное использование контекстного окна.

Специальные токены

Большинство моделей добавляют специальные токены для управления поведением:

  • <|begin_of_text|> — начало последовательности (Llama 3)
  • <|eot_id|> — конец сообщения
  • <|user|>, <|assistant|> — роли в chat template
  • <unk> — unknown token
  • <pad> — padding

Chat template

Формат форматирования диалога для instruction-tuned моделей:

<|begin_of_text|><|start_header_id|>system<|end_header_id|>
You are a helpful assistant.<|eot_id|>
<|start_header_id|>user<|end_header_id|>
What is GQA?<|eot_id|>
<|start_header_id|>assistant<|end_header_id|>

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер