Home / 大语言模型 / ALBERT:共享参数可以减少存储,但不会取消重复计算

025|ALBERT:共享参数可以减少存储,但不会取消重复计算

目录 · 上一篇 · 下一篇

论文:Zhenzhong Lan 等,ALBERT: A Lite BERT for Self-supervised Learning of Language Representations,2019 年预印本、ICLR 2020。原文 · PDF。本篇把参数压缩、计算和 SOP 目标分别讨论,避免把“更少参数”直接翻译为“同倍数更快”。

先接住前作的问题

BERT把词嵌入宽度与隐藏宽度绑定,并为每层保留独立参数,扩大模型时存储随之增加。本篇直接改造这一参数组织,并另外改变句段监督。Adapters减少的是每任务增量,与本篇基座参数压缩是平行资源问题。

五个前置概念

五个前置概念是矩阵分解、权重共享、重复计算、SOP 与资源口径。理解这些,才能判断“轻量”到底轻在何处,并避免被一个参数数字误导。

一、问题设定:词表、隐藏宽度与层数是否必须一起增加权重存储

词表大小为 VV、隐藏宽度为 HH 时,直接嵌入占 VHVH 参数;静态词项输入与上下文化计算却没有必然同维要求。将它分成 V×EV\times E 与 E×HE\times H,在 E≪HE\ll H 时可节约存储;另一条问题是多层是否一定要各存一份权重。

另一方面,堆叠 LL 层独立 Transformer 使参数随层数增长。

二、推导嵌入分解、跨层复用与句序监督

嵌入可以写为:

e(w)=EwP,Ew∈RE,P∈RE×H.e(w)=E_wP,\qquad E_w\in\mathbb R^E,\quad P\in\mathbb R^{E\times H}.

它把原本 VHVH 参数变为约 VE+EHVE+EH。跨层共享则写成 hl+1=Fθ(hl)h_{l+1}=F_\theta(h_l),相同 θ\theta 多次使用。共享注意力、共享前馈或全部共享是不同配置,论文分别分析,而非只有一种开关。

SOP 的正例来自同文档连续句段,负例将同样两段交换顺序。与随机取另一文档作为负例相比,主题更接近,模型较难只靠主题是否相同完成判断。它试图强调连贯顺序,但仍可能利用局部格式捷径,不能直接等同于篇章推理测验。

训练继续使用 MLM,并加入 SOP 二分类。这里同时有参数化和目标改变,因此最终成绩不能全归因于共享。必须阅读分解消融、共享消融与 SOP 消融各自的结果。

参数复用不等于只执行一次

嵌入分解把 V×HV\times H 改为 V×EV\times E 再乘 E×HE\times H,其中V是词表大小、H为隐藏宽度、E为较小的嵌入宽度。跨层共享则把 hl+1=Fθl(hl)h_{l+1}=F_{\theta_l}(h_l) 改为反复用同一个 FθF_\theta;这里 ll 是层号,FF 是一层变换,θl\theta_l 与 θ\theta 分别表示独立和共享参数;输入状态每次不同,所以深度仍存在。梯度在各次使用处汇入同一份参数,激活和顺序计算次数不会随参数副本一起消失。

教学算例。 V=30000,H=768,E=128V=30000,H=768,E=128 时,嵌入参数从23,040,000降到 3,840,000+98,304=3,938,3043,840,000+98,304=3,938,304。但若共享变换是 F(h)=2h+1F(h)=2h+1,两次执行得到 4h+34h+3,显然不是执行一次的 2h+12h+1。这个标量例也提醒,权重共享不保证迭代收敛到固定点。

构造 hl+1=tanh⁡(Whl)h_{l+1}=\tanh(Wh_l)。连续应用三次得到 tanh⁡(Wtanh⁡(Wtanh⁡(Wh0)))\tanh(W\tanh(W\tanh(Wh_0))),一般不等于一次应用。参数只存一份,但计算进行了三次,状态在每次迭代改变。

重复使用的矩阵怎样收到多处梯度

设两个深度位置共享同一个矩阵W,总损失对W的梯度是两个使用节点回传贡献的和。若各自贡献为2和−0.5,更新依据1.5,而不是挑最后一次的−0.5。共享省的是独立参数及其状态,前向仍执行两个位置;把循环只跑一次会改变函数,不能称作参数共享优化。

教法联系:Lilian Weng的How to Train Really Large Models on Many GPUs?。算例为本文自构。

三、分别记录共享范围、执行次数和MLM/SOP训练

