Что такое токены, как с ними работает ИИ, и почему вам стоит это узнать

Если вы достаточно часто используете приложения искусственного интеллекта, такие как ChatGPT или другие инструменты LLM (большая языковая модель), вы в конечном итоге услышите такие термины, как токен и контекстное окно. Это бывает, например, когда вы вставляете большой объем текста в поле ввода подсказки и получаете сообщение об ошибке: превышено количество разрешенных токенов. Так, что такое токен?
Что такое токены, как с ними работает ИИ, и почему вам стоит это узнать
Так выглядит Большая языковая модель, с точки зрения DALLE-3
Когда мы говорим с ИИ, очень полезно узнать, как он нас «слышит» и «понимает».

Если вы достаточно часто используете приложения искусственного интеллекта, такие как ChatGPT или другие инструменты LLM (большая языковая модель), вы в конечном итоге услышите такие термины, как токен и контекстное окно. Так, что такое токен? Об этом рассказал эксперт по ИИ Дхармеш Шах

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Токен

Токен — это последовательность текстовых символов. Когда LLM (большие языковые модели) делают свое дело, они разбивают текст не на слова, а на токены. Токены — это почти слова (а также знаки препинания, пробелы и другие символы), но не совсем.

Для примера возьмем английский текст: «I don’t like flying». Вот как GPT разбивает это на токены:

Разбивка фразы на токены
Разбивка фразы на токены
https://platform.openai.com/tokenizer
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

(Можете поиграть с этим самостоятельно, используя утилиту токенизации OpenAI).

Если вы возьмете русскую фразу: «Я не люблю летать». Получится немного другая картинка.

Разбивка русской фразы на токены
Разбивка русской фразы на токены
https://platform.openai.com/tokenizer

В символах русская фраза короче, а токенов в ней — больше. То есть, токен – это почти слово, но не совсем. По статистике, на одну английскую фразу фразу длиной 75 слов приходится 100 токенов, а на русскую фразу той же длины — 120-150 токенов. Это существенно больше.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Почему бы не работать со словами, если токенов всегда больше, чем слов? LLM обычно работают с числовыми представлениями объектов (включая текст). Так гораздо эффективнее. Они преобразуется текст в вектор (ряд чисел). Для этого модели должны сопоставить слова с числами. Но присваивать каждому возможному слову собственный номер неэффективно (слишком много возможностей). Вы можете уменьшить количество возможных вещей, взяв части слов (или другие последовательности) и превратив их в токены. В английском примере слово don't превращается в don + 't (два токена).

Допустим, у нас есть четыре английских слова: can, can’t, don, don’t. Если мы будем рассматривать «t» как отдельный токен, нам понадобятся не четыре слова, а только три: can, don и «t»: 3 вместо 4, то есть при таком представлении мы сэкономим 25%. Вектор, с которым работает LLM, будет значительно короче.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Почему вас это должно волновать? Главным образом потому, что токены являются стандартной единицей измерения в LLM. Но еще и потому, что пределы контекстных окон обычно указываются в токенах.

Контекстное окно

Контекстное окно
Контекстное окно
https://simple.ai/p/tokens-and-context-windows

Контекстное окно — это то, что LLM использует для вводного промпта и вывода (сгенерированного текста). LLM обычно имеют ограничение, выраженное в токенах, относительно размера контекстного окна. Как правило, чем больше контекстное окно, тем лучше, поскольку LLM может обрабатывать больше «контекста» о работе, которую он пытается выполнить.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Если контекстное окно небольшое, например, одно предложение, мы не сможем задать LLM подробный контекст того, что нас интересует, и вывод тоже будет совсем коротким.

Различные модели поддерживают контекстные окна разного объема. В ноябре 2023 года, когда стартовал GPT-3, лимит составлял около 4 тысяч токенов. Потом окно постепенно расширялось. Сейчас Claude (от Anthropic) может поддерживать окно в 200 тысяч токенов. Как утверждается, последняя модель Gemini от Google сможет поддерживать миллион токенов.

Контекстные окна (и ограничения на их размер) важны, когда вы хотите «научить» LLM множеству вещей, которые специфичны для вашей ситуации и которые изначально не были частью исходных обучающих данных.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Предположим, что у вас было 100 000 электронных писем или документов. Вы бы хотели, чтобы LLM понимал и использовал эту информацию, когда вы задаете ему вопросы. Но это данные, которым LLM не обучался. Если контекстное окно достаточно велико, вы сможете использовать этот контент.

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

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

Впрочем, контекстные окна быстро растут, и, вероятно, в будущем «токенизация» разных языков перестанет играть существенную роль. Но пока это не так.