Диагностика Mock-интервью
Главная · Языковые модели: от n-грамм до трансформера

Токенизация и BPE

Модель не видит ни букв, ни слов — она видит номера токенов. Как текст превращается в эти номера, решает токенизатор, и от него зависят цена запроса, эффективная длина контекста и даже способность модели посчитать буквы в слове «strawberry».

Интуиция

Нейросеть ест числа, поэтому текст надо порезать на единицы из конечного словаря и заменить их индексами. Два наивных варианта плохи с разных сторон:

Золотая середина — подслова (subwords): частые слова остаются целыми токенами, редкие собираются из кусков. Самый популярный способ построить такой словарь — BPE (byte pair encoding), алгоритм, пришедший из сжатия данных 1994 года.

Как работает BPE

Обучение токенизатора — жадный цикл из трёх строк:

# старт: разбить корпус на символы
while len(vocab) < target_size:
    pair = самая_частая_пара_соседних_токенов(корпус)
    слить pair в новый токен, дописать мердж в список

Итоговый словарь = стартовый алфавит + все выученные слияния (мерджи, merges). Размер словаря — гиперпараметр: у современных LLM обычно 50–200 тысяч токенов. Новое слово токенизируется детерминированно: разбиваем на символы и применяем мерджи в том порядке, в котором они были выучены. Слово, которого не было в корпусе, просто останется разбитым на более мелкие куски — вплоть до отдельных символов.

💡 Ключевая мысль BPE — это жадное сжатие: частое становится одним токеном, редкое собирается из кусочков. Поэтому «the» — один токен, а редкое слово — пять.

В интерактиве ниже — игрушечный корпус из шести слов с частотами. Прогоните BPE по шагам: смотрите, какая пара побеждает, как растёт словарь мерджей и как перекраивается токенизация нового слова, которого в корпусе не было.

Семейство токенизаторов

Практические следствия

Токенизация — не техническая мелочь, а источник вполне ощутимых эффектов:

⚠️ Подводный камень Токенизатор фиксируется до обучения и «прирастает» к модели: id токенов зашиты в эмбеддинг-матрицу и выходной слой. Поменять токенизатор у готовой LLM нельзя без переобучения. А артефакты словаря живут в модели годами — как легендарный токен «SolidGoldMagikarp», на котором ранние GPT вели себя непредсказуемо.
🎤 На собеседовании
  • «Почему подслова, а не слова или символы?» — словарь конечен, OOV исчезает, последовательности умеренной длины: компромисс между двумя крайностями.
  • «Как BPE токенизирует слово, которого не было в корпусе?» — разбивает на символы и применяет выученные мерджи по порядку; в худшем случае слово остаётся набором символов/байтов.
  • «Почему LLM ошибается, считая буквы в слове?» — слово для неё один-два токена, отдельные буквы не видны без явного разбиения.
  • «На что влияет размер словаря?» — длина последовательностей против размера эмбеддинг-матрицы и качества редких токенов.