• Русский
  • Что делает LLM

    Большая языковая модель (LLM, large language model) умеет ровно одно: по данному тексту предсказывать, что будет дальше. Не весь ответ и не предложение целиком, а один маленький кусочек текста — токен.

    Всё остальное — беседа, написание кода, «рассуждения» — получается, если повторять это одно предсказание в цикле.

    Рисунок 1.1 · Цикл генерации
    Кот·сел·на
    1. Чтение
    2. Слои
    3. Оценки
    4. Выбор
    5. Запись
    1/25

    Модель видит 3 токена. Буквы она не видит — только эти кусочки (в виде чисел).

    Нажмите «пуск». На каждом круге модель читает весь текст, оценивает каждый токен своего словаря (фиксированного списка всех известных ей токенов), выбирает один и дописывает его. Затем всё начинается заново — с чуть более длинным текстом.

    Цикл в пяти шагах

    1. Токенизация. Текст режется на токены — кусочки, которые часто совпадают с целыми словами (·кот, где · обозначает пробел перед словом), иногда с частями слов (аторы), — и каждый кусочек превращается в число. Как именно — в главе 2.
    2. Эмбеддинг. Каждое число заменяется длинным списком чисел — вектором, который модель выучила для этого токена. Глава 3.
    3. Преобразование. Векторы проходят через десятки блоков трансформера, устроенных одинаково, но у каждого свои выученные числа. Внутри них механизм внимания позволяет каждому токену собрать информацию с токенов перед ним. Главы 5 и 6.
    4. Оценка. Последний вектор сравнивается с выученным вектором каждого токена словаря (через скалярное произведение), и для каждого получается оценка — логит. Softmax превращает оценки в вероятности, которые в сумме дают 1 (как именно — чуть ниже).
    5. Выбор. Из этого распределения вытягивается один токен, дописывается к тексту, и цикл повторяется. Как на выбор влияет температура — в главе 9.

    От оценок к вероятностям: softmax

    На выходе модель даёт по одной оценке на каждый токен словаря. Эти оценки называются логитами и могут быть любыми числами: положительными, отрицательными, большими, маленькими. Чтобы выбрать токен, нужны вероятности: числа от 0 до 1, которые в сумме дают 1. Softmax — стандартный способ превратить одно в другое, и в этом учебнике он встретится ещё много раз.

    Он состоит из двух шагов:

    1. Возвести в экспоненту каждую оценку, то есть вычислить eze^{z} (где e≈2,718e \approx 2{,}718). Все результаты становятся положительными, а разница растягивается: оценка всего на 1 больше даёт число примерно в 2,7 раза больше.
    2. Нормировать: разделить каждый результат на сумму всех, чтобы вместе они давали 1.
    softmax(z)i=ezi∑jezj\text{softmax}(z)_i = \frac{e^{z_i}}{\sum_j e^{z_j}}

    Например, возьмём три оценки: 2, 1 и 0. Экспоненты дают e2≈7,39e^2 \approx 7{,}39, e1≈2,72e^1 \approx 2{,}72 и e0=1e^0 = 1, в сумме около 11,11. Делим на эту сумму и получаем вероятности примерно 0,67, 0,24 и 0,09.

    Рисунок 1.2 · Softmax шаг за шагом
    токеноценка z (логит)eᶻвероятность
    ·ковёр3,020,156,8%
    ·диван2,18,1723,1%
    ·пол1,75,4715,5%
    ·стул0,51,654,7%

    сумма eᶻ = 35,37каждая вероятность = eᶻ ÷ эта сумма

    Двигайте оценку и смотрите, как меняются её eᶻ и все вероятности. «+1 ко всем оценкам» оставляет вероятности ровно такими же; «Удвоить разрывы» отдаёт лидеру гораздо больше.

    Что стоит запомнить про softmax:

    • Порядок сохраняется. Большая оценка всегда даёт большую вероятность, и ни один токен не получает ровно ноль.
    • Важны только разницы. Если прибавить одно и то же число ко всем оценкам, ничего не изменится: общий множитель сокращается при делении.
    • Разрывы усиливаются. Чем больше разница между оценками, тем больше вероятности уходит лидеру. Поэтому внимание делит свои оценки на d\sqrt{d} (глава 5), и именно этим управляет температура при сэмплировании — случайном выборе следующего токена (глава 9).
    • Это «мягкий» максимум. Жёсткий максимум отдал бы лидеру 100%, а остальным 0%. Softmax даёт лидеру самую большую долю и немного оставляет остальным — поэтому при обучении можно чуть-чуть подвинуть каждую оценку (глава 7).

    То же самое формулой

    Если текст на данный момент — это токены x1,…,xtx_1, \dots, x_t, модель вычисляет вероятность каждого возможного следующего токена:

    P(xt+1∣x1,…,xt)P(x_{t+1} \mid x_1, \dots, x_t)

    Читается это так: «вероятность того, что следующий токен — xt+1x_{t+1}, при условии (∣\mid) всех токенов до него». Вероятность целого предложения — произведение таких вероятностей «следующего токена»:

    P(Кот сел на)=P(Кот)⋅P(сел∣Кот)⋅P(на∣Кот сел)\begin{aligned} P(\text{Кот сел на}) = {} & P(\text{Кот}) \\ {} \cdot {} & P(\text{сел} \mid \text{Кот}) \\ {} \cdot {} & P(\text{на} \mid \text{Кот сел}) \end{aligned}

    Генерация проходит ту же цепочку вперёд: вытянуть один токен, дописать его и учитывать при следующем выборе. Модель, у которой каждый выход становится частью следующего входа, называют авторегрессионной.

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

    У «текста на данный момент» есть жёсткий предел — контекстное окно, максимальное число токенов, которое модель может охватить за один проход. В английском тексте токен — в среднем около четырёх символов, так что 1000 токенов — это примерно 750 слов; большинству других языков, в том числе русскому, на тот же текст нужно больше токенов (глава 2). Всё, что модель знает о вашем разговоре, должно в него поместиться: системные инструкции, все прошлые сообщения, вставленные документы и её собственные ответы. То, что не поместилось, для модели просто не существует — другой памяти о беседе у неё нет.

    Рисунок 1.3 · Что не поместилось, то забыто
    системаТыполезныйассистент.
    пользовательМенязовутАда.ЯживувЛиссабоне.
    ассистентПриятнопознакомиться,Ада!Чемпомочь?
    пользовательПосоветуйкаферядомсомной.
    ассистентЗаглянивкондитерскуювАлфаме,тамотличныепаштел-де-ната.
    пользовательКакменязовут?

    Имя «Ада» внутри окна: модель может ответить.

    Уменьшите окно. Первыми выпадают самые старые токены, и как только из окна уходят все упоминания имени, ответить на последний вопрос модели уже нечем. (Здесь одно слово считается за один токен; настоящие токены немного мельче.)

    Окна росли быстро: GPT-2 (2019) видела 1024 токена, GPT-3 — 2048, первая GPT-4 — 8192 или 32 768, а современные модели работают со 128 000 токенов и больше миллиона. Но большое окно не бесплатно: стоимость внимания растёт как квадрат длины, а середину длинного контекста модели часто используют хуже, чем его начало и конец. Об этом — глава 12, а о том, как не платить дважды за один и тот же длинный промпт (текст, который отправляют модели), — глава 11.

    Где живут знания

    Знания модели хранятся в её параметрах — миллиардах чисел, сложенных в весовые матрицы (прямоугольные таблицы чисел). У небольших открытых моделей, чьи веса может скачать любой, их от одного до нескольких миллиардов, у передовых — самых больших и сильных на сегодня — сотни миллиардов и больше. Никто не подбирает эти числа вручную: они начинаются случайными и триллионы раз понемногу сдвигаются к значениям, при которых предсказания следующего токена становятся лучше. Это и называется обучением — оно показано в главах 7 и 8.

    Самое удивительное

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

    Карта учебника

    ЧастьГлавыЧто вы увидите
    От текста к числам1–4Токены, векторы и как кодируется позиция
    Внутри трансформера5–6Внимание и блок, который повторяется
    Обучение7–8Функция потерь, градиентный спуск, законы масштабирования, обратное распространение, обучение вживую
    Работа модели9–12Сэмплирование, быстрый инференс (работа уже обученной модели), кэширование, длинный контекст
    Современные подходы13–15Смесь экспертов, квантизация, LoRA, новые архитектуры, RLHF, DPO, рассуждения, RAG

    Каждый рисунок живой: нажимайте «пуск», двигайте ползунки, вводите свой текст. Примеры нарочно крошечные — несколько токенов и пара измерений, — но математика в них та же, что и в передовых моделях.

    Начнём с того, с чего начинается цикл, — с шага 1: как текст режется на токены. Это глава 2.