Токен — это минимальная единица текста, с которой реально работает языковая модель. Когда вы отправляете запрос модели вроде GPT, Claude или Llama, ваш текст сначала разбивается на последовательность токенов — как правило, целых слов, распространённых подслов или отдельных символов, — а затем каждый токен преобразуется в число, которое модель способна обработать. Модель генерирует ответ тем же способом, предсказывая и выдавая по одному токену за раз, пока не решит остановиться.
Как работают токены
Токены создаются токенизатором — отдельной программой, которая находится между вашим текстом и моделью. Наиболее распространённые схемы — это byte-pair encoding (BPE) и WordPiece: они начинают с отдельных символов и многократно объединяют самые частые соседние пары в более длинные единицы. В результате получается фиксированный словарь — обычно от 30 000 до 200 000 записей, — который сочетает короткие частые слова с многократно используемыми подсловами. Частое слово вроде the обычно превращается в один токен, а редкое или выдуманное слово вроде unbelievableness разбивается на несколько: un, believ, able, ness.
Поскольку средняя длина английского слова — около четырёх символов, грубое эмпирическое правило таково: 100 токенов ≈ 75 английских слов, хотя эта цифра зависит от токенизатора и языка. Стоимость, ограничения контекста и скорость генерации измеряются в токенах, а не в словах или символах. Модель с контекстным окном в 200 000 токенов может вместить в одном запросе примерно длинный роман плюс несколько научных статей.
Почему это важно
Токены определяют три вещи, важные для каждого пользователя: стоимость, объём и поведение. Поставщики API взимают плату за миллион токенов, поэтому запрос, который токенизируется неэффективно, обходится дороже, чем следовало бы. Контекстные окна — максимальный объём текста, который модель может учитывать одновременно — измеряются в токенах, и именно поэтому очень длинные документы необходимо разбивать на части перед подачей. Поведение тоже зависит: если токенизатор разбивает слово иначе, это может изменить рассуждения модели о нём, а некоторые языки разбиваются на значительно больше токенов на слово, чем английский, что увеличивает расходы и сокращает эффективный контекст для пользователей, говорящих не на английском.
Ключевые понятия о токенах
- Токенизация: алгоритм, который разбивает текст на токены, обычно с помощью BPE, WordPiece или Unigram.
- Словарь: фиксированный список токенов, известных модели, с уникальным числовым идентификатором для каждой записи.
- Специальные токены: зарезервированные символы, такие как
<BOS>,<EOS>и маркеры заполнения, которые обозначают границы и структуру, а не содержание. - Контекстное окно: максимальное количество токенов, которое модель может обработать в одном запросе, включая вход и сгенерированный ответ.
- Лимиты токенов: жёсткие ограничения, устанавливаемые поставщиками на количество токенов в запросе, часто разделённые на лимиты входа и выхода.
Для более глубокого погружения в byte-pair encoding практической отправной точкой будет разбор minbpe от Андрея Карпатого, а оригинальная статья Neural Machine Translation of Rare Words with Subword Units представила подход, на котором до сих пор строятся большинство современных токенизаторов.