HAVE AI NEWS HAVE AI NEWS
tg subscribe
Модели

Эволюция Attention в LLM: как инженеры разгоняют контекст до миллионов токенов

Эволюция Attention в LLM: как инженеры разгоняют контекст до миллионов токенов

Разбираем, почему эпоха чистого Multi-Head Attention ушла в прошлое и как связка из MLA, обучаемого разрежения, сжатия истории и FlashAttention 4 позволяет моделям эффективно обрабатывать сверхдлинные контексты.

В современной индустрии больших языковых моделей эпоха поиска «одной идеальной формулы внимания» окончательно завершилась. Сегодня производительность LLM на длинных контекстах определяется не математической абстракцией, а многоуровневым инженерным стеком: форматом хранения KV-кэша, алгоритмом выборки истории и низкоуровневой оптимизацией вычислений под конкретные ускорители.

Три главных барьера классического внимания

Полносвязный механизм Self-Attention требует сравнения каждого токена со всеми предшествующими. При масштабировании контекста архитекторы сталкиваются с тремя фундаментальными ограничениями:

  • Дефицит пропускной способности памяти (Memory Bandwidth): на этапе генерации (decode) GPU тратит больше времени на вычитывание накопленных ключей и значений (KV cache) из видеопамяти HBM, чем на сами вычисления.
  • Квадратичная сложность префилла: расчет матриц внимания на этапе первичной обработки запроса (prefill) растет как O(n²), делая работу с длинными текстами вычислительно неподъемной.
  • Накладные расходы на передачу данных внутри чипа: классический Softmax вынуждает многократно пересылать промежуточные матрицы между регистрами вычислительных ядер и памятью ускорителя.

Разделение понятий: 4 уровня механизма Attention

Путаница в терминах часто возникает из-за смешивания разных уровней архитектуры. Практический стек внимания состоит из четырех независимых компонентов:

УровеньНазначениеПримеры технологийЗона влияния
Архитектура головСпособ генерации и структурирования векторов Q, K, VMHA, MQA, GQA, MLAОбъем KV-кэша, нагрузка на шину памяти при генерации
Паттерн связейОпределение подмножества токенов, доступных текущему шагуFull, Sliding Window, Block Sparse, Learned Top-kВычислительная сложность префилла и длинного контекста
GPU-ядра (Kernels)Аппаратная реализация математических операцийFlashAttention, cuDNN SDPA, FlashInferФактический TFLOPS, задержка (TTFT/TPOT), утилизация HBM
ПозиционированиеИнъекция информации о взаимном порядке токеновRoPE, ALiBi, NoPEСпособность к экстраполяции за пределы окна обучения

Эволюция KV-кэша: от MHA к MLA

Классический Multi-Head Attention (MHA) выделяет уникальные наборы Q, K и V для каждой головы внимания. Это гарантирует максимальную выразительность модели, но приводит к катастрофическому расходу памяти. Для последовательности в 128K токенов на 32-слойной модели в формате BF16 размер кэша достигает десятков гигабайт на один запрос.

Для решения этой проблемы индустрия последовательно внедрила несколько подходов:

  • MQA (Multi-Query Attention): объединяет все query-головы вокруг единственной пары K и V. Это кардинально снижает требования к памяти, но нередко приводит к деградации качества при сложных рассуждениях.
  • GQA (Grouped-Query Attention): делит query-головы на группы с общими KV-проекциями (например, 4 query на 1 KV). GQA стал стандартом индустрии, сохраняя выразительность MHA при расходе памяти уровня MQA.
  • MLA (Multi-Head Latent Attention): подход, популяризированный архитектурой DeepSeek-V2. Вместо сохранения сырых проекций модель сжимает KV-состояние в компактный низкоранговый скрытый вектор (latent vector), отделяя позиционную составляющую RoPE от контентной. В тестах DeepSeek это позволило снизить размер KV-кэша на 93,3% и увеличить пропускную способность генерации в 5,76 раза.

Разреженность и сжатие: как работают с миллионами токенов

Если сокращение KV-голов решает проблему нагрузки на память при декодировании, то оптимизация паттернов внимания снижает вычислительную сложность O(n²) на префилле.

Обучаемая разреженность (Learned Sparse Attention)

В отличие от фиксированного скользящего окна (Sliding Window), адаптивное разреженное внимание использует легковесный индексатор (indexer), который находит семантически важные фрагменты контекста:

  • MiniMax Sparse Attention (MSA): алгоритм делит входящий поток на блоки по 128 токенов и выбирает 16 наиболее релевантных блоков для каждой группы GQA. Основной расчет внимания выполняется всего по 2048 токенам независимо от размера входящего промпта. В эксперименте на 109B MoE-модели с контекстом 1M это дало сокращение вычислений attention в 28,4 раза, ускорив префилл в 14,2 раза, а декод — в 7,6 раза на чипах H800.

