BPE, SentencePiece и tiktoken: чем различаются токенизаторы

Автоматический перевод

Эта статья была автоматически переведена с оригинальной английской версии.

BPE — это алгоритм токенизации. SentencePiece и tiktoken — реализации с разными правилами обучения, предобработки и построения словаря. SentencePiece поддерживает модели BPE и униграммные модели; tiktoken использует кодировки BPE на уровне байтов. Их идентификаторы токенов не взаимозаменяемы.

При оценке использования контекста или обработке текста инженерам нужно использовать токенизатор и шаблон промпта, соответствующие конкретному чекпоинту или модели API.

Отделяйте алгоритм от реализации

Byte Pair Encoding обучается последовательным слияниям соседних символов. BPE на уровне символов начинает с символов; байтовые варианты начинают с байтов. Выученные слияния и словарь определяют, как разбивается строка. Привычное слово может быть одним токеном в одном словаре и несколькими в другом.

НазваниеЧто оно определяетЧто по-прежнему зависит от модели
BPEАлгоритм на основе слиянийИсходные символы, предобработка, слияния, словарь
SentencePieceРеализация токенизатора для необработанного текста с поддержкой BPE и униграммных моделейТип модели, нормализация, словарь, представление неизвестных символов байтами
tiktokenРеализация кодировок BPE на уровне байтовКодировка, словарь, правила специальных токенов

SentencePiece обрабатывает необработанный текст Unicode и представляет пробельные символы маркером ▁. Представление неизвестных символов байтами — опциональная возможность. tiktoken предоставляет именованные кодировки и обработку на уровне байтов.

Семейства токенизаторов могут меняться даже внутри одной марки моделей. Документация Mistral отличает ранние токенизаторы SentencePiece от Tekken, который использует BPE в стиле tiktoken. Загружайте токенизатор чекпоинта, а не определяйте его по марке модели.

Измеряйте репрезентативный текст

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

Для сравнения токенизаторов на фиксированной выборке задайте единицу измерения, например слова или символы, и разделите количество токенов на количество этих единиц. Не меняйте нормализацию и выборку. «Слова», разделённые пробельными символами, не во всех языках являются сопоставимой лингвистической единицей, поэтому укажите правило измерения.

Сам по себе размер словаря не доказывает эффективность токенизации при сравнении разных обучающих корпусов. Подсчёт токенизатором другой модели также не доказывает, что ваш запрос укладывается в лимит контекста выбранной модели.

Руководство по инжинирингу: токенизация приводит примеры словарей и объясняет фертильность токенизатора.