Добавить в корзинуПозвонить
Найти в Дзене

🌀 Attention Sinks — маленькая деталь, которая спасает большие языковые модели

В разработке LLM часто оказывается, что предел их возможностей упирается не в архитектуру или параметры, а в неожиданные эффекты «изнутри» механизма внимания. История с attention sinks — как раз из таких случаев. Любая модель-трансформер хранит в KV-кэше ключи и значения для всех токенов в контексте. Чтобы экономить память и ускорять инференс, инженеры применяют скользящее окно: старые токены выбрасываются, остаются только недавние. И вот сюрприз: стоит удалить самые первые токены (часто это [BOS], пробел или артикль), и модель моментально «сходит с ума» — перплексия взлетает, а текст превращается в белый шум. Исследователи заметили, что первые несколько токенов забирают на себя непропорционально много внимания почти во всех слоях. Это не случайность: softmax в механизме внимания заставляет распределять вес на все позиции, даже если они не нужны. Убираем их — рушится баланс в softmax, сеть теряет стабильность. Вместо полного скользящего окна — гибрид: Результат: LLaMA и другие модели д
Оглавление
Схема работы attention sinks — первые токены сохраняются в кэше, softmax распределяет внимание, а «ведро» attention sink стабилизирует генерацию, позволяя моделям обрабатывать миллионы токенов без потери качества.
Схема работы attention sinks — первые токены сохраняются в кэше, softmax распределяет внимание, а «ведро» attention sink стабилизирует генерацию, позволяя моделям обрабатывать миллионы токенов без потери качества.

В разработке LLM часто оказывается, что предел их возможностей упирается не в архитектуру или параметры, а в неожиданные эффекты «изнутри» механизма внимания. История с attention sinks — как раз из таких случаев.

🧩 Проблема длинных контекстов

Любая модель-трансформер хранит в KV-кэше ключи и значения для всех токенов в контексте. Чтобы экономить память и ускорять инференс, инженеры применяют скользящее окно: старые токены выбрасываются, остаются только недавние.

И вот сюрприз: стоит удалить самые первые токены (часто это [BOS], пробел или артикль), и модель моментально «сходит с ума» — перплексия взлетает, а текст превращается в белый шум.

🔍 Открытие MIT Han Lab

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

  • Когда «нет куда смотреть», модель «паркует» внимание на токенах, которые видит всегда.
  • Эти токены работают как «attention sinks» — дренаж или клапан для избыточного внимания.

Убираем их — рушится баланс в softmax, сеть теряет стабильность.

💡 Решение StreamingLLM

Вместо полного скользящего окна — гибрид:

  • 🛑 Первые 4 токена всегда сохраняются в кэше.
  • 🔄 Остальные обрабатываются обычным sliding window.

Результат: LLaMA и другие модели держат стабильное качество на 4+ млн токенов вместо пары тысяч. HuggingFace, NVIDIA TensorRT-LLM и OpenAI уже внедрили этот подход.

🧪 Почему именно четыре?

Эксперименты с дообучением показали:

  • Модель, где при обучении добавлен специальный [SINK]-токен, стабилизируется даже с одним таким токеном.
  • Без него требуются несколько «переиспользованных» содержательных токенов (в среднем 4), чтобы удерживать баланс внимания.

⚙ Альтернативы и развитие идеи

  • OpenAI выбрала параметрически экономичный вариант: вместо токена — один обучаемый скаляр на каждую голову внимания.
  • Sun et al. предложили learnable KV-biases, а CushionCache — преднамеренные sink-префиксы, которые помогают ещё и при квантизации, сглаживая пики активаций.

Любопытный побочный эффект: встроенные attention sinks могут быть одной из причин, почему OpenAI удаётся агрессивно квантизировать свои модели до 4 бит без потери качества.

📌 Мой взгляд

Это пример того, как инженерная мелочь становится архитектурным паттерном. Поняв поведение attention sinks, мы получили:

  • 📈 Устойчивый стриминг без деградации качества.
  • 🧮 Возможность работы с экстремально длинными контекстами.
  • 🛠 Новые приёмы для оптимизации и квантизации моделей.

И всё это — ценой пары токенов в кэше или одной константы в коде.

📚 Источники и ссылки: