GitHub — MoonshotAI/Attention-Residuals · GitHub


━━━━━━━━━━━━━━━━━━━━━━━━━━━

Внимание Остатки

━━━━━━━━━━━━━━━━━━━━━━━━━━━


Бумага |
arXiv |
Обзор |
Результаты |
Цитирование

(а) Стандартные остатки с равномерным накоплением добавок. (b) Full AttnRes: каждый уровень обрабатывает все предыдущие выходные данные. (c) Block AttnRes: слои группируются в блоки, сокращая объем памяти с O(Ld) до O(Nd).


Это официальный репозиторий для Остатки внимания (AttnRes)быстрая замена стандартных остаточных соединений в Transformers, которая позволяет каждому слою выборочно агрегировать более ранние представления посредством выученного, зависящего от входных данных внимания по глубине.

Стандартные остаточные соединения аккумулируют все выходные данные слоя с фиксированными единичными весами. По мере роста глубины эта равномерная агрегация ослабляет вклад каждого слоя и приводит к неограниченному росту величин скрытых состояний — хорошо известная проблема PreNorm.

AttnRes заменяет это фиксированное накопление вниманием softmax над выходными данными предыдущего слоя:

$$mathbf{h}_l = sum_{i=0}^{l-1} alpha_{i to l} cdot mathbf{v}_i$$

где веса $alpha_{i to l}$ вычисляются с помощью одного изученного псевдозапроса $mathbf{w}_l in mathbb{R}^d$ за слой. Это дает каждому слою выборочный доступ с учетом содержимого ко всем предыдущим представлениям.

Полный AttnRes прост, но требует памяти O(Ld) в масштабе. Блокировать AttnRes разделяет слои на N блоков, накапливает внутри каждого блока стандартные остатки и обращает внимание только на представления на уровне блоков. Имея ~8 блоков, он восстанавливает большую часть выигрыша Full AttnRes, выступая в качестве практической замены с минимальными накладными расходами.

Псевдокод в стиле PyTorch
def block_attn_res(blocks: list[Tensor], partial_block: Tensor, proj: Linear, norm: RMSNorm) -> Tensor: """ Inter-block attention: attend over block reps + partial sum. blocks: N tensors of shape [B, T, D]: completed block representations for each previous block partial_block: [B, T, D]: intra-block partial sum (b_n^i) """ V = torch.stack(blocks + [partial_block]) # [N+1, B, T, D] K = norm(V) logits = torch.einsum('d, n b t d -> n b t', proj.weight.squeeze(), K) h = torch.einsum('n b t, n b t d -> b t d', logits.softmax(0), V) return h def forward(self, blocks: list[Tensor], hidden_states: Tensor) -> tuple[list[Tensor], Tensor]: partial_block = hidden_states # apply block attnres before attn # blocks already include token embedding h = block_attn_res(blocks, partial_block, self.attn_res_proj, self.attn_res_norm) # if reaches block boundary, start new block # block_size counts ATTN + MLP; each transformer layer has 2 if self.layer_number % (self.block_size // 2) == 0: blocks.append(partial_block) partial_block = None # self-attention layer attn_out = self.attn(self.attn_norm(h)) partial_block = partial_block + attn_out if partial_block is not None else attn_out # apply block attnres before MLP h = block_attn_res(blocks, partial_block, self.mlp_res_proj, self.mlp_res_norm) # MLP layer mlp_out = self.mlp(self.mlp_norm(h)) partial_block = partial_block + mlp_out return blocks, partial_block

AttnRes стабильно превосходит базовый уровень при всех вычислительных бюджетах. Блок AttnRes соответствует потере базовой линии, обученной с помощью В 1,25 раза больше вычислений.

Производительность нисходящего потока (активирован Kimi Linear 48B/3B, токены 1,4T)

Категория Контрольный показатель Базовый уровень AttnRes
Общий ММЛУ 73,5 74,6
GPQA-Алмаз 36,9 44,4
BBH 76,3 78,0
TriviaQA 69,9 71,8
Математика и код Математика 53,5 57,1
HumanEval 59,1 62,2
МБПП 72,0 73,9
китайский КММЛУ 82,0 82,9
C-Eval 79,6 82,5

AttnRes улучшается по всем направлениям, причем наибольший прирост достигается в многоэтапном рассуждении (+7,5 на GPQA-Diamond) и генерации кода (+3,1 на HumanEval).

AttnRes смягчает разбавление PreNorm: выходные величины остаются ограниченными по глубине, а нормы градиента распределяются более равномерно по слоям.

Если наша работа оказалась для вас полезной, дайте ссылку

@misc{chen2026attnres,
  title         = {Attention Residuals},
  author        = {Kimi Team  and Chen, Guangyu  and Zhang, Yu  and Su, Jianlin  and Xu, Weixin  and Pan, Siyuan  and Wang, Yaoyu  and Wang, Yucheng  and Chen, Guanduo  and Yin, Bohong  and Chen, Yutian  and Yan, Junjie  and Wei, Ming  and Zhang, Y.  and Meng, Fanqing  and Hong, Chao  and Xie, Xiaotong  and Liu, Shaowei  and Lu, Enzhe  and Tai, Yunpeng  and Chen, Yanru  and Men, Xin  and Guo, Haiqing  and Charles, Y.  and Lu, Haoyu  and Sui, Lin  and Zhu, Jinguo  and Zhou, Zaida  and He, Weiran  and Huang, Weixiao  and Xu, Xinran  and Wang, Yuzhi  and Lai, Guokun  and Du, Yulun  and Wu, Yuxin  and Yang, Zhilin  and Zhou, Xinyu},
  year          = {2026},
  archiveprefix = {arXiv},
  eprint        = {2603.15031},
  primaryclass  = {cs.CL}
}

2026-03-20 18:23:00


1774033591
#GitHub #MoonshotAIAttentionResiduals #GitHub

Читайте также

Read more:  Жюль: агент по кодированию ИИ с интеграцией GitHub

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.