Глава 3.6 — За пределами внимания

Содержание

  1. Предположение, которое часть III ни разу не подвергла сомнению
  2. Одна рамка: линейная RNN с матричным состоянием
  3. Модели пространства состояний: S4 и двойственность свёртки и рекуррентности
  4. Mamba: пусть вход решает, что запоминать
  5. RWKV: тот же итог, иным путём
  6. DeltaNet: исправляем то, как состояние записывается
  7. Что до сих пор трудно и почему побеждают гибриды
  8. Взгляд с точки зрения собеседования
  9. Вопросы для самопроверки
  10. Источники

1. Предположение, которое часть III ни разу не подвергла сомнению

Пять глав части III были про то, как позволить себе внимание. Глава 3.1 удешевила его по длине последовательности, глава 3.2 научила его позиционную схему переживать длинные контексты, глава 3.3 купила параметры, не покупая вычисления, глава 3.4 сделала обученную модель обслуживаемой, а глава 3.5 сжала то, что обслуживанию приходится помнить. Каждая из них оставила сам механизм нетронутым: токен обращается ко всем предыдущим токенам с softmax-весами, и модель хранит ключи и значения каждого предыдущего токена, чтобы он мог это делать. Вся стоимость в части III восходит к этому единственному проектному решению, и ни одно из исправлений его не трогало.

Эта глава — про линию работ, которая его тронула. Её утверждение в том, что определяющее свойство внимания — неограниченная память, растущая с последовательностью, — не единственный способ построить модель последовательности, и что состояние фиксированного размера, обновляемое рекуррентно, может подойти близко при $O(n)$ суммарной стоимости и $O(1)$ памяти на сгенерированный токен. Глава 1.4 уже рассказала, чем закончилась предыдущая попытка пойти этим путём: RNN проиграли трансформерам решительно, потому что последовательная зависимость делала их необучаемыми параллельно, а фиксированное состояние забывало слишком много. У обоих возражений теперь есть настоящие ответы — на возражение про параллельное обучение ответили S4 и формулировка Mamba через скан, а возражению про забывание посвящена вся линия дельта-правила. Достаточно ли эти ответы хороши — честный открытый вопрос, которым эта глава заканчивается, и текущий ответ от продакшн-моделей оказался компромиссом, которого никто заранее не предлагал.

2. Одна рамка: линейная RNN с матричным состоянием

Самое полезное, что стоит вынести из этой главы, — что Mamba, RWKV, DeltaNet и обычное линейное внимание — не четыре не связанные между собой архитектуры, а одна рекуррентность с четырьмя разными правилами обновления, и как только вы видите рекуррентность, остальное — бухгалтерия.

Раздел 4 главы 3.1 довёл вас почти до цели. Авторегрессивное линейное внимание поддерживает бегущую сумму $S_t = S_{t-1} + \phi(k_t)^\top v_t$ и считывает результат как $o_t = \phi(q_t) S_t$. Объект $S_t \in \mathbb{R}^{d \times d}$ — это матричное скрытое состояние: это не суммирующий вектор, как у LSTM, а ассоциативная память, держащая суперпозицию связок ключ-значение, записанных всеми токенами до сих пор. Запишем общий вид как $$S_t = A_t \, S_{t-1} + w_t$$ где $A_t$ говорит, что происходит с уже существующей памятью (член забывания или затухания), а $w_t$ — что в неё записывается. Каждая модель этой главы есть выбор этих двух вещей.

Обычное линейное внимание выбирает $A_t = I$ и $w_t = k_t^\top v_t$: никогда не забывать, всегда добавлять. У такого сочетания есть очевидный режим отказа — стоит лишь взглянуть на него как на память. Состояние имеет фиксированную ёмкость примерно в $d$ почти ортогональных направлений-ключей; аддитивные записи ничего не удаляют; поэтому по мере накопления токенов новые связки интерферируют со старыми, и вся память вырождается в размытое пятно. Это не тонкая эмпирическая деталь, а центральная проблема, и каждая последующая модель этой главы пытается её решить — либо заставив $A_t$ ужимать старое состояние (затухание и вентилирование), либо заставив $w_t$ перезаписывать, а не накапливать (дельта-правило), либо и то и другое.

