← На главную

Transformer: объединение Key и Value урезает KV cache вдвое с потерей 3,1%

04.06.2026 23:11 · hackernews

Исследователи Али Кайям и соавторы решили проверить, обязательно ли в Transformer хранить три отдельные проекции Query, Key и Value. Они систематически сравнили несколько упрощённых вариантов: Q-K=V (Key и Value делят одну проекцию), Q=K-V (общие Query и Key) и Q=K=V (единая проекция). Последние два дают симметричные карты внимания — для борьбы с этим авторы добавили асимметричные 2D-позиционные кодировки.

Эксперименты провели на синтетических задачах, на наборах изображений (MNIST, CIFAR, TinyImageNet, anomaly) и на языковом моделировании — моделями на 300 млн и 1,2 млрд параметров, обученными на 10 млрд токенов. Оказалось, что варианты с общей проекцией работают не хуже, а иногда и лучше оригинального QKV-трансформера. В языковом моделировании вариант Q-K=V сокращает KV cache на 50% — при этом perplexity ухудшается всего на 3,1%. Ещё важнее: это сокращение отлично сочетается с head sharing (GQA и MQA). Комбинация Q-K=V + GQA-4 даёт 87,5% снижения кэша, а Q-K=V + MQA — 96,9%. Это делает возможным практический инференс прямо на устройстве.

Авторы объясняют успех Q-K=V тем, что пространства представлений ключей и значений у трансформеров очень похожи, и внимание работает в low-rank-режиме. А вот Q=K-V ломает направленность внимания и качество падает. Исследователи подчёркивают, что общие проекции — это недооценённый вариант привязки весов (weight tying), который даёт прямой измеримый выигрыш в памяти, особенно полезный для edge-развёртывания. Код выложен в открытый доступ.

Читать оригинал →