# StreamingLLM: как заставить языковые модели работать бесконечно

Источник: https://www.youtube.com/watch?v=409tNlaByds
Канал: Yannic Kilcher
Опубликовано: 14.10.2023

---

## Решение проблемы контекстного окна: StreamingLLM и феномен Attention Sinks 💡
[[JUMP:00:00]]

Большие языковые модели (LLM) сталкиваются с фундаментальным ограничением: их способность к генерации текста ограничена размером контекстного окна, заложенным при обучении. Исследователи из MIT, Meta и Университета Карнеги — Меллон предложили элегантное и эффективное решение этой проблемы, получившее название **StreamingLLM**. В основе метода лежит открытие специфического свойства нейронных сетей, позволяющее моделям работать практически бесконечно долго без потери качества или необходимости дорогостоящих перевычислений.

### Проблема «бесконечного» текста
[[JUMP:01:20]]

При попытке использовать языковую модель за пределами её обучающего окна возникают серьёзные препятствия:

*   **Квадратичная сложность:** Стандартный механизм внимания (Attention) имеет квадратичную сложность по отношению к длине последовательности. Это приводит к тому, что при превышении лимита (например, 4000 или 8000 токенов) аппаратное обеспечение перестаёт справляться с нагрузкой.
*   **Ограниченность обучения:** Модели не обучались обрабатывать последовательности длиннее заданных, поэтому экстраполяция на длинные тексты приводит к резкому росту перплексии (метрики «неуверенности» модели).

Существующий метод **скользящего окна (sliding window attention)** позволяет ограничить «память» модели лишь последними токенами, но он страдает от критического недостатка: как только самый первый токен выходит за пределы окна, накопленные в KV-кэше (Key-Value Cache) вычисления становятся невалидными. Это вынуждает систему производить полную пересборку контекста на каждом шаге генерации, что крайне медленно.

### Открытие: Attention Sinks (Стоки внимания)
[[JUMP:10:45]]

Исследователи обнаружили, что нейросети склонны концентрировать значительную часть «энергии» внимания на первых токенах последовательности. Этот феномен получил название **Attention Sinks**.

По мнению авторов исследования, модель во время обучения привыкает к тому, что первый токен (позиция 0) всегда присутствует в контексте. При расчёте функции `softmax`, которая должна суммировать веса внимания до единицы, модель «сбрасывает» излишки внимания, которые не несут смысловой нагрузки, именно на эти начальные позиции.

*   Когда первый токен удаляется из окна, модель «теряет свой сток».
*   Результат: распределение внимания нарушается, и перплексия модели резко возрастает.

### Метод StreamingLLM: сохранение «стоков»
[[JUMP:18:47]]

Суть предложенного метода заключается в том, чтобы при использовании скользящего окна **всегда сохранять начальные токены** (Attention Sinks) в памяти, независимо от их удалённости от текущего токена.

1.  **Комбинированная стратегия:** Кэш состоит из двух частей: фиксированные токены «стоков» (начало) и «скользящее окно» из самых последних токенов.
2.  **Эффективность:** Этот подход позволяет использовать кэш KV, достигая ускорения до 22 раз по сравнению с методом полной перекомпутации.
3.  **Гибкость:** Эксперименты показали, что в качестве стоков могут выступать даже нейтральные символы (например, `newline`), если модель обучена воспринимать их как опорные точки.

### Практическое внедрение
[[JUMP:22:09]]

Авторы исследования предлагают способы адаптации моделей под этот метод:

*   **Zero-shot:** Даже без дообучения сохранение первых токенов заметно улучшает стабильность генерации.
*   **Дообучение (Fine-tuning):** Добавление специальных «нулевых» токенов в начало обучающих примеров позволяет модели осознанно использовать их как стоки. Это делает решение ещё более устойчивым, позволяя использовать всего один токен в качестве стока.

Янник Килчер отмечает, что данный метод является интуитивно понятным и легко интегрируемым в современные фреймворки для инференса. В заключение он проводит параллели с моделью **Big Bird**, которая также использовала концепцию глобального внимания к первым токенам, но подчеркивает, что StreamingLLM даёт новое понимание того, как именно модели управляют своим вниманием при работе с бесконечными последовательностями.