Самый прямой фикс, который стоит попробовать, — он же один из самых цитируемых: механизм retention из RetNet (Sun с соавторами, Microsoft), который держит $A_t$ как фиксированное, поканальное скалярное затухание $\gamma < 1$, применяемое на каждом шаге ($A_t = \gamma I$), вместо единичной матрицы, так что старые связки затухают геометрически, а не сохраняются вечно, — ограничивая проблему интерференции, а не устраняя её полностью. Что делает RetNet стоящим отдельного упоминания, помимо того что это ранний пример идеи затухания, к которой эта глава постоянно возвращается, — так это то, что авторы показывают: одну и ту же рекуррентность можно вычислить тремя взаимозаменяемыми способами в зависимости от того, что вам нужно: параллельная форма (развернуть рекуррентность в одно матричное умножение в духе внимания — для пропускной способности при обучении), рекуррентная форма (обновление $O(1)$ на токен выше — для авторегрессивного инференса) и поблочная форма (chunkwise: прогнать параллельную форму внутри блока токенов, перенести в следующий блок рекуррентно только состояние на границе блока — для длинных последовательностей, где ни один из двух чистых вариантов не приемлем сам по себе). Эта тройная эквивалентность — одно и то же вычисление, выбираемое под конкретную задачу, — паттерн, который стоит высматривать и в остальных архитектурах этой главы.

Стоит явно назвать контраст с вниманием, потому что в нём весь компромисс одной строкой. «Состояние» softmax-внимания — это KV-кэш, растущий с $n$: ему никогда не приходится решать, что забыть, потому что он не забывает ничего, и платит за это той памятью и полосой, которым глава 3.5 посвятила целую главу. Состояние рекуррентной модели фиксированного размера: оно стоит $O(1)$ на токен вечно, и в обмен оно обязано решать, что выбросить. Всё дальнейшее — про то, как принимать это решение хорошо.

3. Модели пространства состояний: S4 и двойственность свёртки и рекуррентности

Современная линия началась вовсе не с линейного внимания, а с теории управления. Непрерывная линейная модель пространства состояний отображает сигнал $x(t)$ в $y(t)$ через латентное состояние: $$h'(t) = A h(t) + B x(t), \qquad y(t) = C h(t)$$ Дискретизируйте её с шагом $\Delta$ — и получите ровно линейную RNN: $h_t = \bar{A} h_{t-1} + \bar{B} x_t$, $y_t = C h_t$. S4 (Structured State Space for Sequence modeling — «структурированное пространство состояний для моделирования последовательностей», отсюда четыре S в названии) авторства Gu, Goel и Ré построена на этом, и то, почему она больше, чем переименованная RNN, сводится к двум наблюдениям.

Первое — двойственность, делающая её обучаемой. Поскольку $A$, $B$ и $C$ не зависят от $t$ — система линейна и стационарна во времени (LTI), — разворачивание рекуррентности даёт $y_t = \sum_{j} C\bar{A}^{j}\bar{B}\, x_{t-j}$, то есть свёртку с фиксированным ядром $\bar{K} = (C\bar{B},\, C\bar{A}\bar{B},\, C\bar{A}^2\bar{B}, \ldots)$. Так у одного и того же слоя есть две точные формы: рекуррентность, которую вы используете на инференсе, дающая постоянную стоимость на токен, и свёртка, которую вы используете при обучении, вычислимая для всей последовательности сразу через FFT за $O(n \log n)$ и полностью параллельная по позициям. Это прямой ответ на возражение, погубившее RNN: последовательной зависимости при обучении нет, потому что рекуррентность при обучении вы не запускаете.

Второе — что выбор $A$ имеет огромное значение и сделать его хорошо неочевидно. Случайно инициализированная $\bar{A}$ либо забывает почти мгновенно (спектральный радиус меньше единицы), либо взрывается. HiPPO, предшествующая работа, выводит конкретную структурированную $A$ из требования, чтобы состояние было коэффициентами оптимального полиномиального приближения истории входа, — память как онлайн-аппроксимация функции, с обоснованным ответом на вопрос, что фиксированное состояние должно хранить. S4 с инициализацией по HiPPO стала первой моделью, решившей Path-X — патологическую задачу на 16 000 токенов из бенчмарка Long Range Arena, на которой все варианты трансформера набирали уровень случайного угадывания; без инициализации HiPPO та же архитектура не работает вовсе.

S4 была настоящим прорывом на задачах с длинными зависимостями в сигналах и разочарованием на языке. Причина — ровно то свойство, которое делало её быстрой: стационарность во времени означает, что одни и те же $\bar{A}$ и $\bar{B}$ применяются в каждой позиции, поэтому решение модели о том, что запоминать, не может зависеть от того, каким токен на самом деле является. Она может выучить «помнить вещи примерно с такой дистанции», но не «запомнить это имя, проигнорировать эти слова-паразиты». Язык почти целиком состоит из задач второго типа, и модели семейства S4 показательно провалились на диагностических задачах, которые этого требуют, — на избирательном копировании и на поведении induction head (посмотри, какой токен следовал за X в прошлый раз, и предскажи его снова), которое трансформеры приобретают рано в обучении и которое сильно коррелирует с обучением в контексте.

