Сжатая память
«Сжать attention» можно двумя принципиально разными способами. Первый уменьшает число позиций: много токенов превращаются в несколько memory slots (ячеек памяти). Второй сохраняет каждую позицию, но записывает её ключи и значения через узкий latent-вектор.
Сократить позиции или ширину записи
Контекст можно представить как таблицу: одна ось отвечает за позиции
Сначала сосчитайте сохраняемые позиции и размер записи одной позиции. Переключите ось сжатия и определите, какая из этих величин изменилась. Что потребуется восстановить, чтобы снова обратиться к отдельному исходному токену?
Много токенов становятся несколькими сводками
Небольшой набор latent-запросов читает длинный вход через cross-attention и собирает
Latent-запросы
- ДоКаждый факт хранится отдельно.
- ПослеНесколько фактов разделяют одну сводку.
- РискТочная деталь может исчезнуть при смешивании.
Каждая позиция остаётся, но хранится компактнее
Multi-head Latent Attention (MLA) сначала проецирует скрытое состояние токена в низкоразмерный
- Полное состояние
- Общий latent
- Восстановление для голов
Проекция в узкое пространство создаёт общий latent; отдельные проекции голов восстанавливают нужные
У каждого сжатия — своё узкое место
Сжатие полезно лишь пока узкое представление сохраняет информацию, необходимую будущим запросам. Но две оси сжатия теряют разные вещи.
- Сжатие позицийсокращает число оценок сходства; смешивает несколько токенов в одной сводке
- MLAуменьшает KV-кэш и обмен с памятью; ограничивает ширину представления каждой позиции
- Гибридможет экономить обе оси; усложняет обучение и восстановление деталей