Contents
- Introduction
- Training Transformers with Random Structured Pruning
- Randomly Dropping Structures at Training Time
- Pruning at Inference Time
- Experiments
- References
Introduction
- 作者提出了一种新的 structural pruning 方法 LayerDrop,通过在训练时随机丢弃 Transformer block 来稳定模型训练过程 (有利于训练更深的模型),并且在推理时直接丢弃掉一些层来加快推理速度,这种推理加速方法无需进行额外的微调,并且不会损失过多的模型精度
Training Transformers with Random Structured Pruning
Randomly Dropping Structures at Training Time
- 作者提出在训练时使用 LayerDrop (类似于 dropout) 随机丢弃 Transformer block. 这可以看作是一种正则化方法,提高模型泛化性,并且还使得推理时可以随机裁剪掉一些层来加速推理速度
Pruning at Inference Time
- Selecting Layers to Prune. 使用 LayerDrop 进行训练可以让模型在推理时对以 Transformer block 为单位的结构化剪枝更加鲁棒,下面作者给出了 3 种推理时的结构化剪枝策略,即直接丢弃掉一些层而无需进行额外的微调。实验表明,Every Other strategy 就可以在许多任务和设置下取得不错的效果,而 Search on Valid 和 Data Driven Pruning 只能带来 marginal gains.
- Every Other: 等间隔裁剪。假如裁剪率为 p p p,则裁剪所有深度为 d d d ( d mod ⌊ 1 p ⌋ = 0 d\text{ mod }\lfloor\frac{1}{p}\rfloor=0 d mod ⌊p1⌋=0) 的层
- Search on Valid: 把要裁剪的层当作超参,用验证集去搜索最佳裁剪策略,但这种方法计算量很大并且容易对验证集过拟合
- Data Driven Pruning: 直接在训练时学得每个 block 的 drop rate. 具体而言,作者将 block 输出的激活值经过非线性函数和 softmax 后得到 p d p_d pd,并且约束所有层的 p d p_d pd 均值为预设的裁剪率 p p p. 推理时选择 top-k highest scoring layers 进行前向传播即可
- Setting the drop rate for optimal pruning. 假如想裁剪
r
r
r 层,则训练时的最优 drop rate
p
p
p (类似于 dropout 里的 dropout ratio) 为
作者在实验中设置 p = 0.2 p = 0.2 p=0.2,并且当推理速度要求特别高时作者推荐使用 p = 0.5 p = 0.5 p=0.5
Experiments
Main Results
Ablation Study
References
- Fan, Angela, Edouard Grave, and Armand Joulin. “Reducing transformer depth on demand with structured dropout.” (ICLR, 2020).
- code: https://github.com/facebookresearch/fairseq/tree/main/examples/layerdrop