Между S4 и Mamba исторически находится H3 (Hungry Hungry Hippos, Fu с соавторами) — прямая попытка залатать ровно этот пробел, не отказываясь от стационарности во времени: H3 складывает две SSM на слой с мультипликативным взаимодействием между ними, явно спроектированным так, чтобы эмулировать поведение сравнения-и-вспоминания, которое выполняет induction head, и это закрыло значительную часть разрыва с трансформерами по перплексии языкового моделирования, хотя и не дотянуло на самых острых диагностиках избирательного копирования. Это полезная историческая точка: H3 показывает, что область правильно диагностировала, какой именно способности не хватало SSM, ещё до того, как механизм селективности Mamba взялся за первопричину напрямую, а не обходил симптом фиксированным, вручную спроектированным взаимодействием.

4. Mamba: пусть вход решает, что запоминать

Mamba авторства Gu и Dao вносит одно изменение и прямо заявляет, что это оно: сделать параметры функциями входа. Авторы называют получившийся слой S6 — тот же S4, плюс Selective (селективный) механизм, плюс вычисление через Scan (скан), то есть шесть S-слов вместо четырёх. В слое S6 у Mamba $\Delta$, $B$ и $C$ порождаются линейными проекциями $x_t$, а не фиксированы, так что эффективные $\bar{A}_t$ и $\bar{B}_t$ меняются от токена к токену. Шаг $\Delta_t$ — самый интерпретируемый из трёх: большое $\Delta_t$ означает «этот токен важен, сбрось состояние в его сторону», малое — «этот токен наполнитель, удерживай текущее состояние», — то есть выученный, зависящий от содержания вентиль того же семейства, что и вентиль забывания LSTM из главы 1.4, только теперь управляющий куда большим состоянием. Они называют это селективностью, и она исправляет ровно провалы раздела 3: избирательное копирование и индукция становятся решаемыми, а получившаяся модель в их экспериментах сравнивается с трансформерами сопоставимого размера на языковом моделировании вплоть до нескольких миллиардов параметров.

Ценой становится потеря стационарности, а вместе с ней и свёрточной формы — нельзя применить FFT к ядру, меняющемуся в каждой позиции. Ответ Mamba в том, что линейная рекуррентность есть ассоциативный скан, а ассоциативные сканы параллелятся. Распишем это подробнее. Обозначьте каждый шаг парой $(\bar{A}_t, b_t)$, где $b_t = \bar{B}_t x_t$, так что применение шага — это $h \mapsto \bar{A}_t h + b_t$. Композиция двух шагов сама оказывается аффинным отображением той же формы: $h \mapsto \bar{A}_2(\bar{A}_1 h + b_1) + b_2 = (\bar{A}_2\bar{A}_1) h + (\bar{A}_2 b_1 + b_2)$ — а значит, можно определить правило объединения $(\bar{A}_2, b_2) \oplus (\bar{A}_1, b_1) = (\bar{A}_2\bar{A}_1,\ \bar{A}_2 b_1 + b_2)$, которое ассоциативно: неважно, в каком порядке вы группируете цепочку шагов, важно лишь сохранить их последовательность слева направо. Ассоциативность — это ровно то свойство, которое нужно параллельному алгоритму префиксной суммы. Возьмите четыре последовательных шага 1, 2, 3, 4: вместо того чтобы объединять их строго по порядку ($1\oplus2$, затем результат $\oplus 3$, затем $\oplus 4$ — три последовательных объединения, глубина 3), объедините соседние пары одновременно ($1\oplus2$ и $3\oplus4$ выполняются параллельно), а затем объедините два получившихся результата (глубина 2). Для $n$ шагов, расставленных таким образом в сбалансированное бинарное дерево, последовательная глубина — число объединений, которые обязаны происходить одно за другим, — оказывается $O(\log n)$ вместо $O(n)$, хотя суммарный объём работы по всем параллельным ветвям по-прежнему $O(n)$. Это тот же самый приём, которым пользуется параллельная префиксная сумма (cumulative sum), только оператор сложения заменён на правило $\oplus$ выше.

Поверх этого они прямо применяют урок главы 3.1: внутреннее состояние расширено так, что оно много больше размерности входа, и материализация его в HBM в каждой позиции сделала бы слой ограниченным памятью, поэтому скан сливается в единое ядро, держащее расширенное состояние в SRAM и записывающее обратно только выходы. Это тот же самый аргумент про обращения к памяти, что и у FlashAttention, применённый к рекуррентности, — и хорошая иллюстрация того, что «какой алгоритм быстрее» теперь неотделимо от «какой алгоритм ложится на иерархию памяти».