构建低维词嵌入与到隐藏维的投影
按选定策略让多个Transformer层复用参数
构造连续句段对:保留顺序为正例、交换顺序为负例
按MLM协议破坏选中token
多次应用共享层,计算MLM与SOP损失
预训练后按下游任务微调
分别统计独立参数、实际FLOPs与任务成绩

四、把存储缩减、共享损失与句序收益分开读

层共享没有减少层应用次数,因此不能将参数缩减比例直接当作计算缩减比例。

参数表说明存储,共享消融说明代价,SOP表才检验句序任务;这些证据不能互相替代。

项目 原文范围
规模 BASE、LARGE、XLARGE、XXLARGE 等,不同隐藏宽度
参数比较 对应 BERT 与 ALBERT 配置,明确嵌入维与共享策略
任务 SQuAD、MNLI、SST、RACE、GLUE 等
消融 嵌入尺寸、共享范围、句段目标与训练时长
指标 任务分数与速度,参数数量单独报告
预算 更宽配置实际计算更大;1M与1.5M步等需区别

证据一,表1 与方法章节。ALBERT-LARGE 约 18M 参数,对应表列 BERT-LARGE 约 334M。它支持显著权重存储缩减,但不意味着其每层矩阵计算按同样比例减少。

证据二,第 4.5 节表4。全部共享在受控条件下可能损失任务分数,显示压缩有代价。最终大模型通过其他配置获得强结果,不应抹去这个消融中的真实下降。

证据三,第 4.6 节表5 的 SOP/NSP 分析。交换句序目标检验连贯性监督,相应任务收益支持设计动机,但主结果还包含宽度、训练和其他配方。单模型、集成与不同步数必须分开读;章节和表号对应原文修订版。

读表5先分清训练行与评测列。 None、NSP、SOP是使用哪一种句间预训练任务;左侧MLM/NSP/SOP列是内在任务表现,右侧才是下游任务。NSP行能把NSP本身做好,却没有同样提高SOP;SOP行的下游平均更高,也并非在每个任务列都最高。训练代理任务做得好,不自动等于迁移更好。

ALBERT的MLM、NSP及SOP预训练任务消融
实验结果表摘引:Zhenzhong Lan 等,2019,表5,PDF第8页;核对原文。原版权保留。

参数少与更快有时同向,有时相反:较小嵌入节省部分运算,而更宽隐藏层可能增加主要计算。系统是否受内存或算力限制,也会改变实际速度。评价时应使用明确硬件与吞吐,不能仅从模型文件大小推断。

SOP 教学例子是“先烧水,再泡茶”与交换顺序。两段词汇和主题相同,单靠判断是否都谈茶不够。但如果标点或首句惯用词泄露顺序,模型仍可能走捷径,所以更强验证需要控制这些线索。

五、参数少仍可能更宽、更慢或表达受限

如果共享变换在某些输入上逐渐收缩到相似状态,过深重复可能损失区分;若形成有用迭代,可能逐步精炼表示。是否发生这类行为需要隐藏状态和任务实验,不能因共享就断言模型等价于循环网络的所有性质。

限制是共享表达约束、重复计算、目标捷径以及超参数和训练预算。它没有证明压缩后所有能力无损,也没有给任意任务提供最佳宽深比。

修订版表6还给出墙钟条件的例子:BERT-large训练400k步约34小时、汇总分87.2,ALBERT-xxlarge训练125k步约32小时、88.7。它显示同时间比较与同参数比较会得出不同观察;这些数值只适用于该配置和硬件,不能转成普遍速度倍率。

六、把本篇机制再推进一步

1. 把共享层执行十二次改成执行一次再复制输出,是否保留ALBERT?

参考答案:没有。每次执行都以前一次状态为输入,非线性复合一般不同于一次输出的复制;共享只减少权重副本。还会改变梯度汇入同一参数的次数与路径,因此计算深度和参数存储必须分别记录。

七、区分基座压缩、任务增量与条件计算

参数共享减少副本但未消除训练状态与计算。ZeRO从状态所有权处理显存,LoRA从任务增量处理适配;它们可组合,却没有把重复层执行免费省掉。

自测与参考答案

1. 共享12层权重,是否意味着只执行一次Transformer层?

不是。相同参数被应用12次,各次输入状态不同,计算仍重复。存储减少与运算次数减少不是同一件事。

2. SOP 为什么比随机文档配对更难只靠主题完成?

正负例使用相同连续句段,仅交换顺序,主题基本相同。因此需要利用顺序或连贯线索。但局部格式仍可能提供捷径,不能自动保证深层篇章理解。

3. 最终模型更强,是否证明全部共享没有损失?

不能。最终结果还可能扩大宽度和训练预算;受控共享消融可以显示下降。应分别报告压缩代价与重新分配资源后的系统收益。