Length-Adaptive Transformer: Train Once with Length Drop, Use Anytime with Search 解读
2026/7/21 7:42:21 网站建设 项目流程

一、论文基本信息

论文题目:Length-Adaptive Transformer: Train Once with Length Drop, Use Anytime with Search

作者:Gyuwan Kim、Kyunghyun Cho

发表会议:ACL-IJCNLP 2021 Long Papers

官方代码:clovaai/length-adaptive-transformer,官方仓库说明这是该论文的 PyTorch 实现。(GitHub)

这篇论文可以看作是PoWER-BERT 的进一步扩展。PoWER-BERT 的问题是:如果要适配不同推理预算,通常需要为不同预算训练不同模型。Length-Adaptive Transformer 的目标是:只训练一次模型,然后推理时根据不同计算预算搜索不同长度配置,不需要重新训练或微调。论文摘要也明确说,它通过LengthDrop训练一个可以适配多种推理场景的模型,再用多目标进化搜索寻找最优 length configuration。(ACL Anthology)


二、论文要解决的问题

PoWER-BERT 已经证明:BERT 推理时不一定每层都需要处理完整序列,逐层删除冗余 word-vectors 可以加速推理。

但是 PoWER-BERT 有两个明显限制。

第一,它需要为不同计算预算训练不同模型。
比如你想要 2× 加速、3× 加速、4× 加速,可能要分别训练不同的 retention configuration。这在真实部署中不方便,因为设备算力、延迟要求、batch size 都可能变化。

第二,PoWER-BERT 主要适合句级分类任务。
因为它会直接删除中间层 token 表示,最终只保留部分 token。如果任务需要每个 token 的最终表示,例如 SQuAD 这种 span-based question answering,直接删除 token 就会有问题。论文也指出,原始 PoWER-BERT 因为逐层消除 word-vectors,所以不适合需要完整 token-level hidden sequence 的任务。(ACL Anthology)

所以这篇论文要解决的问题是:

能不能训练一个模型,让它在推理时支持任意长度配置、任意计算预算,并且还能用于 token-level 任务?


三、核心思想

这篇论文的核心思想可以概括为:

训练时随机改变每层保留的 token 数量,让模型适应各种长度配置;推理时用进化搜索找到满足预算的最优长度配置。

它包含三个关键部分:

第一,LengthDrop。
训练时随机采样每层保留多少 word-vectors,让模型见过各种序列长度逐层缩短的情况。

第二,Drop-and-Restore。
中间层暂时丢掉一些 word-vectors 以减少计算,但到最后一层前把它们恢复回来,从而支持 SQuAD 这类 token-level 任务。

第三,Evolutionary Search。
训练完成后,不再重新训练模型,而是搜索一组每层保留 token 数量的配置,在给定 FLOPs 或延迟预算下尽可能提升精度。

一句话说:

PoWER-BERT 是“给定一个预算,训练一个删 token 模型”。

Length-Adaptive Transformer 是“训练一次,搜索出多个预算下可用的删 token 子模型”。


四、它剪的是什么?

它剪的不是参数,而是中间层的 token 表示长度

也就是说,它不会删除:

attention head。

FFN neuron。

Transformer layer。

模型权重。

它删除的是:

某些 token 在中间层继续向后计算的资格。

更准确地说,它做的是sequence length pruning / token-level pruning / word-vector dropping

例如原始 BERT 每一层都处理 128 个 token。Length-Adaptive Transformer 可以让前几层处理较多 token,后几层处理较少 token。这样后续 self-attention 和 FFN 的计算量都会下降。

所以它和你前面看的方法区别很明显:

Movement Pruning:剪权重。

Head Pruning:剪 attention heads。

LayerDrop / Poor Man’s BERT:剪层。

CoFi:剪 MHA / FFN / heads / dimensions。

PoWER-BERT 和 Length-Adaptive Transformer:剪中间层 token 表示。


五、LengthDrop:训练一次适配多种长度

LengthDrop 是这篇论文最核心的训练机制。

它的作用是:让模型在训练阶段随机经历不同的长度压缩路径。

假设输入长度是 128。训练时模型不会总是固定每层保留同样数量的 token,而是随机采样一个 length configuration,例如:

128 → 100 → 80 → 64 → 48 → 32

或者:

128 → 115 → 100 → 90 → 75 → 60

不同 mini-batch 可能对应不同的长度配置。论文中明确说,LengthDrop 在每次 SGD 更新前随机生成一个 length configuration,并把 Length-Adaptive Transformer 看成由一个 full model 和很多不同长度配置的 sub-models 组成。(ACL Anthology)