Mamba-2, опубликованная годом позже, стоит знать скорее из-за концептуального прорыва, чем из-за прироста производительности. Dao и Gu показывают, что ограниченная форма селективной SSM и одна из форм линейного внимания — это одно и то же вычисление, рассматриваемое через разные алгебраические линзы («двойственность пространств состояний»), а значит, две линии этой главы никогда по-настоящему не были раздельными; и это позволяет записать реализацию Mamba-2 через крупные матричные умножения вместо самодельного скана. Практически это важно, потому что современные ускорители построены именно под матричное умножение, и это сделало Mamba-2 в несколько раз быстрее Mamba на том же железе.

5. RWKV: тот же итог, иным путём

RWKV, разработанная Пэном и большой опенсорс-коллаборацией, пришла в очень похожее место из совершенно другой отправной точки — не из теории управления, а из прямой попытки вырезать внимание из блока трансформера, сохранив форму блока. У каждого слоя RWKV два подслоя, повторяющих структуру трансформерных: time-mixing (смешивание по времени), несущий рекуррентность и заменяющий внимание, и channel-mixing (смешивание по каналам) — вентильная позиционная сеть в духе FFN из главы 2.5.

Оператор time-mixing вычисляет для каждого канала взвешенную сумму по истории, в которой вес экспоненциально затухает с расстоянием с выученной поканальной скоростью $w$, плюс отдельный бонусный член $u$ для текущего токена: $$\text{WKV}_t = \frac{\sum_{i<t} e^{-(t-1-i)w + k_i} v_i + e^{u + k_t} v_t}{\sum_{i<t} e^{-(t-1-i)w + k_i} + e^{u + k_t}}$$ Структурно важно то, что и числитель, и знаменатель — бегущие суммы, обновляемые инкрементально, так что это снова линейная рекуррентность с состоянием фиксированного размера: параллелизуемая по последовательности при обучении, с постоянной стоимостью на токен при генерации. Выход затем вентилируется членом «восприимчивости» $\sigma(r_t)$, откуда и буква R в названии, и который делает ту же работу, что вентиль SwiGLU из главы 2.5: выученное, зависящее от входа решение о том, сколько вычисленного значения пропустить.

RWKV-4 — версия, впервые привлёкшая серьёзное внимание масштабированием до 14 млрд параметров, — использовала фиксированное выученное затухание $w$ на канал, то есть стационарное во времени, ровно та слабость S4. Последующие выпуски Eagle и Finch (RWKV-5 и RWKV-6) изменили это двумя шагами, которые теперь должны звучать знакомо: они повысили состояние с вектора до матрицы и сделали затухание зависящим от данных, вычисляемым из текущего токена, а не фиксированным. Две линии, не имеющие общего математического словаря и стартовавшие соответственно из теории управления и из трансформеров без внимания, сошлись на «матричном состоянии с зависящим от входа затуханием» с разницей примерно в год. Такая сходимость — неплохое свидетельство, что пространство решений действительно имеет форму, описанную в разделе 2.

6. DeltaNet: исправляем то, как состояние записывается

Затухание и вентилирование атакуют член $A_t$ — то, как выцветает старое состояние. Вторая половина рекуррентности раздела 2 — это $w_t$, и есть линия работ, утверждающая, что настоящая проблема именно там. Формулировка Schlag, Irie и Schmidhuber самая острая: состояние линейного внимания $S_t = S_{t-1} + k_t^\top v_t$ — это матрица быстрых весов, обучаемая чисто хеббовским правилом, а хеббовское обучение, как известно, страдает катастрофической интерференцией, когда число хранимых ассоциаций приближается к ёмкости матрицы. Запись новой связки для ключа, похожего на уже сохранённый, не заменяет старую ассоциацию, а накладывается на неё. Затухание помогает лишь грубо: оно выцвечивает всё, включая ассоциации, которые вы хотели сохранить.

Дельта-правило — классическое исправление, и это шестьдесят лет теории обучения, прибывшие ровно туда, где они нужны. Перед записью — прочитай: извлеки, что состояние сейчас возвращает по этому ключу, $\hat{v}_t = S_{t-1} k_t$, и запиши только поправку, масштабированную выученной скоростью $\beta_t$: $$S_t = S_{t-1} + \beta_t (v_t - S_{t-1}k_t)\, k_t^\top = S_{t-1}\big(I - \beta_t k_t k_t^\top\big) + \beta_t v_t k_t^\top$$ Вторая форма — та, которую стоит усвоить: $I - \beta_t k_t k_t^\top$ есть прицельное стирание, убирающее то, что хранилось именно по этому ключу, не трогая всё, что хранится по другим ключам, после чего записывается новое значение. Состояние теперь выполняет настоящее обновление на месте, а не накопление, и улучшение на задачах ассоциативного вспоминания — где модель должна извлечь связку, введённую ранее в контексте, возможно уже после её перезаписи, — велико.

