Механизм GQA в архитектуре Qwen3
Техническое объяснение механизма группированного внимания (GQA) в модели Qwen3-0.6B. Автор разбирает, почему GQA решает проблему пропускной способности памяти при декодировании, как конкретно настроено соотношение голов внимания (16 query / 8 key-value), и какие операции устраняют несоответствие размерностей между Q и K/V тензорами.
Разработчикам, работающим с Qwen3 или оптимизирующим трансформеры под ограничения памяти. Детальный разбор архитектурных решений показывает, как GQA балансирует между скоростью инференса и качеством модели на практике.
Это аннотация к авторской статье. Мы не публикуем и не пересказываем чужие тексты целиком — полная версия у автора.
О чём статья
- GQA — компромисс между MHA (многоголовым вниманием) и MQA (одноголовым): в Qwen3-0.6B 16 query-голов разделены на 8 групп, каждая использует общую пару K/V голов
- Bottleneck автогрессивной генерации — не вычисления, а загрузка KV-кэша из памяти; GQA снижает его размер без критической потери качества
- В Qwen3 head_dim = 128 явно задан в конфиге (не вычисляется как hidden_size/num_heads), что создаёт несовпадение размерностей: Q имеет 2048 измерений, K/V — 1024
- Функция repeat_kv дублирует каждую KV-голову для двух query-голов через expand+reshape; кэш хранит компактную 8-головую версию, расширение делается на каждом проходе
Артём Ковалёв
Medium #llm
Читать оригинал
Комментарии