Книга: Инжиниринг искусственного интеллекта
Назад: РЕЗЮМЕ ГЛАВЫ 3
Дальше: 4.4 MTP - Multi‑Token Prediction (Предсказание нескольких токенов)

4.2 GQA - Grouped Query Attention (Групповое внимание по запросам)

Представьте библиотеку, где раньше у каждого читателя был личный библиотекарь (MHA). Это быстро, но требует 32 сотрудников. GQA группирует читателей по интересам: один библиотекарь на группу историков, другой - на группу физиков. Вместо 32 сотрудников - 4–8, а скорость почти не падает.



Применительно к модели

В архитектуре трансформера много "голов внимания" (query heads), каждая ищет свои связи между словами. В MHA у каждой головы - свой набор ключей (keys) и значений (values). В GQA головы делятся на группы, и внутри одной группы они используют общие ключи и значения. Это сильно экономит память и ускоряет инференс, особенно при больших контекстах, жертвуя совсем немного качеством.



Технический уровень

Компромисс между MHA (Multi‑Head Attention / многоголовое внимание) и MQA (Multi‑Query Attention / многовопросное внимание). Запросы (Q) группируются, каждая группа использует свои ключи и значения. Используют LLaMA 2/3, Mistral.















GQA уже сэкономил память, сгруппировав головы: один библиотекарь на несколько читателей. Но инженеры пошли дальше: а что, если не группировать, а сжать?

Вместо того чтобы хранить ключи и значения каждого токена в явном виде, можно превратить их в компактный код - латентный вектор. А когда понадобится, развернуть обратно.

Это Multihead Latent Attention (MLA) - следующий шаг эволюции, где мы жертвуем не качеством, а избыточностью. Если GQA даёт выигрыш в 2–4 раза по памяти, то MLA - уже в 20+ раз. Как это работает и почему DeepSeekV2 выбрал именно этот путь?





4.3 MLA - Multi‑head Latent Attention (Латентное многоголовое внимание)



Представьте, что вы ведёте секретный дневник, но у вас очень мало места.





Без MLA (обычный KV‑Cache)

Вы записываете каждую мысль полностью, слово в слово. Дневник быстро заполняется, и вам приходится носить с собой огромный том (много памяти).





С MLA

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

А когда вам нужно вспомнить детали, вы используете специальный декодер (встроенный в модель), который по этому краткому коду восстанавливает полную картину: кто был друг, где пили кофе, что именно вспоминали.

Главный секрет: код хранится в латентном пространстве - это не просто сокращение текста, а умное сжатие, где ключевые признаки смешаны так, что по ним можно точно восстановить исходный смысл.





Применительно к модели

В обычном KV‑Cache хранятся все ключи и значения для каждого токена - это очень много памяти.

В MLA ключи и значения сначала сжимаются в компактное латентное представление через специальную проекцию. Во время генерации хранится только этот «сжатый код», а когда нужно вычислить внимание - модель быстро «разворачивает» его обратно в полноценные ключи и значения с помощью небольшой learnable матрицы.

Это даёт колоссальную экономию памяти (например, в DeepSeek‑V2 сократили KV‑кэш в 20+ раз) без потери качества, потому что сжатие обучается вместе с моделью.





Технический уровень

Одна из реализаций подхода сжатия KV-кэша, применённая в GigaChat Ultra (аналогичные идеи используются в DeepSeek V2 и других моделях).

Вместо хранения K и V в явном виде они сжимаются в латентный вектор (latent vector) низкой размерности, из которого они могут быть восстановлены при необходимости. Это даёт многократную экономию памяти, особенно важную для длинных контекстов.

Размерность латентного вектора - это гиперпараметр, который выбирают инженеры. Типичные значения - от 128 до 512, тогда как исходная размерность K и V может достигать 4096 или даже больше. Сжатие в 8–32 раза достигается за счёт того, что латентное пространство обучается сохранять только ту информацию, которая действительно важна для вычисления внимания. Всё избыточное отбрасывается.













Мы сжали память, ускорили внимание, но генерация всё равно остаётся пошаговой: один токен за раз. Модель подобна писцу, который выводит каждую букву отдельно, хотя мог бы писать слогами.

А что, если научить её заглядывать вперёд? MultiToken Prediction меняет само правило игры: вместо того чтобы предсказывать один следующий токен, модель учится предсказывать сразу несколько.

Это не только ускоряет инференс (меньше шагов), но и улучшает качество обучения - модель вынуждена строить более долгосрочные планы. Посмотрим, как пазл собирается быстрее.





Назад: РЕЗЮМЕ ГЛАВЫ 3
Дальше: 4.4 MTP - Multi‑Token Prediction (Предсказание нескольких токенов)