Практической проблемой DeltaNet было то, что это выглядит принципиально последовательным: $S_{t-1}$ входит внутрь записи, поэтому очевидным образом превратить это в скан или свёртку не получается. По этой причине она пролежала почти без применения три года. Yang et al. решили вопрос в 2024 году поблочно-параллельной переформулировкой: произведение пошаговых матриц стирания $\prod_t (I - \beta_t k_t k_t^\top)$ есть произведение единичных матриц с возмущением ранга 1, у которого есть компактное WY-представление, вычислимое для целого блока матричными умножениями, что позволило DeltaNet обучаться со скоростью, конкурентной трансформерам, и впервые — в масштабе.

Gated DeltaNet — естественный завершающий ход, и именно он дошёл до продакшена. Yang, Kautz и Hatamizadeh замечают, что вентилирование и дельта-правило исправляют разные провалы: зависящее от данных глобальное затухание $\alpha_t$ — правильный инструмент для «тема сменилась, очисти память», а дельта-правило — правильный инструмент для «этот один факт обновился, поправь эту запись», — и что выбирать между ними незачем: $$S_t = S_{t-1}\,\alpha_t\big(I - \beta_t k_t k_t^\top\big) + \beta_t v_t k_t^\top$$ Их сочетание бьёт каждое по отдельности и на языковом моделировании, и на вспоминании из длинного контекста, и архитектура с тех пор попала в выпущенные модели, заметнее всего — в гибридный стек Qwen3-Next. Записанная подряд, вся прогрессия главы укладывается в один столбец таблицы: $A_t = I$ (линейное внимание), $A_t = \gamma$ (фиксированное затухание), $A_t = \alpha_t$ (селективное вентилирование), $A_t = I - \beta_t k_t k_t^\top$ (дельта-правило), $A_t = \alpha_t(I - \beta_t k_t k_t^\top)$ (вентильное дельта-правило).

7. Что до сих пор трудно и почему побеждают гибриды

Ничто из этого разрыв не закрывает, и стоит точно объяснить почему, а не считать это временным инженерным недоделом. Состояние фиксированного размера в $d \times d$ чисел может держать ограниченное количество информации; контекст из $n$ токенов содержит информацию, растущую с $n$. При достаточно большом $n$ точное вспоминание из состояния информационно-теоретически невозможно, каким бы хитрым ни было правило обновления. У внимания такого предела нет, потому что его состояние не фиксировано: KV-кэш — запись без потерь, и именно за эту беспотерьность вы и платите, когда платите за кэш.

Это не только теоретическая забота; она проявляется ровно там, где теория и предсказывает. Jelassi et al. продемонстрировали чистое разделение на копировании: трансформеры научаются копировать длинные строки из контекста и обобщают на длины сверх обученных, тогда как модели пространства состояний сопоставимого размера проваливаются, — и приводят и теоретический аргумент, и эмпирическую демонстрацию. Тот же паттерн появляется на поиске иголки в стоге сена и на многозапросном ассоциативном вспоминании, где модель должна ответить на несколько разных вопросов о связках, разбросанных по длинному контексту: один факт в состояние поместится, двадцать разбросанных — нет. Рекуррентные модели сильны на агрегированных, сжимаемых свойствах длинного контекста и слабы на точном извлечении из него, что является не багом, требующим починки, а описанием того, чем сжатое состояние является.

Поэтому область сделала очевидную вещь, и она сработала до неловкости хорошо: использовать оба. Гибридный стек — это преимущественно рекуррентные слои с перемежающимися через интервал слоями полного внимания: рекуррентные слои несут дешёвую основную массу моделирования последовательности, а редкий слой внимания даёт беспотерьный поиск, которого рекуррентным слоям не хватает. Jamba от AI21 перемежает один слой внимания на восемь в стеке Mamba плюс MoE; Samba от Microsoft соединяет Mamba со скользящим окном внимания; MiniMax-01 периодически ставит слой полного внимания среди слоёв линейного внимания при 456 млрд параметров; Qwen3-Next сочетает слои Gated DeltaNet с вентильным вниманием в отношении 3:1; Griffin от Google DeepMind перемежает вентильную линейную рекуррентность (RG-LRU — обновление с выученным затуханием из того же семейства, что и другие вентильные механизмы этой главы) с локальным вниманием по скользящему окну, а её чисто рекуррентный собрат Hawk вовсе убирает слои внимания и показывает, насколько далеко может зайти одна лишь рекуррентная сторона, прежде чем действительно проявится разрыв по вспоминанию, о котором шла речь выше в этом разделе. Согласованный эмпирический вывод по всем ним таков: небольшое меньшинство слоёв внимания — от одного на четыре до одного на восемь, в зависимости от модели — восстанавливает по сути всю способность к вспоминанию, сохраняя бо́льшую часть выигрыша от линейной стоимости, — соотношение, которого никто не предсказал из теории и к которому все пришли из эксперимента.

