该篇论文作者全部来自华为诺亚实验室,李文硕为第一作者,王云鹤、陈兴浩为通讯作者。相关团队近年来在ICML、CVPR、ICCV、ECCV等顶级会议上发表多篇代表作品,在高效大型语言模型、视觉模型等领域成果丰硕,并与知名高校及科研机构有着广泛的合作。
作为当前AI产业界和学术界当之无愧的“流量之王”,大模型吸引了大量学者和企业投入资源进行研究和训练。随着规模越来越大,系统性和工程性问题成为大模型训练中无法回避的问题。例如在154天的训练中,系统崩溃了466次,平均每2.78小时崩溃一次!

那么频繁的仓储巡检是非常有必要的,但是仓储巡检本身也是一个很大的工程。

meta 在加快存储检查点时间和提高存储频率方面做了很多努力,以对抗频繁的系统故障。然而频繁的存储也意味着大量的存储资源开销。其训练集群配备了 240PB 的 SSD 来应对这一挑战。仅存储成本一项就高达 1 亿元!

华为Noah的ExCP方法应运而生,为了应对巨大的存储开销,他们提出了极限压缩技术,可以对模型进行70倍无损压缩,大大降低训练时的存储开销。


目前该代码已经开源,并在2.0框架下发布。有人成功复现了问题中的结果。

方法也很有创新性,文章提到了两个重要的概念,一是利用训练中的残差信息,通过时间序列的信息稀疏性,达到更高的剪枝率;二是结合优化器和权重进行压缩,达到整体较高的压缩率。

具体方法
1. 检查点残差
在训练过程中,当前的参数可以看作是上一个 中存储的权重加上后续迭代过程中的梯度更新之和,这部分相对稀疏,包含的信息较少,因此压缩这个残差可以获得更好的压缩比。相比之下,优化器中存储的动量是梯度的一阶矩和二阶矩的滑动平均值,对于一阶矩,其默认的滑动平均值参数为 0.9,经过数百到数千次迭代后,它与上一个 中存储的内容已经没有紧密联系,因此优化器直接压缩自身的值,而不是残差。最终需要压缩的 表示为
2. 重量优化器动量关节压缩

现有的模型压缩相关工作一般只关注模型的推理性能,或者模型最终存储 的大小,而没有关注模型在整个训练过程中的存储空间开销。因此现有工作只对权重进行压缩,忽略了常见的优化器如 Adam 实际上存储了两倍于权重数量的动量。本工作一方面将两者一起压缩,显著提升了整体的压缩比;另一方面也利用了权重与优化器动量的相关性,进一步提升了彼此的压缩比。
权重剪枝:由于剪枝后的权重为残差值,优化器动量的二阶矩可以粗略地表示一段时间内权重残差值的变化,因此可以以优化器动量的二阶矩为指标来确定不同层的剪枝比例。剪枝策略如下公式所示
其中,W和分别表示权重和二阶矩。
优化器动量剪枝:对于动量剪枝,可以采用一阶矩作为剪枝的指标,论文中有简要的收敛性证明。同时,如果某个位置的权重已经剪枝,那么对应位置的优化器动量也要同步处理,因此剪枝策略如下公式所示

式中,表示一阶矩。
3. 整体压缩流程
整体压缩流程如图1所示,依次执行计算加权残差/联合压缩/非均匀量化/编码压缩等步骤,得到最终的压缩结果。

恢复完整文件的流程如2所示,解压后先从非均匀量化后存储的码本和下标中恢复出浮点结果,然后与参考权重(上一个的原始权重或者恢复后的重构权重)相加,即可得到完整文件。整个训练过程中恢复文件的流程如3所示,训练完成后只需要保存初始化权重的随机种子和每个处存储的压缩结果,然后依次恢复,即可得到完整序列,从而可以从中选择一个或多个继续进行训练/测试等。
实验结果
文章不仅对大型语言模型进行了评估,而且在ViT-L32等更大的视觉模型上也取得了良好的效果。

从消融实验中也可以看出,采用残差剪枝的方法,大大减少了剪枝带来的损失。

文章还给出了大型语言模型压缩前后问答的示例,可以看出压缩本身并不会损害模型的问答能力。



