VKВлад КуликовОткрытые лекции
Современные LLM8 / 20

Модуль 8. Альтернативы Transformer: SSM, Mamba и гибриды

Сначала попробуйте решить упражнение. Ответы, подробные решения и проектные ориентиры раскрываются отдельно и сохраняют своё состояние при переключении RU/EN.

Скачать файлы курса (.zip) 2588,1 КБ

Архив содержит файлы на обоих языках и вспомогательные материалы с сохранением структуры каталогов.

У1. Точность малошагового приближения

Для a=−1a=-1 найдите Δ\Delta, при котором замена точного входного коэффициента ZOH на Δ\Delta даёт 10% относительной ошибки.

Показать ответ и решение

Решение.

Для скалярной системы h˙=ah+Bx\dot h=ah+Bx точная ZOH-дискретизация даёт входной коэффициент (eaΔ−1)B/a(e^{a\Delta}-1)B/a. При a=−1a=-1 и B=1B=1 это 1−e−Δ1-e^{-\Delta}; малошаговое приближение заменяет его на Δ\Delta. Поэтому относительная ошибка относительно точного коэффициента равна

Δ1−e−Δ−1=0.1.\frac{\Delta}{1-e^{-\Delta}}-1=0.1.

Получаем

Δ≈0.193747558.\Delta\approx0.193747558.

Подстановка даёт Δ/(1−e−Δ)≈1.1\Delta/(1-e^{-\Delta})\approx1.1. Для малых шагов ошибка начинается как Δ/2\Delta/2, поэтому оценка около 0.2 также служит полезной проверкой порядка величины.

У2. Полный рекуррентный кэш

Для 32 слоёв, dinner=8192d_{inner}=8192, dstate=16d_{state}=16, dconv=4d_{conv}=4 и bf16 вычислите состояние SSM, состояние свёртки и точку пересечения с KV-cache 128 KiB/token.

Показать ответ и решение

Решение. Состояние SSM одного слоя содержит dinnerdstated_{inner}d_{state} bf16-элементов:

8192⋅16⋅2=262144 B=0.25 MiB.8192\cdot16\cdot2=262144\ \text{B}=0.25\ \text{MiB}.

Для 32 слоёв это 8 MiB. Состояние свёртки хранит dinnerdconvd_{inner}d_{conv} элементов: 8192⋅4⋅2=655368192\cdot4\cdot2=65536 B на слой, или 2 MiB на модель. Полный рекуррентный кэш равен 10 MiB и не растёт с длиной последовательности. KV-cache сравняется с ним при 10 MiB/128 KiB=8010\text{ MiB}/128\text{ KiB}=\mathbf{80} токенах; после этого KV больше.

У3. Mamba-2-подобный кэш

Пусть dstate=128d_{state}=128, а число каналов свёртки равно 8192+2⋅1288192+2\cdot128. Найдите полный кэш и первый целый токен после точки равенства объёмов.

Показать ответ и решение

Решение. SSM-компонент равен

32⋅8192⋅128⋅2=64 MiB.32\cdot8192\cdot128\cdot2=64\ \text{MiB}.

Число каналов свёртки — 8192+2⋅128=84488192+2\cdot128=8448, поэтому состояние свёртки занимает 32⋅8448⋅4⋅2=2.062532\cdot8448\cdot4\cdot2=2.0625 MiB. Итого 66.0625 MiB. Деление на 0.125 MiB KV на токен даёт 528.5: при 528 токенах KV ещё меньше, а первый целый токен, где он строго больше рекуррентного кэша, — 529.

У4 [проект]

Сравните последовательный и блочный проходы на некратной длине, измерьте максимальное расхождение и добавьте тест на неполный последний блок.

Демо и критерии проекта

Демо к этому проектному упражнению: русскоязычный демо-ноутбук модуля 8, раздел «Демо 1». Он показывает компактный воспроизводимый пример на малых данных, а не готовое решение полномасштабного проекта.

У5 [проект]

Постройте поиск записей на синтетических данных для аддитивной памяти, дельта-правила и дельта-правила с забыванием. На одинаковых ключах, значениях и размерах состояния сравните интерференцию, повторную запись ключа и забывание. Измеряйте отдельно ошибку текущего ключа и всех ранее записанных ключей.

Демо и критерии проекта

Демо к этому проектному упражнению: русскоязычный демо-ноутбук модуля 8, раздел «Демо 2». Он показывает компактный воспроизводимый пример на малых данных, а не готовое решение полномасштабного проекта.