Ещё одно направление стоит отметить перед завершением, поскольку оно указывает не на то, где область уже приземлилась, а на то, куда она сейчас смотрит: test-time training (TTT), предложенное Sun с соавторами, продвигает идею рекуррентности ещё на шаг дальше, делая самим состоянием веса небольшой модели, которая продолжает обучаться онлайн, — обновляемые реальным шагом градиента на каждом токене, а не одним из фиксированных линейных правил обновления этой главы: состояние обучается на последовательности прямо по ходу генерации, а не записывается по правилу, зафиксированному на этапе предобучения. Это ранняя стадия по сравнению с проверенными в продакшене архитектурами выше, но это естественная экстраполяция ровно того вопроса, который задавала вся эта глава: что вам разрешено делать с состоянием фиксированного размера по мере поступления новых токенов, — а выученный шаг оптимизатора является строго более выразительным ответом, чем затухание или обновление по дельта-правилу, ценой соответственно более высокой стоимости на токен.

Таково честное состояние дел, и это подходящая нота, на которой заканчивается часть III. Вопрос, с которого начиналась глава, звучал как «необходимо ли внимание?», а ответ, выкристаллизовавшийся за пять лет работ, — ни да, ни нет: внимание необходимо где-то, в куда меньших количествах, чем использует чистый трансформер, и интересный инженерный вопрос в том, насколько малым его количеством можно обойтись. Часть III в целом взяла архитектуру, заданную частью II, и спросила, чего она стоит — по длине последовательности, по контексту, по параметрам, по обслуживанию, по памяти и, наконец, по тому, нужен ли этот механизм вообще. Чего она не затронула — откуда берутся веса. Часть IV начинает эту историю с самого начала, ещё до первого шага градиента, с вопроса настолько базового, что его легко пропустить: как строка символов становится теми токенами, которые каждая глава до сих пор молча предполагала своим входом?

8. Взгляд с точки зрения собеседования

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

  • «Объясните мне Mamba через то, что я уже знаю.» Самый сильный ответ начинается с рекуррентности, а не с теории пространств состояний: это линейная RNN с большим состоянием фиксированного размера, сделанная параллельно обучаемой через формулировку ассоциативного скана, у которой вентили забывания и входа — функции текущего токена. Названное «что покупает селективность» (память, зависящую от содержания, отсюда избирательное копирование и induction heads) и «чего она стоит» (свёрточной формы, отсюда нужда в самодельном ядре скана) показывает, что вы понимаете компромисс, а не маркетинг.
  • «Почему индустрия перешла от фиксированного затухания к дельта-правилу, если оба — способы освободить место в состоянии?» Ответ обязан различить, что каждое из них забывает. Затухание нецелевое: оно одинаково выцвечивает каждую сохранённую ассоциацию, включая нужные. Дельта-правило сначала читает состояние по текущему ключу и стирает только ячейку этого ключа, $I - \beta_t k_t k_t^\top$, оставляя другие связки нетронутыми. Сильный ответ добавит, что Gated DeltaNet использует оба, потому что они лечат разные провалы, и что дельта-правило годами буксовало на убеждении, будто его нельзя распараллелить, — пока не появилась поблочная WY-формулировка.
  • «Вам нужна модель для контекстов в 1 млн токенов. Чистая Mamba, чистый трансформер или гибрид — и почему?» Ожидаемый ответ называет информационно-теоретический предел: фиксированное состояние не может беспотерьно вспомнить неограниченный контекст, поэтому чисто рекуррентные модели проваливаются на точном извлечении (копирование, иголка в стоге сена, многозапросное вспоминание) так, что лучшим обучением это не чинится. Затем он называет гибридное соотношение — небольшое меньшинство слоёв, примерно от одного на четыре до одного на восемь, — и приводит хотя бы один выпущенный пример. Ответ «Mamba, она линейная» без оговорки про вспоминание — это ловушка.
  • «И RWKV, и Mamba пришли к матричному состоянию с зависящим от входа затуханием из не связанных между собой отправных точек. Какой вывод отсюда следует?» Здесь проверяют суждение, а не память. Смысл в том, что пространство решений действительно мало: при фиксированном состоянии и линейной рекуррентности единственные содержательные выборы — как ослабляется старое состояние и как записывается новое, а независимая сходимость к одним и тем же ответам служит доводом, что детали параметризации важны меньше этих двух решений.

