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-сервер