这样训练的结果是:

模型不会只适应一种 token 删除比例。

模型会对多种长度配置都比较鲁棒。

推理时可以直接抽取不同长度配置,不需要重新 fine-tuning。

这和 LayerDrop 的思想很像,只不过 LayerDrop 随机丢的是Transformer layer,LengthDrop 随机缩短的是sequence length


六、为什么还要加入 LayerDrop、Sandwich Rule 和 Inplace Distillation?

论文发现,单纯用 LengthDrop 训练并不稳定,所以借鉴了可伸缩网络训练中的几个技巧。

6.1 LayerDrop

由于 word-vector 可能在中间层被 drop,然后最后又被 restore,这意味着某些 token 会“跳过”若干层。为了让模型适应这种跳层行为,作者加入了 LayerDrop,让模型训练时也随机跳过 layer。论文说明,LayerDrop 可以鼓励每个 word-vector 对跳过任意数量层更加鲁棒。(ACL Anthology)

6.2 Sandwich Rule

每次训练不只训练一个随机子模型,而是同时训练:

完整模型。

最小子模型。

若干随机长度子模型。

这和 US-Net 里的 Sandwich Rule 类似。它的意义是:保证最大模型和最小模型都被充分训练,同时随机子模型覆盖中间预算。

6.3 Inplace Distillation

完整模型作为 teacher,小长度子模型作为 student。小子模型不只是学真实标签,还要模仿完整模型预测。论文明确说,随机采样的 sub-models 和 smallest sub-model 会通过 inplace distillation 学习 full model 的预测。(ACL Anthology)

所以 Length-Adaptive Transformer 的训练不是简单 dropout,而是:

LengthDrop + LayerDrop + Sandwich Rule + Inplace Distillation。

这几个组合保证了不同长度子模型都能工作。


七、Drop-and-Restore:为什么它能支持 SQuAD?

PoWER-BERT 的原始问题是:被删掉的 token 表示就没了。

对于句子分类,这没问题,因为最终只需要 [CLS]。

但对于 SQuAD,模型需要判断每个 token 是否是答案的 start / end。如果中间层把某些 token 直接删掉,最后就没法给它们预测答案边界。

Length-Adaptive Transformer 提出Drop-and-Restore

中间层把低重要性 word-vectors 暂时放到一边,不参与后续 Transformer 计算。

到最后 hidden layer 时,再把这些被放到一边的 word-vectors 恢复回来。

恢复后的完整序列再送入任务层,比如 SQuAD 的 start/end classifier。

论文明确说,Drop-and-Restore 不是永久删除 word-vectors,而是在中间层把它们 set aside,到最后 hidden layer 再恢复成完整 hidden sequence。(ACL Anthology)

这个设计很关键,因为它让 token pruning 从句级分类任务扩展到了token-level 任务

也就是说:

PoWER-BERT:删掉 token 后不再回来。

Length-Adaptive Transformer:中间层暂时不算它,最后需要时再恢复。


八、Evolutionary Search:为什么需要搜索?

训练好 Length-Adaptive Transformer 后,还有一个问题:

给定一个计算预算,每层到底应该保留多少 token?

比如目标是 FLOPs 降到 40%,可能有很多配置:

前面多删、后面少删。

前面少删、后面多删。

均匀删。

某几层重点删。

这些配置的精度和计算量不同,不能简单靠人工设定。

所以论文使用multi-objective evolutionary search。搜索目标是同时考虑:

精度最大化。

计算量最小化。

最终得到一条 Pareto frontier,也就是不同计算预算下的最优 accuracy-efficiency trade-off。论文摘要和方法部分都强调,进化搜索用于寻找在任意计算预算下最大化准确率、最小化效率指标的 length configuration。(ACL Anthology)

搜索过程大致是:

先生成若干 length configurations。

在验证集上评估精度和 FLOPs。

保留 Pareto 较优配置。

通过 mutation 和 crossover 生成新配置。

迭代搜索更好的长度配置。

论文实验中使用最多 30 次搜索迭代,每轮包含 mutated configurations 和 crossover configurations。(ACL Anthology)


九、实验设置

论文主要在三个任务上验证:

任务类型指标
SQuAD 1.1span-based question answeringF1
MNLI-m自然语言推理Accuracy
SST-2情感分类Accuracy

模型包括:

BERTBase

DistilBERT

论文使用 SQuAD 1.1 作为 token-level 任务,MNLI-m 和 SST-2 作为 sequence-level classification 任务。它还说明,SQuAD 1.1 的最大序列长度是 384,MNLI-m 和 SST-2 的最大序列长度是 128。(ACL Anthology)

