Суть
Модель не видит «буквы» или «слова» напрямую — она видит токены из фиксированного словаря. Каждый шаг генерации — это выбор следующего токена из распределения вероятностей по всему словарю (см. Sampling Parameters).
Зачем это нужно
Два наивных подхода плохи:
- По символам — последовательности слишком длинные, моделям тяжело, и в один символ не заложить смысл.
- По словам — словарь взрывается (слов слишком много), а распределение вероятностей ограничено размером словаря.
BPE — компромисс: токены получаются осмысленными (часто это слова, приставки, суффиксы, корни) и при этом словарь компактный.
Как работает
- Старт с символов; алгоритм берёт пары (2 символа), затем тройки и т.д., каждый раз добавляя в словарь самую частотную комбинацию из корпуса.
- Процесс идёт, пока не достигнут целевой размер словаря (в материале — пример 100 000).
- Один токен ≠ одно слово: короткое предложение может стать 3 токенами, длинное слово — несколькими.
- Размер словаря напрямую влияет на то, из скольких вариантов модель выбирает следующий токен.
- Алгоритмы: BPE (GPT, Claude, Llama), WordPiece (BERT), SentencePiece (современный вариант). У каждой модели свой токенизатор и словарь — они идут в комплекте и не взаимозаменяемы (словарь обычно в
tokenizer.json). - Спец-токены (пример из BERT):
[CLS](начало),[SEP](разделитель),[MASK](маска),[PAD](выравнивание),[UNK](неизвестное). - Размеры словарей: BERT-base 30 522, GPT-2 50 257, GPT-3/4 ~100 000, Llama 3 128 000.
- Русский «дороже» по токенам: BPE строит словарь из самых частотных сегментов преимущественно англоязычного корпуса → английские слова часто = 1 токен, а кириллица дробится на более мелкие куски. Tip: технические/system-инструкции иногда выгоднее держать на английском (экономия ~30% токенов), а ответ просить на русском. Но это не догма — качество и требования к ответу важнее экономии; доменно-важный русский контент не переводят насильно ради токенов.
- Цифры fertility (кириллица, прокси): по исследованию токенизации для украинского/кириллицы — кириллический текст даёт
1.88 ток/слово (Llama 3.1) … 3.32–3.45 (GPT-3.5/4, Claude 3); в узких доменах (законы/наука) до **4.4**; словари ≥100k токенов устойчивее. Это прокси для RU (данные на украинском/кириллице), не прямой RU-бенчмарк размера чанка. - Проверка стоимости на практике: расход токенов проверяют через tokenizer / usage в ответе API / budget-трекер; локальная оценка через tiktoken и аналоги — отдельная hands-on задача (см. открытый вопрос).
Пример
"мама мыла раму" → ["мама", " мыла", " раму"] # 3 токена
"токенизация" → ["токен", "из", "ация"] # дробится на части
Связано с
- Embeddings — каждый токен дальше превращается в вектор
- Transformer — токены-векторы подаются в архитектуру
- Context Window — окно меряется именно в токенах, биллинг тоже
Открытые вопросы
- как считать токены своего текста до запроса (tiktoken и аналоги)