Как работает LLM: путь от вашего запроса до текста ответа

Когда вы отправляете модели фразу и получаете в ответ связный текст, кажется, что происходит что-то похожее на «понимание». На самом деле внутри работает строгая механика: текст режется на токены, токены превращаются в числа, числа проходят через десятки слоёв вычислений — и на выходе модель раз за разом предсказывает всего один следующий токен.
В этой статье мы:
разберём, как текст превращается в токены и числа;
посмотрим, что такое эмбеддинги и зачем они нужны;
узнаем, как работают слои и механизм attention;
проследим весь цикл генерации одного ответа;
разберёмся, что такое веса, параметры и checkpoint;
выясним, почему модели иногда «галлюцинируют».
А узнать больше можно в нашем видео:
Токенизация: как текст превращается в числа
Первый этап — токенизатор. Он разбивает входной текст на единицы, называемые токенами. Токеном может быть:
целое слово;
часть слова;
знак препинания;
фрагмент кода.
Например, фраза «Привет, мир!» разбивается на четыре токена: «Привет», запятая, «мир» и восклицательный знак.
Процесс происходит в два шага:
Файл merges определяет, как максимально мелко нарезать текст на части.
Каждая часть ищется в словаре (vocabulary) — таблице, где токену сопоставлен уникальный числовой идентификатор (ID).
На выходе токенизатора вместо строки текста получается последовательность чисел-адресов, пока ещё лишённых смысла.
Важно помнить:
другая формулировка запроса — это другая нарезка на токены, а значит, и другой вход для модели;
окно контекста и стоимость запроса считаются в токенах, а не в словах или страницах;
код обычно «весит» в токенах больше, чем обычный текст.
Эмбеддинги: от номеров к векторам
Токенизатор выдал числа-адреса, но сами по себе они не несут смысла. Следующий шаг — эмбеддинги: каждый ID заменяется вектором — длинным списком чисел (от сотен до тысяч значений), хранящимся в таблице эмбеддингов, которая является частью весов модели.
Эти числа задают положение токена в многомерном пространстве:
если бы измерений было всего два, положение токена можно было бы изобразить точкой на плоскости с координатами;
но измерений гораздо больше, и чем их больше, тем точнее модель может различать токены между собой, не «сваливая» их в одну кучу.
В результате на вход модели поступает не текст и даже не набор ID, а последовательность векторов — лента чисел, где каждому токену соответствует свій вектор в том порядке, в каком токены шли в тексте.
Слои и attention: как модель «понимает» контекст
Лента векторов проходит через архитектуру, которая называется трансформер и состоит из десятков однотипных слоёв.
Каждый слой:
принимает текущие векторы;
уточняет их представление;
передаёт дальше, следующему слою.
Так представление токенов становится всё «богаче»: учитывается и то, какие токены находятся рядом, и то, о чём идёт речь в тексте в целом.
Внутри слоёв работает механизм attention (внимание). На каждом шаге модель определяет, какие части уже написанного контекста сейчас важнее всего для предсказания.
Классический пример: во фразе «Мария открыла дверь, она…» модели нужно понять, что местоимение «она» относится именно к Марии, а не к какому-то другому объекту женского рода. Attention — это не эмоция и не аналог человеческого внимания, а механизм связности, отвечающий за корректную работу с местоимениями, ссылками и длинным диалогом.
Предсказание токена и цикл генерации
На выходе всех слоёв модель получает оценки для каждого токена своего словаря — насколько он подходит в качестве следующего. Дальше происходит следующее:
Из всех оценок выбирается один токен — иногда самый вероятный, иногда с элементом случайности (это регулируется параметром температуры);
чем выше температура, тем менее предсказуемым и более «творческим» получается результат;
выбранный токен добавляется к контексту;
цикл повторяется заново: снова слои, снова attention, снова оценки вероятностей, снова один токен.
Так, шаг за шагом, а не абзацами целиком, и собирается ответ модели.
Веса, параметры и checkpoint: чем именно считает модель
Если слои и attention — это то, как модель считает (алгоритм), то веса — это то, чем она считает.
Модель на практике состоит из двух частей:
сравнительно небольшой код, описывающий архитектуру (слои, attention, цикл предсказания);
файл весов — гигантский набор чисел, зачастую миллиардов значений.
Без файла весов код «знает» процедуру вычислений, но не имеет коэффициентов и выдаёт бессмысленный результат — как необученная модель.
Ключевые понятия:
Параметры — то же самое, что веса: матрицы и векторы внутри этой числовой массы, включая уже знакомую нам таблицу эмбеддингов;
Обучение — процесс множества корректировок этих параметров;
Checkpoint — сохранённый «снимок» весов на момент завершения обучения: параметры зафиксированы и больше не меняются, пока модель не дообучат заново.
Важное следствие: внутри весов нет отдельных «статей» или готовых кусков текста, которые модель могла бы просто вставить в ответ. Есть только статистические паттерны, размазанные по числам. Именно поэтому иногда правдоподобный по форме ответ расходится с фактами — так возникают галлюцинации.
От запроса к ответу: путь целиком
Соберём всю цепочку воедино:
Входной текст режется на токены;
каждый токен получает ID;
по ID из таблицы весов извлекаются векторы;
лента векторов подаётся на вход слоёв и attention;
модель получает распределение вероятностей по всему словарю и выбирает один токен;
токен добавляется в контекст, и цикл повторяется.
Когда генерация завершена, начинается обратный процесс — детокенизация. Тот же токенизатор и тот же словарь работают в обратную сторону:
каждый выбранный ID превращается обратно в текстовый фрагмент;
фрагменты склеиваются в читаемую строку — тот самый текст, который вы видите на экране.
Вплоть до последнего шага модель оперирует исключительно числами и векторами.
Заключение
Слова «понимание», «мнение» модели или «память чата» — удобные метафоры, но по сути за ними стоит один и тот же механизм: предсказание следующего токена на основе контекста, зашитое в алгоритм плюс огромный массив чисел — весов.
Стоит также разделять модель и продукт:
продукт — это чат, интерфейс, история диалога, инструменты, поиск — оболочка, которая окружает модель и делает работу с ней удобной;
модель — это «голая» LLM, генератор токенов: на входе контекст, на выходе — следующий токен, снова и снова.



Comments