раздел 01
Что такое токен
Что это
Токен - это кусок текста, которым оперирует модель. Не буква и не слово, а что-то посередине. Часто это слово целиком, иногда часть слова, иногда пробел с приставкой, иногда знак препинания. Модель не видит текст как строку символов - перед обработкой текст разбивается на токены, и дальше она работает только с ними.
Процесс разбиения называется токенизацией. Им занимается отдельная штука - токенизатор. У каждой модели свой токенизатор, поэтому одно и то же предложение у разных моделей может дать разное число токенов.
Зачем так, а не словами или буквами
Почему бы не считать словами? Слов слишком много, и постоянно появляются новые: имена, опечатки, термины, ссылки. Словарь из всех возможных слов был бы огромным и всё равно неполным.
Почему не буквами? Букв мало, словарь крошечный, но тогда даже короткое предложение - это сотни единиц, и модель работает медленно и плохо улавливает смысл.
Токены - компромисс. Частые слова кодируются одним токеном, редкие и длинные разбиваются на куски. Словарь получается управляемого размера (обычно десятки-сотни тысяч токенов), а текст - не слишком длинным.
Как это выглядит
Английское слово unbelievable токенизатор может разбить, например, на un, belie, vable - три токена вместо одного слова. А частое слово the - это один токен, обычно вместе с ведущим пробелом.
Знаки препинания, переносы строк, пробелы - всё это тоже токены. Поэтому форматирование (много отступов, разметка, повторяющиеся символы) тоже стоит токенов, хоть вы об этом и не думаете.
Пример
Фраза I love AI на английском - это примерно 3 токена: I, love, AI. А вот её русский перевод Я люблю ИИ тот же тип токенизатора может разбить на 5-7 токенов, потому что русские слова чаще режутся на куски. Подробнее с числами - на следующей странице.
Антипаттерны
- Считать токены равными словам. Иногда токен = слово, иногда слово = три токена. Это разные единицы.
- Думать, что пробелы и переносы строк бесплатны. Они тоже токены.
- Переносить оценку с одного языка на другой. Русский, китайский, код - токенизируются по-разному, число токенов прыгает.