效率指标主要使用FLOPs。论文也额外分析了 FLOPs 与 GPU / CPU wall-clock latency 的关系,发现对于它们的长度配置变化,FLOPs 和真实延迟有较强相关性;尤其在 GPU batch size ≥ 16 时,以及 CPU 上基本都呈近似线性相关。(ACL Anthology)


十、主要实验结果

10.1 BERTBase 可以在不降精度的情况下大幅减少 FLOPs

论文 Table 1 给出了代表性结果。

模型方法SQuAD F1 / FLOPsMNLI-m Acc / FLOPsSST-2 Acc / FLOPs
BERTBaseStandard88.5 / 1.00×84.4 / 1.00×92.8 / 1.00×
BERTBaseLength-Adaptive†88.7 / 0.45×84.4 / 0.35×92.8 / 0.35×
BERTBaseLength-Adaptive?89.6 / 0.89×85.0 / 0.58×93.1 / 0.36×

这里的Length-Adaptive†表示在精度不低于 standard model 的前提下,尽量减少 FLOPs。可以看到,BERTBase 在 SQuAD 上 FLOPs 降到 0.45×,MNLI-m 和 SST-2 上降到 0.35×,基本不损失精度。(ACL Anthology)

这说明:

Length-Adaptive Transformer 能在保持原始精度的同时,将计算量减少一半以上。


10.2 它有时还能比原模型更准

论文中Length-Adaptive?表示同时追求更高精度和更低 FLOPs 的配置。结果中,BERTBase 在 SQuAD 上从 88.5 提升到 89.6,同时 FLOPs 仍然只有 0.89×;MNLI-m 从 84.4 提升到 85.0,FLOPs 为 0.58×;SST-2 从 92.8 提升到 93.1,FLOPs 为 0.36×。(ACL Anthology)

这说明 token dropping 不只是加速,有时还有一定正则化效果。

可以理解为:

删掉部分冗余 token 表示,可能减少噪声传播。

LengthDrop 训练本身也有正则化作用。


10.3 DistilBERT 上也有效

Length-Adaptive Transformer 不只适用于 BERTBase,也适用于 DistilBERT。

论文中 DistilBERT standard 在 SQuAD / MNLI-m / SST-2 上分别是 85.8、80.9、90.6;Length-Adaptive† 在不降精度的前提下,FLOPs 分别降到 0.59×、0.54×、0.54×;Length-Adaptive? 还能把精度提升到 86.3、81.5、92.0,同时 FLOPs 仍然低于标准 DistilBERT。(ACL Anthology)

这说明:

Length-Adaptive Transformer 可以叠加到已经压缩过的模型上。

这和 PoWER-BERT 能叠加 ALBERT 的思想类似:只要模型中间 token 表示存在冗余,就可以进一步做长度自适应。


10.4 相比 PoWER-BERT,单个模型就能覆盖多个预算

论文和 PoWER-BERT 做了对比。PoWER-BERT 在 MNLI-m 和 SST-2 上损失 1% accuracy 时分别获得 2.6× 和 2.4× speedup;Length-Adaptive Transformer 在 MNLI-m 和 SST-2 上不损失 accuracy,就能在 FLOPs 上获得约 2.9× speedup。论文也指出,考虑到 FLOPs 与延迟的关系,这在同类 batch size 的 GPU 设置下会接近真实执行时间上的 2.9× 加速。(ACL Anthology)

更重要的是:

PoWER-BERT 不是 anytime model。

Length-Adaptive Transformer 是一个训练好的模型,通过搜索可以适配多个预算。

所以它的实际部署灵活性更强。


十一、它和 PoWER-BERT 的区别

两者关系非常近,但差别也很明显。

PoWER-BERT:

针对一个目标预算训练一个 retention configuration。

主要用于句级分类。

删除的 token 不再恢复。

如果换预算,通常需要重新训练。

Length-Adaptive Transformer:

用 LengthDrop 训练一次。

推理时通过搜索支持多个预算。

用 Drop-and-Restore 支持 token-level 任务。

同一个模型可以产生多个长度子模型。

所以这篇论文真正解决的是 PoWER-BERT 的两个短板:

预算不灵活。

任务类型受限。


十二、它和 DynaBERT 的区别

DynaBERT 是动态宽度和动态深度模型。

它调整的是:

attention heads 数量。

FFN intermediate neurons。

Transformer layers。

Length-Adaptive Transformer 调整的是:

每一层保留的 token 数量。

两者压缩维度不同。

DynaBERT 是width/depth adaptive
Length-Adaptive Transformer 是sequence-length adaptive

