Что такое токены в нейросети и зачем они нужны?

Токены – это фрагменты, на которые языковая модель делит входной и создаваемый текст. Токеном может быть слово, часть слова, знак препинания или пробел вместе с соседними символами. Модель видит не буквы напрямую, а последовательность номеров токенов, поэтому их количество определяет объём контекста и вычислений.

Почему нельзя считать только слова

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

Частые слова могут иметь отдельный токен, а редкие разбиваются на несколько частей. Окончание, корень или сочетание символов не обязаны совпадать с морфемами из школьного разбора. Границы определяет статистический алгоритм, обученный на корпусе текстов.

Поэтому одинаковое число слов на разных языках даёт разное число токенов. Даже два токенизатора для одного языка могут разделить фразу по-разному.

Что происходит после разделения

Каждому токену соответствует номер в словаре. Затем модель заменяет номер вектором – набором чисел, пригодным для вычислений. К нему добавляется информация о положении токена в последовательности.

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

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

Как токены связаны с контекстом

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

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

Можно ли заранее узнать количество

Точное число даёт токенизатор конкретной модели. Приблизительные правила вроде «один токен равен нескольким символам» удобны только для грубой оценки. Код, таблица, текст с редкими именами и обычная проза одного размера могут различаться по числу токенов.

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

Токен – не единица смысла и не отдельная мысль. Это технический фрагмент представления текста. Однако именно из таких фрагментов модель собирает контекст, выбирает продолжение и формирует ответ, который человек снова видит как слова и предложения.

Почему токен не равен слову

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

Токенизатор должен совпадать с моделью. Идентификатор, означающий часть слова в одном словаре, в другом соответствует иному фрагменту. Это одна из причин, почему файл весов нельзя произвольно подключить к любой программе.

Как токены связаны с ценой и скоростью

Облачные API часто учитывают отдельно входные и выходные токены. Длинная история чата повторно передаётся с новым вопросом и увеличивает стоимость. Генерация ответа идёт последовательно, поэтому большое продолжение занимает больше времени.

Сокращать следует не полезные условия, а шум: дубли, старые черновики и ненужные логи. Как отбирать материал для окна, объясняет статья о том, что такое контекст.

Что происходит на каждом шаге ответа

Модель вычисляет вероятности следующего токена. Правила выбора определяют, всегда ли брать самый вероятный вариант или допускать разнообразие. Выбранный элемент добавляется к последовательности, после чего расчёт повторяется. Так по частям возникает предложение.

Остановка тоже задаётся токеном либо внешним лимитом. Если предел достигнут посреди мысли, модель не «решила» закончить, а просто лишилась возможности продолжать. Для структурированного ответа нужно оставлять достаточный запас.

Можно ли посчитать токены заранее

Точный результат даёт токенизатор конкретной модели. Оценка по символам годится лишь для грубого планирования. Файл с множеством чисел, эмодзи или редких терминов способен заметно отклониться от средней пропорции.

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

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

Запас для ответа рассчитывают заранее, иначе структурированный результат оборвётся до закрывающих полей.

Это особенно важно для программного обмена данными.