minbpe: регулярное разбиение и специальные токены

Урок 15 из 16 курса «Нейросети с нуля: по открытому коду Андрея Карпати»: неофициальный курс AI University по открытому коду (MIT). Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

В прошлом уроке вы собрали BasicTokenizer: он учит BPE на сырых байтах текста, без оглядки на то, где кончается одно слово и начинается другое. Этого достаточно, чтобы понять механику алгоритма, но для токенизатора, которым реально пользуются GPT-2 и GPT-4, этого мало. В этом уроке вы разберёте, как регулярное выражение предварительно режет текст на куски до обучения BPE, как это решает проблему «размноженных» токенов вроде dog. и dog!, как устроены специальные токены и зачем они нужны для безопасности промптов, и наконец как minbpe восстанавливает слияния токенизатора GPT-4 из данных библиотеки tiktoken. После урока вы сможете обучить собственный regex-токенизатор на смеси языков, добавить в него специальный токен и сверить его поведение с официальным tiktoken.

Неофициальный курс AI University по открытому коду (MIT). В уроке приводится код из karpathy/minbpe © Andrej Karpathy, лицензия MIT; комментарии переведены на русский, объяснения написаны нашей командой. Курс не связан с автором кода и не одобрен им.

Представьте, что в обучающем тексте встречаются фразы «хороший пёс.», «хороший пёс!» и «хороший пёс,». Наивный байтовый BPE не знает, что точка, восклицательный знак и запятая это разные с точки зрения смысла символы, не связанные со словом «пёс». Если пара байтов пёс. встречается в тексте достаточно часто, алгоритм сольёт её в отдельный токен, и у вас появится токен «pёс.», отдельно от токена «pёс!» и отдельно от «pёс» перед пробелом. Модель будет вынуждена учить, что эти токены означают почти одно и то же, вместо того чтобы один раз выучить представление слова «пёс» и отдельно обработать знак препинания.

Та же проблема возникает с числами: токен «100» и токен «100.» это разные последовательности байтов, и BPE, ничего не зная о границах, слепо сливает то, что чаще встречается рядом в обучающих данных. В результате словарь раздувается токенами-дублями, а модель хуже обобщает арифметику и работу с пунктуацией.

Решение, которое используют токенизаторы GPT, простое и элегантное: прежде чем…

План урока

  1. Проблема наивного BPE: слова, пунктуация и границы
  2. Шаблоны GPT2_SPLIT_PATTERN и GPT4_SPLIT_PATTERN
  3. RegexTokenizer: обучение с учётом кусков
  4. Специальные токены и безопасность промптов
  5. GPT4Tokenizer: совместимость с tiktoken
  6. Практические следствия токенизации
  7. Попробуйте сами
  8. Итоги

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Полезные гиды