Что делает LLM
Большая языковая модель (LLM, large language model) умеет ровно одно: по данному тексту предсказывать, что будет дальше. Не весь ответ и не предложение целиком, а один маленький кусочек текста — токен.
Всё остальное — беседа, написание кода, «рассуждения» — получается, если повторять это одно предсказание в цикле.
- Чтение
- Слои
- Оценки
- Выбор
- Запись
…и ещё около 200 000 токенов делят оставшиеся 13%.
Модель видит 3 токена. Буквы она не видит — только эти кусочки (в виде чисел).
Цикл в пяти шагах
- Токенизация. Текст режется на токены — кусочки, которые часто совпадают с целыми словами (
·кот, где·обозначает пробел перед словом), иногда с частями слов (аторы), — и каждый кусочек превращается в число. Как именно — в главе 2. - Эмбеддинг. Каждое число заменяется длинным списком чисел — вектором, который модель выучила для этого токена. Глава 3.
- Преобразование. Векторы проходят через десятки блоков трансформера, устроенных одинаково, но у каждого свои выученные числа. Внутри них механизм внимания позволяет каждому токену собрать информацию с токенов перед ним. Главы 5 и 6.
- Оценка. Последний вектор сравнивается с выученным вектором каждого токена словаря (через скалярное произведение), и для каждого получается оценка — логит. Softmax превращает оценки в вероятности, которые в сумме дают 1 (как именно — чуть ниже).
- Выбор. Из этого распределения вытягивается один токен, дописывается к тексту, и цикл повторяется. Как на выбор влияет температура — в главе 9.
От оценок к вероятностям: softmax
На выходе модель даёт по одной оценке на каждый токен словаря. Эти оценки называются логитами и могут быть любыми числами: положительными, отрицательными, большими, маленькими. Чтобы выбрать токен, нужны вероятности: числа от 0 до 1, которые в сумме дают 1. Softmax — стандартный способ превратить одно в другое, и в этом учебнике он встретится ещё много раз.
Он состоит из двух шагов:
- Возвести в экспоненту каждую оценку, то есть вычислить (где ). Все результаты становятся положительными, а разница растягивается: оценка всего на 1 больше даёт число примерно в 2,7 раза больше.
- Нормировать: разделить каждый результат на сумму всех, чтобы вместе они давали 1.
Например, возьмём три оценки: 2, 1 и 0. Экспоненты дают , и , в сумме около 11,11. Делим на эту сумму и получаем вероятности примерно 0,67, 0,24 и 0,09.
сумма eᶻ = 35,37каждая вероятность = eᶻ ÷ эта сумма
Что стоит запомнить про softmax:
- Порядок сохраняется. Большая оценка всегда даёт большую вероятность, и ни один токен не получает ровно ноль.
- Важны только разницы. Если прибавить одно и то же число ко всем оценкам, ничего не изменится: общий множитель сокращается при делении.
- Разрывы усиливаются. Чем больше разница между оценками, тем больше вероятности уходит лидеру. Поэтому внимание делит свои оценки на (глава 5), и именно этим управляет температура при сэмплировании — случайном выборе следующего токена (глава 9).
- Это «мягкий» максимум. Жёсткий максимум отдал бы лидеру 100%, а остальным 0%. Softmax даёт лидеру самую большую долю и немного оставляет остальным — поэтому при обучении можно чуть-чуть подвинуть каждую оценку (глава 7).
То же самое формулой
Если текст на данный момент — это токены , модель вычисляет вероятность каждого возможного следующего токена:
Читается это так: «вероятность того, что следующий токен — , при условии () всех токенов до него». Вероятность целого предложения — произведение таких вероятностей «следующего токена»:
Генерация проходит ту же цепочку вперёд: вытянуть один токен, дописать его и учитывать при следующем выборе. Модель, у которой каждый выход становится частью следующего входа, называют авторегрессионной.
Контекстное окно
У «текста на данный момент» есть жёсткий предел — контекстное окно, максимальное число токенов, которое модель может охватить за один проход. В английском тексте токен — в среднем около четырёх символов, так что 1000 токенов — это примерно 750 слов; большинству других языков, в том числе русскому, на тот же текст нужно больше токенов (глава 2). Всё, что модель знает о вашем разговоре, должно в него поместиться: системные инструкции, все прошлые сообщения, вставленные документы и её собственные ответы. То, что не поместилось, для модели просто не существует — другой памяти о беседе у неё нет.
Имя «Ада» внутри окна: модель может ответить.
Окна росли быстро: GPT-2 (2019) видела 1024 токена, GPT-3 — 2048, первая GPT-4 — 8192 или 32 768, а современные модели работают со 128 000 токенов и больше миллиона. Но большое окно не бесплатно: стоимость внимания растёт как квадрат длины, а середину длинного контекста модели часто используют хуже, чем его начало и конец. Об этом — глава 12, а о том, как не платить дважды за один и тот же длинный промпт (текст, который отправляют модели), — глава 11.
Где живут знания
Знания модели хранятся в её параметрах — миллиардах чисел, сложенных в весовые матрицы (прямоугольные таблицы чисел). У небольших открытых моделей, чьи веса может скачать любой, их от одного до нескольких миллиардов, у передовых — самых больших и сильных на сегодня — сотни миллиардов и больше. Никто не подбирает эти числа вручную: они начинаются случайными и триллионы раз понемногу сдвигаются к значениям, при которых предсказания следующего токена становятся лучше. Это и называется обучением — оно показано в главах 7 и 8.
В этом цикле нигде не сказано «отвечай на вопросы» или «будь полезной». Модель, обученная только продолжать тексты из интернета, становится сильной базовой моделью, а сравнительно небольшое дополнительное обучение превращает её в ассистента. Этому последнему шагу посвящена глава 15.
Карта учебника
Каждый рисунок живой: нажимайте «пуск», двигайте ползунки, вводите свой текст. Примеры нарочно крошечные — несколько токенов и пара измерений, — но математика в них та же, что и в передовых моделях.
Начнём с того, с чего начинается цикл, — с шага 1: как текст режется на токены. Это глава 2.