За пределами классического трансформера
Трансформер из главы 6 тянет на себе языковые модели с 2017 года, но у него две дорогие привычки. Каждый новый токен читает ключи и значения всех предыдущих токенов, и эти ключи и значения копятся в KV-кэше, который растёт вместе с диалогом. А ещё он пишет текст строго по одному токену за проход.
Большая часть новых архитектур борется с одной из этих привычек. В этой главе — главные идеи: сжать кэш, заменить внимание памятью фиксированного размера, смешать одно с другим, писать много токенов сразу и кормить модель тем, что вообще не является текстом.
Многоголовое латентное внимание: сжать кэш
В главе 10 было два способа уменьшить KV-кэш: дать нескольким головам запросов общую голову ключей и значений (GQA) или одну на всех (MQA). Общие головы экономят память, но теряют часть того, что могли бы выразить отдельные головы.
Многоголовое латентное внимание (MLA), появившееся в DeepSeek-V2 в 2024 году, не делит, а сжимает. Для каждого токена модель считает один маленький латентный вектор («латентный» значит скрытый: это сжатая сводка, которой модель пользуется внутри себя) и кэширует только его. Когда вниманию нужны ключи и значения, они восстанавливаются из латента для каждой головы умножением на матрицу, которая снова увеличивает вектор (повышающая проекция):
Здесь — скрытый вектор токена, сжимает его в латент, а у каждой головы есть свои матрицы и , чтобы восстановить её ключ и значение. Выигрыш виден по размерам. В модели с рисунка ниже, близкой к DeepSeek-V3, обычное многоголовое внимание хранит 2 × 128 голов × 128 чисел = 32 768 чисел на токен в каждом слое. MLA хранит латент из 512 чисел плюс позиционный ключ из 64: 576 чисел, примерно в 57 раз меньше.
Восстанавливать каждый ключ каждой головы на каждом шаге было бы медленно, но это и не нужно. Ключ используется только в скалярном произведении с запросом, а : достаточно один раз умножить запрос на , и его можно сравнивать прямо с латентом из кэша. Матрица значений так же «вклеивается» в матрицу выхода. Поворотные позиции (глава 4) такую склейку не переживают, поэтому MLA хранит для каждого токена ещё небольшой отдельный ключ только для позиции.
Храним один маленький латентный вектор (плюс короткий позиционный ключ). Ключи и значения для всех 128 голов восстанавливаются из него по мере надобности.
Условная модель, близкая к DeepSeek-V3: 61 слой, 128 голов × 128 измерений, 16-битные числа.
С такими настройками диалогу на 128 тысяч токенов нужно примерно 490 ГБ кэша при обычном многоголовом внимании, около 31 ГБ с GQA и меньше 9 ГБ с MLA. От этой разницы зависит, сколько пользователей одновременно выдержит один GPU-сервер.
Модели пространства состояний: память, которая не растёт
Внимание хранит всё: чтобы выдать токен номер 100 000, оно оглядывается на 99 999 записей в кэше. Рекуррентная сеть поступает наоборот. Она сжимает прошлое в состояние фиксированного размера и обновляет его один раз на каждый токен. Память и работа на токен остаются постоянными, какой бы длинный ни был текст.
Классические RNN (рекуррентные нейросети — та самая пошаговая схема, описанная выше) проиграли трансформерам по двум причинам: их нельзя было обучать параллельно, и они слишком много забывали. Современные модели пространства состояний (SSM), например Mamba (2023), исправляют и то и другое.
- Избирательное обновление. Каждый шаг выглядит так: Здесь — состояние после токена (короткий список чисел), — вход от токена, перемножает два списка поэлементно, а , выход слоя, считывается из состояния через . Затухание и сила записи зависят от текущего токена. Если состояние — одно число и , каждый шаг сохраняет 90% того, что было, и после 10 служебных слов от старого воспоминания остаётся . Важное слово может получить и большое : забыть эту ячейку и записать на её место новое слово. В Mamba оба коэффициента получаются из одного числа, зависящего от токена, — шага Δ: большое Δ значит «больше забыть и больше записать».
- Параллельное обучение. Каждый шаг — это аффинное отображение (умножить на число и прибавить число). Если сделать , а затем , получится — снова одно умножение и одно сложение. Значит, соседние шаги можно сливать парами, все одновременно, затем пары пар и так далее. Поэтому шаги можно группировать в любом порядке без изменения результата (ассоциативность), и благодаря этому параллельное сканирование обрабатывает всю обучающую последовательность примерно за раундов вместо последовательных шагов.
Внимание: KV-кэш
Модель пространства состояний: фиксированное состояние
При обучении все 16 токенов видны сразу: параллельное сканирование проходит рекуррентность за 4 раунда (log₂ 16).
Обе модели читают первый токен. Модель с вниманием сохраняет его ключ и значение; SSM записывает его в своё маленькое состояние.
Линейное внимание приходит туда же с другой стороны. Уберите из внимания softmax — и выход для запроса становится равен . Сумма в скобках не зависит от запроса, поэтому её можно хранить как одну накапливаемую матрицу и обновлять раз на токен: . Снова состояние фиксированного размера. Цена в том, что без softmax внимание уже не может резко сосредоточиться на нескольких токенах; новые варианты отчасти возвращают это с помощью вентилей. Mamba-2, RWKV, RetNet и Gated DeltaNet — всё это вариации на тему «качество как у внимания при памяти как у рекуррентной сети». Mamba-2 вообще построена на наблюдении, что структурированная SSM и одна из форм линейного внимания вычисляют одно и то же.
Подвох — в слове фиксированный. Состояние из нескольких тысяч чисел на слой не может хранить 100-страничный документ дословно. Чистые SSM хорошо улавливают суть, но хуже справляются с точным воспоминанием: скопировать номер телефона из далёкого прошлого или найти иголку в длинном контексте.
Гибриды: достаточно нескольких слоёв внимания
Поэтому большинство новых моделей для длинного контекста оставляют немного внимания. В гибридном стеке большинство слоёв дешёвые (рекуррентные, линейные или со скользящим окном), а полное внимание тратится только на несколько. Jamba от AI21 (2024) использовала один слой внимания на каждые семь слоёв Mamba; несколько моделей 2025 года от NVIDIA, Qwen и MiniMax используют похожие пропорции с разными дешёвыми слоями. Модели Gemma от Google в том же духе чередуют локальное внимание со скользящим окном и редкие глобальные слои.
Относительные условные числа. Память и работа посчитаны по числу слоёв; точность воспоминания — качественный итог опубликованных результатов.
Больше одного токена за проход
Вторая дорогая привычка — декодировать по одному токену. Спекулятивное декодирование уже хитрит, позволяя маленькой модели угадывать наперёд. Две более новые идеи меняют саму модель.
- Предсказание нескольких токенов (MTP). Дополнительные выходные головы, обученные вместе с обычной, предсказывают токены на позициях , , … из того же скрытого состояния (внутреннего вектора модели на этой позиции). Такое обучение помогает модели планировать наперёд, а при генерации дополнительные головы становятся встроенной черновой моделью: следующий проход проверяет их догадки и оставляет совпавшие. Так, с одним дополнительным модулем MTP, обучена DeepSeek-V3.
- Диффузионные языковые модели. Вместо письма слева направо начинаем с ответа фиксированной длины, целиком состоящего из токенов
[MASK]. Каждый шаг предсказывает все замаскированные позиции сразу и фиксирует самые уверенные — примерно так, как диффузионные модели изображений проявляют картинку из шума. Исследовательские модели вроде LLaDA и коммерческие вроде Mercury от Inception показывают, что так можно получить сравнимое качество за гораздо меньшее число проходов.
Авторегрессионное декодирование: один проход — один токен, строго слева направо.
Диффузия не бесплатна: каждый проход обрабатывает весь ответ фиксированной длины, длину надо выбрать заранее, а параллельная фиксация токенов может давать нестыковки, которых модель «слева направо» избежала бы. Что победит на самых больших масштабах — диффузия или авторегрессия — пока открытый вопрос.
Не только текст: картинки и звук как токены
Трансформеру всё равно, что означают его токены, — важно лишь, чтобы каждый пришёл в виде вектора. В этом и весь секрет мультимодальных моделей.
- Изображения. Визуальный трансформер (ViT) режет картинку на сетку квадратных патчей, обычно по 14 или 16 пикселей, вытягивает каждый патч в строку и умножает на обученную матрицу. Каждый патч становится одним вектором — таким же токеном, как остальные.
- Звук. Речь либо кодируется в векторы аудиоэнкодером — сетью, превращающей звук в векторы (подход, который популяризировал Whisper), либо превращается нейрокодеком (сетью, сжимающей звук в короткую последовательность кодов) в дискретные аудиотокены — обычно несколько десятков токенов на секунду звука. Такие токены можно и генерировать — так модели отвечают голосом.
Картинка 16×16. Настоящая модель видит что-то вроде 1024×1024 пикселей.
Есть два распространённых способа построить такую модель:
Картинки дороги: одно изображение высокого разрешения может превратиться в тысячи токенов, поэтому визуальные модели объединяют или усредняют соседние патчи, прежде чем отдать их языковой модели. Эта цена ведёт прямо к главам о длинном контексте и кэшировании.
Что дальше
Ни одна из этих идей не отменяет основу, которую вы видели в этом учебнике: токены становятся векторами, слои смешивают информацию между позициями, обучение идёт по градиенту. Меняется лишь то, как смешиваются позиции и сколько токенов выходит за проход. Другой большой фронтир — вовсе не архитектура, а то, как модель тратит вычисления во время ответа: рассуждения, обученные с подкреплением, и работа с длинным контекстом, полным инструментов, файлов и памяти.
Итоги
- MLA хранит в кэше маленький латентный вектор на токен и восстанавливает из него ключи и значения для каждой головы — кэш получается намного меньше, чем с GQA.
- Модели пространства состояний и линейное внимание заменяют растущий кэш состоянием фиксированного размера: постоянная память на токен, но более слабое точное воспоминание.
- Гибриды оставляют несколько слоёв полного внимания среди множества дешёвых и получают лучшее от обоих миров.
- Предсказание нескольких токенов и диффузия пишут несколько токенов за один проход.
- Мультимодальные модели превращают патчи картинок и звук в токены, и один и тот же трансформер читает их все.