Сквозная линия — способны ли вы удерживать компромисс в голове, не схлопывая его в победителя. Кандидаты, читавшие только анонсы, описывают эти модели как «замену трансформеру»; кандидаты, читавшие оценки, описывают их как другую точку на кривой «память против вспоминания» и знают, какие задачи лежат по какую её сторону.

9. Вопросы для самопроверки

  1. Выпишите общую рекуррентность $S_t = A_t S_{t-1} + w_t$ и заполните $A_t$ и $w_t$ для обычного линейного внимания, модели с фиксированным затуханием и DeltaNet. Какой режим отказа лечит каждый следующий выбор?
  2. Объясните, почему стационарность S4 во времени одновременно и делает её параллельно обучаемой, и делает её плохой на языке.
  3. Mamba отказывается от свёрточной формы. Что она использует вместо неё, почему это всё ещё параллелится по последовательности и что общего у её слитого ядра с FlashAttention?
  4. Запишите обновление по дельта-правилу в форме $S_{t-1}(I - \beta_t k_t k_t^\top) + \beta_t v_t k_t^\top$ и объясните в терминах хранимых связок ключ-значение, что делает каждый множитель. Почему это лучше, чем затухание всего состояния?
  5. В чём состоит информационно-теоретический аргумент, почему рекуррентное состояние фиксированного размера не может сравняться с вниманием на точном вспоминании из длинного контекста, и какое конкретное поведение на бенчмарках этот аргумент предсказывает?
  6. Почему продакшн-гибриды расставляют слои внимания через интервал, а не используют внимание, скажем, в первой половине стека? Что бы вы измеряли, чтобы выбрать соотношение?
  7. RWKV и Mamba сошлись на одних и тех же двух проектных решениях из не связанных отправных точек. Назовите оба решения и объясните, о чём эта сходимость говорит применительно к тому, какие части этих архитектур действительно важны.

10. Источники

  • Gu, A., Goel, K., & Ré, C. (2021). Efficiently Modeling Long Sequences with Structured State Spaces. ICLR 2022. arXiv:2111.00396. https://arxiv.org/abs/2111.00396
  • Gu, A., Dao, T., Ermon, S., Rudra, A., & Ré, C. (2020). HiPPO: Recurrent Memory with Optimal Polynomial Projections. NeurIPS 2020. arXiv:2008.07669. https://arxiv.org/abs/2008.07669
  • Gu, A., & Dao, T. (2023). Mamba: Linear-Time Sequence Modeling with Selective State Spaces. arXiv:2312.00752. https://arxiv.org/abs/2312.00752
  • Dao, T., & Gu, A. (2024). Transformers are SSMs: Generalized Models and Efficient Algorithms Through Structured State Space Duality. ICML 2024. arXiv:2405.21060. https://arxiv.org/abs/2405.21060
  • Peng, B., Alcaide, E., Anthony, Q., et al. (2023). RWKV: Reinventing RNNs for the Transformer Era. EMNLP 2023 Findings. arXiv:2305.13048. https://arxiv.org/abs/2305.13048
  • Peng, B., Goldstein, D., Anthony, Q., et al. (2024). Eagle and Finch: RWKV with Matrix-Valued States and Dynamic Recurrence. arXiv:2404.05892. https://arxiv.org/abs/2404.05892
  • Schlag, I., Irie, K., & Schmidhuber, J. (2021). Linear Transformers Are Secretly Fast Weight Programmers. ICML 2021. arXiv:2102.11174. https://arxiv.org/abs/2102.11174
  • Yang, S., Wang, B., Zhang, Y., Shen, Y., & Kim, Y. (2024). Parallelizing Linear Transformers with the Delta Rule over Sequence Length. NeurIPS 2024. arXiv:2406.06484. https://arxiv.org/abs/2406.06484
  • Yang, S., Kautz, J., & Hatamizadeh, A. (2024). Gated Delta Networks: Improving Mamba2 with Delta Rule. ICLR 2025. arXiv:2412.06464. https://arxiv.org/abs/2412.06464
  • Jelassi, S., Brandfonbrener, D., Kakade, S. M., & Malach, E. (2024). Repeat After Me: Transformers are Better than State Space Models at Copying. ICML 2024. arXiv:2402.01032. https://arxiv.org/abs/2402.01032
  • Lieber, O., Lenz, B., Bata, H., et al. (2024). Jamba: A Hybrid Transformer-Mamba Language Model. arXiv:2403.19887. https://arxiv.org/abs/2403.19887
  • Ren, L., Liu, Y., Lu, Y., Shen, Y., Liang, C., & Chen, W. (2024). Samba: Simple Hybrid State Space Models for Efficient Unlimited Context Language Modeling. arXiv:2406.07522. https://arxiv.org/abs/2406.07522
  • Sun, Y., Dong, L., Huang, S., Ma, S., Xia, Y., Xue, J., Wang, J., & Wei, F. (2023, Microsoft). Retentive Network: A Successor to Transformer for Large Language Models (RetNet). arXiv:2307.08621. https://arxiv.org/abs/2307.08621
  • Fu, D. Y., Dao, T., Saab, K. K., Thomas, A. W., Rudra, A., & Ré, C. (2022). Hungry Hungry Hippos: Towards Language Modeling with State Space Models (H3). ICLR 2023. arXiv:2212.14052. https://arxiv.org/abs/2212.14052
  • De, S., Smith, S. L., Fernando, A., et al. (2024, Google DeepMind). Griffin: Mixing Gated Linear Recurrences with Local Attention for Efficient Language Models. arXiv:2402.19427. https://arxiv.org/abs/2402.19427
  • Sun, Y., Li, X., Dalal, K., et al. (2024). Learning to (Learn at Test Time): RNNs with Expressive Hidden States (TTT). arXiv:2407.04620. https://arxiv.org/abs/2407.04620

