← На главную

Kimi Delta Attention заменяет линейное внимание в Qwen и Kimi

28.07.2026 16:02 · hackernews

Исходная точка — обычное линейное внимание, которое заменяет softmax на голое скалярное произведение и перегруппировывает вычисления так, чтобы хранить не все ключи и значения, а одну фиксированную матрицу состояния S_t = сумма внешних произведений |v_i⟩⟨k_i| для всех предыдущих токенов. Выход получается умножением S_t на запрос: |o_t⟩ = S_t|q_t⟩. Это линейно по длине последовательности, но простой аддитивный update S_t = S_{t-1} + |v_t⟩⟨k_t| плохо подходит на роль ассоциативной памяти: он добавляет значение, а не заменяет его, и страдает от интерференции между неортогональными ключами.

DeltaNet исправляет это через дельта-правило. Перед записью память опрашивают тем же ключом: |v̂_t⟩ = S_{t-1}|k_t⟩. Затем вычисляют ошибку предсказания |e_t⟩ = β_t(|v_t⟩ – |v̂_t⟩) и записывают только её: S_t = S_{t-1} + |e_t⟩⟨k_t|. При β_t=1 повторный запрос того же ключа сразу выдаёт целевое значение, а для ортогональных направлений состояние не меняется. Этот же update получается из одного шага градиентного спуска по квадратичной ошибке, что даёт β_t роль шага обучения. В матричной форме S_t = S_{t-1}(I – β_t|k_t⟩⟨k_t|) + β_t|v_t⟩⟨k_t| – частичное стирание вдоль текущего ключа и добавление нового.

Следующая проблема — неограниченное время жизни старых записей. Gated DeltaNet добавляет скалярный гейт забывания α_t, умножая всю матрицу состояния перед предсказанием: S̃_t = α_t S_{t-1}. Порядок принципиален: сначала забыть, затем предсказать по остатку, исправить ошибку и записать. Это даёт глобальное экспоненциальное затухание.

Kimi Delta Attention (KDA) доводит идею до покомпонентного управления. Вместо скаляра α_t вводится вектор α_t, упакованный в диагональную матрицу D_t = Diag(α_t). Забывание превращается в S̃_t = S_{t-1} D_t, применяя свой коэффициент к каждому ключевому каналу (столбцу матрицы) отдельно. Остальной цикл — тот же дельта-шаг. В пространстве ключей переходный оператор становится A_t = D_t – β_t D_t|k_t⟩⟨k_t|, то есть диагональ минус ранг-1, или DPLR-структура. Полная рекурсия: забыть поканально, предсказать, исправить, записать, прочитать с масштабированием d_k^{-1/2}.

С вычислительной стороны у KDA два основных режима. Для авторегрессионного декодирования — fused recurrent режим, где одно Triton-ядро обрабатывает последовательность токен за токеном, обновляя тайлы транспонированного состояния d_k × d_v независимо по головам и батчам. Для обучения и длинных контекстов — chunkwise режим, разбивающий последовательность на чанки и выражающий внутричанковые переходы через матричные произведения с предварительно насчитанными A-матрицами, что утилизирует тензорные ядра. Описанные семейства DeltaNet применяются в последних моделях Qwen и Kimi.

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