Глава 16a. Mamba и SSM: длинная память без квадрата внимания
Attention дал параллелизм и гибкие связи.
SSM-линия пытается вернуть почти линейный скан по последовательности —
без наивной амнезии старых RNN.
Глава 16 обозначила боль длинного контекста.
Здесь разберём гипотезу state-space моделей достаточно глубоко, чтобы вы могли читать статьи семейства Mamba как архитекторы, а не как охотники за бенчмарками.
16a.1. Что снова болит
Self-attention:
качество дальних связей: высокое
параллелизм на train: высокий
цена: ~ N² по связям + память активаций
Когда N растёт (длинный документ, аудио, геном, длинный видеоряд токенов), даже FlashAttention лишь отодвигает стену: асимптотика квадрата никуда не делась.
Старый RNN:
цена: ~ N
дальние связи: хрупкие
параллелизм по длине: плохой
Нужен третий зверь: дешевле внимания на длинных N, но обучаемее и параллельнее наивной рекуррентности.
16a.2. State space в инженерной интуиции
Классическая continuous-time идея state space (очень грубо):
состояние h'(t) = A h(t) + B x(t)
выход y(t) = C h(t) + D x(t)
Дискретный взгляд для токенов:
h_k = Ā h_{k-1} + B̄ x_k
y_k = C h_k
Смысл:
Есть сжатая память
h, которая обновляется токеном за токеном.
Выход читается из памяти.
Если уметь считать это устойчиво и быстро — получим длинный контекст за ~O(N).
Это родственник RNN, но с другой родословной: фильтры, контроллеры, свёртки по времени, аккуратные дискретизации.
16a.3. Почему наивный SSM ещё не Mamba
Чтобы SSM стал конкурентом трансформера в deep learning, пришлось закрыть несколько дыр:
1. Обучаемость глубоких стеков.
Нужны нормализации, residual, правильная параметризация A (стабильность!), иначе снова глухой телефон во времени.
2. Выразительность.
Линейный time-invariant фильтр плохо адаптируется к токену: иногда нужно «забыть», иногда — «вцепиться».
Отсюда селективность: параметры перехода зависят от текущего входа (ядро идеи Mamba).
3. Железо.
Последовательный скан легко написать медленно. Нужны fused CUDA/kernels, эффективный parallel scan, работа с памятью — рифма с FlashAttention, только другая математика.
flowchart TD
A[Длинный контекст] --> B[Attention O(N²)]
A --> C[SSM / scan ~ O(N)]
C --> D[Стабильная дискретизация]
C --> E[Selective параметры от входа]
C --> F[Быстрый scan на GPU]
D --> G[Mamba-подобные блоки]
E --> G
F --> G
16a.4. Обмен, который предлагает Mamba-линия
| Получают | Платят |
|---|---|
| Лучший asymptotics по N | Меньше «полной» все-со-всеми связности внимания |
| Длинный контекст реалистичнее | Сильнее зависимость от качества ядер/реализации |
| Инференс с компактным состоянием | Новые режимы нестабильности/инициализации |
| Альтернатива squaring memory | Экосистема, инструменты, рецепты ещё моложе |
Честная рамка:
Это не «трансформеры умерли».
Это ставка: для ряда модальностей и длин селективный скан окупается лучше полного attention.
Гибриды (attention на редких глобальных токенах + SSM на потоке) снова выглядят как взрослый ответ книги: не религия, а парето по задаче.
16a.5. Как читать следующую SSM-статью
Шесть вопросов из главы 16 — в узкой редакции:
- Какая длина N реально показана, не только в абстракте?
- Есть ли селективность от входа или это LTI-фильтр?
- Чем стабилизируют
A/ дискретизацию? - Wall-clock vs FlashAttention на одном GPU и одном batch?
- Качество на дальних зависимостях (needle-in-haystack и доменные тесты)?
- Что с обучением deep stack — сходится ли без героического LR-шаманства?
| Подход | Обмен |
|---|---|
| RNN | Память есть, параллелизма нет |
| Attention | Связи гибкие, квадрат кусается |
| SSM | Скан почти линеен, выразительность надо добыть |
Если после этих вопросов хайп остаётся подкреплённым цифрами на вашей длине контекста — гипотеза жива.
Если выигрыш только в FLOPs-калькуляторе — вы уже знаете, куда смотреть (глава 11a).
Если бы вы были автором статьи…
-
Сконструируйте бенчмарк дальней зависимости, где локальные свёртки/окна attention обязаны провалиться.
Как на нём выглядят Transformer / window-attn / Mamba-like? -
Смешайте блоки: 1 attention на 7 SSM.
Какой минимальный процент attention сохраняет качество на вашем датасете? -
Профилируйте состояние
h: размер, bandwidth, batch=1 latency.
В каком режиме SSM memory-bound, несмотря на O(N)?
На этом линия «после трансформеров» перестаёт быть туманом в послесловии и становится обычной инженерной развилкой — с тем же языком болей и обменов, что и YOLO в 2016.