ML Fundamentals

multi-head attention

Параллельное применение нескольких независимых механизмов attention для захвата различных паттернов в данных.

Что такое multi-head attention

Multi-head attention (MHA) — расширение механизма attention, в котором Q, K, V проектируются на несколько независимых «голов» (heads), каждая работает в своём подпространстве, а результаты конкатенируются.

MultiHead(Q, K, V) = Concat(head_1, ..., head_h) × W_O
head_i = Attention(Q × W_Qi, K × W_Ki, V × W_Vi)

Стандартно: d_head = d_model / n_heads. Например, для Llama 3 8B: d_model=4096, n_heads=32, d_head=128.

Зачем нужны несколько голов

Разные головы внимания могут специализироваться на разных типах зависимостей:

  • Одна голова — синтаксические связи (подлежащее-сказуемое)
  • Другая — кореференции (местоимение → существительное)
  • Третья — долгосрочные зависимости

На практике специализация происходит стихийно в процессе обучения.

MHA vs GQA vs MQA

Multi-Head Attention (MHA): каждая голова имеет собственные Q, K, V. Больше параметров, больше KV-cache.

Grouped Query Attention (GQA): несколько Q-голов делят одну K, V-пару. Компромисс между MHA и MQA. Используется в Llama 3, Mistral.

Multi-Query Attention (MQA): все Q-головы делят одну пару K, V. Минимальный KV-cache, небольшая потеря качества.

Архитектура KV-cache размер Качество
MHA n_heads × d_head Высокое
GQA (n_groups=8) n_groups × d_head Близкое к MHA
MQA 1 × d_head Немного ниже

Flash Attention

Реализация attention, оптимизированная для GPU: вычисляет attention за один проход без хранения полной матрицы QK^T. Снижает потребление памяти с O(n²) до O(n) и ускоряет вычисления.

Связанные термины

  • attention — базовый механизм
  • GQA — вариант с разделяемыми K, V
  • KV-cache — кеширование K, V голов при inference
  • трансформер — архитектура с multi-head attention

Готовы запустить GPU-задачу?

Запустить GPU-сервер