Гибрид сжатия и фильтрации (DeepSeek-V4)

Следующим шагом стало объединение компрессии и разреженности. Архитектура использует два взаимодополняющих механизма:

  1. CSA (Compressed Sparse Attention): предварительно объединяет соседние токены в агрегированные представления, уменьшая общую длину последовательности (например, 1M токенов сжимаются в 250K элементов), после чего индексатор выбирает top-k нужных блоков.
  2. HCA (Hierarchical Compressed Attention): применяет агрессивное сжатие (до 128 токенов в один вектор), поверх которого запускается сплошной dense attention глобального саммари, параллельно сохраняя точное локальное окно недавних токенов.

Подобный подход позволяет модели DeepSeek-V4-Pro на контексте 1M использовать лишь 10% KV-кэша и 27% FLOPs на токен относительно DeepSeek-V3.2.

Линейное внимание и рекуррентные гибриды

Полноценный отказ от квадратичной сложности предлагают модели с линейным вниманием и селективными пространствами состояний (Mamba, Kimi Delta Attention). Они сжимают всю историю в матрицу фиксированного размера (сложность O(1) по памяти на шаг генерации).

Однако чисто рекуррентные архитектуры страдают от постепенной потери мелких деталей («иголки в стоге сена»). Наиболее жизнеспособным направлением стал гибридный дизайн: основная масса слоев использует линейное или рекуррентное обновление состояния, а периодические слои с dense- или MLA-вниманием восстанавливают возможность точного поиска по контексту.

Аппаратные ядра: эволюция FlashAttention

Оптимизация на уровне GPU-ядер (FlashAttention) не меняет математику связей между токенами. Ее задача — минимизировать чтение и запись в медленную память HBM за счет блочной обработки в быстрой памяти SRAM чипа.

  • FlashAttention-2: оптимизировал распределение потоков и параллелизм внутри потоковых мультипроцессоров (SM).
  • FlashAttention-3: адаптирован под архитектуру NVIDIA Hopper с акцентом на асинхронные вычисления и операции в FP8.
  • FlashAttention-4: переработан под NVIDIA Blackwell (B200/GB200). Благодаря использованию Tensor Memory и укрупненных блоков на BF16 достигается производительность до 1613 TFLOPS (~71% от теоретического максимума), что в 1,3 раза превосходит cuDNN 9.13 и в 2,7 раза — Triton.

Сводная таблица архитектур внимания

МеханизмКлючевой принципОбъем KV-кэшаСложность префиллаСтатус в индустрии
MHAИндивидуальные Q, K, V на каждую головуМаксимальныйO(n²)Устаревающий стандарт
GQAГруппировка query-голов вокруг общих KVУмеренныйO(n²)Отраслевой базовый стандарт
MLAНизкоранговое латентное сжатие KVМинимальныйO(n²) (при dense-паттерне)Продакшн-решение (DeepSeek)
Learned Sparse (MSA)Индексатор выбирает релевантные блоки историиСтандартный (как у GQA)Сниженная (до O(nk))Активное внедрение
CSA + HCAМногоуровневое сжатие токенов + разреженный поискЭкстремально низкийГибридная (sparse + summary)Передовой frontier-стек
Linear / SSM HybridФиксированное скрытое состояние + редкие слои вниманияO(1) на шагЛинейная O(n)Перспективное направление

Практическое руководство по выбору стека

Сценарий примененияРекомендуемый стекОбоснование
Чат-боты и ассистенты (контекст до 128K)GQA + FlashAttention/SDPAМинимальный инженерный риск, широкая поддержка в inference-движках (vLLM, SGLang).
Высокая нагрузка и длинная генерацияMLAСнимает узкое горлышко по пропускной способности памяти при высоком параллелизме (batching).
Анализ репозиториев и документов (256K+)MSA / Learned SparseОграничивает вычислительный бюджет активного внимания без потери точности retrieval.
Сверхдлинный контекст (1M+ токенов)CSA + HCA гибридыСнижает как требования к объему физической памяти, так и объем фактически читаемых токенов.

Современный инференс LLM — это всегда поиск баланса между качеством удержания контекста, аппаратными ограничениями конкретного чипа и пропускной способностью стека. Побеждает не тот, кто предложил формулу с наименьшей асимптотикой на бумаге, а тот, чей стек согласованно работает от алгоритма до GPU-регистра.

Автор: AquaDll50 минут назад

Источник: habr.com