论文也强调,sequence length、depth、attention head、hidden dimension 等不同自适应方向是可以组合的;Length-Adaptive Transformer 不一定要取代其他方法,而可以与它们互补。(ACL Anthology)

这点很重要,因为 Transformer 的计算冗余不是单一维度:

参数有冗余。

heads 有冗余。

layers 有冗余。

tokens 也有冗余。

Length-Adaptive Transformer 主要处理最后一种。


十三、它是不是剪枝?

从广义上说,是一种动态 token pruning

但它不是传统模型参数剪枝。

它的特点是:

不减少模型权重数量。

不改变 Transformer 层数。

不改变 hidden size。

不删除 attention head。

只改变每层实际参与计算的 token 数量。

所以如果论文分类,建议写成:

Token-level dynamic pruning / sequence length adaptive inference。

而不是写成 weight pruning 或 head pruning。

它的部署收益来自:

序列变短后,self-attention 和 FFN 处理的 token 数减少。

尤其对长输入任务,比如 SQuAD,序列长度较长,因此收益更明显。


十四、方法优点

第一,一个模型支持多个计算预算。
训练一次后,可以用搜索得到不同 FLOPs / latency 目标下的 length configuration,不需要为每个预算重新训练。论文摘要明确强调这一点。(ACL Anthology)

第二,扩展了 PoWER-BERT 的任务范围。
Drop-and-Restore 让它可以用于 SQuAD 这类 token-level 任务,而不只是句级分类。(ACL Anthology)

第三,速度—精度折中更灵活。
通过 evolutionary search 可以得到 Pareto frontier,而不是只能使用固定比例长度缩减。

第四,可以和其他压缩方法叠加。
实验显示它能应用在 DistilBERT 上;理论上也可以和宽度剪枝、层剪枝、量化结合。

第五,真实延迟相关性较好。
论文额外验证了 FLOPs 和 wall-clock latency 的关系,说明它减少的 FLOPs 在实际 CPU/GPU 推理中能较好转化为速度收益。(ACL Anthology)


十五、方法局限

第一,它不减少模型文件大小。
参数仍然保留,因此模型存储占用不会像 weight pruning、distillation 那样明显下降。

第二,需要支持动态长度操作。
每层 token 数量变化,需要 gather、scatter、restore 等操作。不同推理框架对动态 shape 的支持不同,实际速度收益可能受工程实现影响。

第三,搜索阶段仍然有成本。
虽然不需要重新训练,但每个目标预算需要做 evolutionary search。论文也承认,它需要为每个目标预算进行单独搜索。(ACL Anthology)

第四,不是 per-instance 自适应。
它搜索出的是某个预算下固定的 length configuration,而不是每个输入样本动态决定保留多少 token。论文结论中也把 per-instance length configuration 作为未来方向。(ACL Anthology)

第五,主要实验集中在理解任务。
论文实验是 SQuAD 1.1、MNLI-m、SST-2。对于机器翻译、文本生成、长文本生成等 sequence generation 任务,论文明确说还没有研究,留作未来工作。(ACL Anthology)


十六、整体评价

Length-Adaptive Transformer 的核心价值在于,它把 PoWER-BERT 的 token elimination 从“单预算训练”推进到“训练一次,多预算使用”。

它解决的不是“某个模型能不能删 token”,而是更实际的问题:

不同设备、不同延迟要求、不同计算预算下,能不能用同一个模型?

通过 LengthDrop,模型在训练阶段适应各种长度配置;通过 evolutionary search,推理阶段可以根据预算自动找到合适配置;通过 Drop-and-Restore,它又能支持 SQuAD 这类需要 token-level 输出的任务。

这篇论文在 Transformer 高效推理中的位置很清楚:

PoWER-BERT 证明 token-level redundancy 可以用于加速。

Length-Adaptive Transformer 证明 token-level pruning 可以做成一次训练、多预算部署。

它和 DynaBERT、CoFi、LayerDrop 这类方法互补,因为它压缩的是 sequence length,而不是 depth、width 或参数。


十七、一句话总结

《Length-Adaptive Transformer: Train Once with Length Drop, Use Anytime with Search》提出一种长度自适应 Transformer:训练时用 LengthDrop 随机缩短各层序列长度,使模型适应多种 token 保留配置;推理时用多目标进化搜索找到满足预算的 length configuration;同时通过 Drop-and-Restore 把中间层丢弃的 token 在最后恢复,使方法可用于 SQuAD 这类 token-level 任务。它的核心贡献是让 PoWER-BERT 式 token pruning 从“一个预算训练一个模型”变成“训练一次,多个预算直接使用”。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询