DeepSeek元旦新作:更稳定的多通道残差连接

前言
残差连接几乎是现代深度学习的默认组件,它为模型建立了一条“信息高速公路”以确保深层网络的可训练性。近年来以 Hyper-Connections(HC)为代表的研究扩展了常见的残差连接范式,在不显著增加计算开销的前提下,提升了模型跨层信息容量。
然而 HC 破坏了残差连接原本简洁优雅的恒等映射特性,同时带来了不可忽视的存储开销。对此 DeepSeek 提出了 mHC,通过对 HC 中残差输出施加几何约束,以及算子和工程层面上的优化解决了这两点问题,使这一研究真正落地并走向规模化
-
更轻松易读的漫画版介绍:梁文峰爆改杰尼龟
前置工作介绍
传统 Transformer 的残差模块一般有两种拓扑结构:
- Pre-Norm
x’ = f(norm(x)) + x
输入 x 先做 LN 再过子层最后加回输入,每一层都是给上层输出加一些“小修补”,x 的存在让梯度始终存在一个兜底项,从而让训练过程稳定,即使模型很深也不会发生梯度问题。但再实践中经常出现“表示坍缩”,即模型在深层次上越来越依赖 x 这一“直通车”部分,从而让各层非常接近,多堆层没什么用
- Post-Norm
x’ = norm(x + f(x))
x 直接过子层,加上残差后再做 LN。让每层输入都做了一次幅度较大的更新后再 norm,这使信息变化更加显著,缓解了表示坍缩问题,但失去了保底梯度,加大了训练深层模型的难度

模型的拓扑结构是我们在构建之初便指定好的,输入项和残差项的融合比例也固定是 1:1,并且如上所述存在梯度消失与表示坍缩的跷跷板效应。于是我们很自然地想到:能不能让网络自己学 “连接图和连接强度”,而不是提前写死?
Hyper Connections 的方案便是把残差升级成“超连接矩阵”(Hyper hidden matrix):让每一层有多条残差流(输入 x 复制 n 份),并且用可学习的参数替换原本固定的直接求和(1:1 信息融合),同时加入额外的映射层来对齐维度和引入更多非线性

如此一来,我们就有了横向、纵向两类权重参数需要学习:
- 纵向: 保留旧信息 vs 接纳新信息的比例怎么定?

α、β 为可学习权重(静态参数),原作者还尝试了依赖于输入的动态权重,效果更好
- 横向: 不同残差流之间怎样交互融合?

此时模型所拥有自动调整连接强度的能力,实际上也是一种修改拓扑的能力。如下展示了通过控制连接强度实现的串行、并行拓扑,实际中完全可以学会更复杂的结构

尽管残差连接被扩充了 n 倍,但 Attention 模块这一计算开销大头没有动,作者在 7 B模型上实测下来计算量几乎没有变化
mHC 的优化动机
回到本文主角 mHC(Manifold-Constrained Hyper-Connections),它主要解决 HC 的两个缺陷:恒等映射被打破和存储开销问题
非恒等映射问题
如果将标准残差模的公式展开,可以得到一个关键的表达:x_n = x_m + Σf(x),其中 x_n、x_m 是深层、浅层信号,后者即是“恒等变换”:浅层信号不经任何变换,直接“旁路”到深层,永远存在一个梯度为单位矩阵的兜底项。而 HC 把残差结构改成“多流并行 + 可学习混合”后,这条“高速公路”便消失了——上面堆叠了一层又一层的权重矩阵

糟糕的是,这些权重矩阵是完全自由的,一旦它们偏离了恒等,信号就会被放大或衰减,层层堆叠下产生梯度问题

上图是作者复现 HC 工作时出现的 loss 不稳定问题。此外还追踪了不同层次下,残差流的前向、反向信号是怎么被放大的(最高3000倍)

存储开销问题
HC 与传统残差模块,在每个 token 上的内存开销理论分析如下:

可见 HC 使内存访问成本增加了【n*常数】倍;其次,在反向传播过程中还需要存更多中间激活,显存压力大,常常不得不 checkpoint;此外,在流水线并行时,设备通信量也按 n 倍增加,导致更大的气泡时间,降低了训练吞吐
“双随机矩阵”约束
残差连接的恒等映射特性,本质上就是一种“受约束”的变换(变换后的内容必须包含输入项),这种“参数不能随便取,只能落在满足某种几何/代数约束的集合里”的要求便是机器学习中所说的“流形约束”
“恒等映射”是一种流形,但它存在之前介绍过的跷跷板问题,所以我们需要寻找别的流形,实现自主学习拓扑与连接强度的同时,让学习成果在反复堆叠时不产生梯度问题
对此,作者的方案是,将残差流输出约束为“双随机矩阵”。它具有以下特性:
- 所有元素非负:Aij ≥ 0
- 每一行和为1:A·1 = 1
- 每一列和为1:1^T·A = 1
- 谱范数≤1(非扩张),降低梯度爆炸风险
- 乘法闭包:双随机矩阵相乘还是双随机矩阵,使跨层复合映射仍守恒
可见,它只会“重新分配信息”,不会“凭空放大或压缩信息”,是我们所需要的流形

通过Sinkhorn-Knopp 算法实现上述约束,具体步骤如下:
- 矩阵所有元素取指数,转换成正矩阵
- 迭代 20 次(近似双随机矩阵):
- 依次对每一列做归一化
- 依次对每一行做归一化
工程优化
mHC 基于 TileLang(国产算子框架)对原本的计算环节做了恰当的拆分与融合,从而减少内存读写。比如在合并多残差流时,需要完成 Hres 与输入 x 的映射转换、Hpost 与 layer 输出 f(x) 的映射转换,以及二者的相加,正常来说,需要依次计算两个信息,每个计算好后写入显存以供下一步读取;而 mHC 重写了一个算子来直接实现这 3 个步骤,避免中间结果落地存储,实现方式为:“每算完一小部分值,直接在寄存器中相加”;

另一方面,为了减少激活信息存储,mHC 用了当前常用的做法:对部分中间结果(特别是容易重算、算子便宜的)不保存高精度副本,反向传播时重新计算即可;
此外还根据 DualPipe 思路,尽可能让通信与计算过程产生 overlap,把通信量较大的宽残差计算放在更恰当的位置等

实验结果
在 27B 模型上测试发现,mHC 能有效缓解 HC 的训练不稳定,最终相对 baseline 的 loss 下降 0.021,梯度范数曲线也比 HC 稳得多,接近 baseline 的平稳水平

下游任务方面,在 8 个 benchmark 上 mHC 整体更强

可扩展性方面,mHC 的优势在更高计算预算下仍能维持,仅轻微衰减,可见此工作并非仅仅是小模型上的“奇技淫巧”,而是真正能落地质变的基础架构改进方案


启发
- 把“稳定性”当成几何约束来设计,而不是靠调参硬扛
- 宏观拓扑(macro-architecture)可能是LLM研究下一阶段的主战场
- 除了“双随机矩阵”,针对不同目标的多样流形约束尚待探索
更多推荐



所有评论(0)