Hacker News Digest

Тег: #bert

Постов: 1

How attention sinks keep language models stable (hanlab.mit.edu)

Почему модели ломаются на длинных диалогах
При удалении старых токенов для экономии памяти модель начинает выдавать бессмыслицу. Причина — «attention sinks»: первые токены собирают избыточное внимание, потому что softmax требует, чтобы веса суммировались в 1.

StreamingLLM
Оставляем первые 4 токена навсегда, остальное сдвигаем окном. Работает до 4 млн токенов; уже в HuggingFace, TensorRT-LLM и новых OpenAI-моделях.

OpenAI и attention sinks
В GPT-OSS-20B/120B добавлен обучаемый скаляр в softmax каждой головы, позволяющий «не обращать внимания» — прямое наследие StreamingLLM.

История открытия
Летом 2023 в Meta я решал задачу: как продолжать диалог длиннее обучающего окна. Казалось, что достаточно скользящего окна, но при удалении первых токенов перплексия взлетала до небес.

Визуализация
Внимание Llama-2 постоянно «сливается» в начало. Эти токены-«стоки» не передают внимание дальше, а лишь поглощают его, поэтому их нельзя выбрасывать.

Математика
Softmax обязывает каждую голову распределить ровно 1.0 внимания. Если нет полезного контекста, весь «бюджет» уходит в первые позиции, где чуть выше базовые скоры.

by pr337h4m • 08 августа 2025 г. в 08:53 • 194 points

ОригиналHN

#attention-sinks#language-models#streamingllm#openai#bert#vit#llm#softmax#huggingface#tensorrt-llm

Комментарии (31)

  • Участники обсуждают «attention sinks» — токены-«стоки», на которые модель направляет избыточное внимание, чтобы не «размывать» полезную информацию.
  • Это поведение замечено и в BERT ([SEP], точки), и в ViT (фоновые патчи), и в GPT-OSS, где вместо добавления единицы к знаменателю обучают отдельный логит на каждую голову.
  • Синк-токены работают как «pressure valve», предотвращая over-mixing и давая модели «нулевой» вектор для случаев «не найдено».
  • Пользователи замечают, что первые слова («Hello», «Please») или CLS-подобные глобальные токены могут непреднамеренно служить такими стоками.
  • FOSS-реализации уже поддерживают приём: llama.cpp принял PR, а Diff-Transformer и другие идеи быстро переиспользуются.