В современной индустрии больших языковых моделей эпоха поиска «одной идеальной формулы внимания» окончательно завершилась. Сегодня производительность LLM на длинных контекстах определяется не математической абстракцией, а многоуровневым инженерным стеком: форматом хранения KV-кэша, алгоритмом выборки истории и низкоуровневой оптимизацией вычислений под конкретные ускорители.
Три главных барьера классического внимания
Полносвязный механизм Self-Attention требует сравнения каждого токена со всеми предшествующими. При масштабировании контекста архитекторы сталкиваются с тремя фундаментальными ограничениями:
- Дефицит пропускной способности памяти (Memory Bandwidth): на этапе генерации (decode) GPU тратит больше времени на вычитывание накопленных ключей и значений (KV cache) из видеопамяти HBM, чем на сами вычисления.
- Квадратичная сложность префилла: расчет матриц внимания на этапе первичной обработки запроса (prefill) растет как
O(n²), делая работу с длинными текстами вычислительно неподъемной. - Накладные расходы на передачу данных внутри чипа: классический Softmax вынуждает многократно пересылать промежуточные матрицы между регистрами вычислительных ядер и памятью ускорителя.
Разделение понятий: 4 уровня механизма Attention
Путаница в терминах часто возникает из-за смешивания разных уровней архитектуры. Практический стек внимания состоит из четырех независимых компонентов:
| Уровень | Назначение | Примеры технологий | Зона влияния |
|---|---|---|---|
| Архитектура голов | Способ генерации и структурирования векторов Q, K, V | MHA, 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)
Следующим шагом стало объединение компрессии и разреженности. Архитектура использует два взаимодополняющих механизма:
- CSA (Compressed Sparse Attention): предварительно объединяет соседние токены в агрегированные представления, уменьшая общую длину последовательности (например, 1M токенов сжимаются в 250K элементов), после чего индексатор выбирает top-k нужных блоков.
- 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-регистра.