токенизация
Разбивка текста на токены — числовые идентификаторы, понятные языковой модели.
Что такое токенизация
Токенизация — процесс преобразования текстовой строки в последовательность числовых идентификаторов (токенов), которые подаются на вход языковой модели. Каждая модель имеет собственный словарь (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|>
Связанные термины
- токен — единица токенизации
- токенизатор — реализация токенизации
- BPE — алгоритм токенизации
- контекстное окно — измеряется в токенах
Готовы запустить GPU-задачу?
Запустить GPU-сервер