Тест для самопроверки

Проверьте понимание главы с помощью короткого теста — вопросы по теории и небольшие расчёты.

Что выбирает обычное линейное внимание в объединяющей рекуррентности $S_t = A_t S_{t-1} + w_t$?

Объяснение: Линейное внимание накапливает внешние произведения в бегущую сумму. Поскольку ничто никогда не удаляется, новые связки интерферируют со старыми, как только заполняются примерно $d$ почти ортогональных направлений-ключей состояния.

Почему S4 можно обучать параллельно по последовательности?

Объяснение: При $A$, $B$, $C$, не зависящих от $t$, получаем $y_t = \sum_j C\bar{A}^j\bar{B}x_{t-j}$ — свёртку с ядром $(C\bar{B}, C\bar{A}\bar{B}, \ldots)$, вычисляемую для всей последовательности сразу за $O(n\log n)$. Рекуррентность используется только на инференсе.

Чего стационарность во времени стоит S4 на языковых задачах?

Объяснение: S4 может выучить «помнить вещи примерно с такой дистанции», но не «запомнить это имя, проигнорировать этот наполнитель». Поэтому модели семейства S4 провалились на избирательном копировании и поведении induction head.

Mamba делает $\Delta$, $B$ и $C$ функциями входа. Что она теряет и что приходит на замену?

Объяснение: К ядру, меняющемуся в каждой позиции, нельзя применить FFT. Но линейная рекуррентность — ассоциативный скан, поэтому шаги объединяются попарно деревом, а Mamba сливает этот скан в ядро, держащее расширенное состояние в SRAM, — тот же IO-аргумент, что у FlashAttention.

В чём существенная разница между затуханием и дельта-правилом как способами освободить место в состоянии?

Объяснение: Множитель $I - \beta_t k_t k_t^\top$ — это прицельное стирание того, что хранилось именно по $k_t$, не трогающее остальные связки: настоящее обновление на месте вместо нецелевого выцветания.

Почему DeltaNet оставалась почти без применения три года после публикации?

Объяснение: Yang et al. решили это в 2024 году: у произведения матриц стирания с ранг-один возмущениями есть компактное WY-представление, вычислимое для целого блока матричными умножениями.

Что сочетает Gated DeltaNet и зачем нужно и то, и другое?

Объяснение: $S_t = S_{t-1}\,\alpha_t(I - \beta_t k_t k_t^\top) + \beta_t v_t k_t^\top$. Вентилирование и дельта-правило лечат разные провалы, поэтому их сочетание бьёт каждое по отдельности. Qwen3-Next это использует.

В чём информационно-теоретическая причина того, что рекуррентное состояние фиксированного размера не сравняется с вниманием на вспоминании из длинного контекста?

Объяснение: При достаточно большом $n$ точное вспоминание из фиксированного состояния невозможно при любом правиле обновления. У внимания такого предела нет, потому что KV-кэш — беспотерьная запись, за что вы ровно и платите.

Какую примерно долю слоёв внимания используют продакшн-гибриды вроде Jamba и Qwen3-Next?

Объяснение: Jamba использует один на восемь, Qwen3-Next — отношение Gated DeltaNet к вниманию 3:1. Согласованный вывод: небольшое меньшинство слоёв внимания восстанавливает по сути всю способность к вспоминанию, сохраняя бо́льшую часть выигрыша от линейной стоимости.