模型压缩总结
一、模型压缩的几种方式
1.模型量化
2.模型剪枝
3.模型蒸馏(知识蒸馏)
Bert系列模型的蒸馏方法分预训练的阶段、Finetune阶段的蒸馏:
(1)预训练的阶段
针对Bert系列模型的蒸馏方法,有distillbert和tinybert,这些模型都是直接作用在bert预训练的阶段,然后把训练好的模型应用到下游任务,这样的压缩蒸馏方法对一般人来说不太友好
(2)Finetune阶段的蒸馏方法有如下两种方式:
- 1)基于FastBert的蒸馏:(https://arxiv.org/pdf/2004.02178.pdf)
2)基于bert-of-theseus方式进行蒸馏(https://arxiv.org/pdf/2002.02925.pdf)
可以把Bert按照module replacing的方式来做压缩。
4.模型其他方案
(1)权重共享
RoBERTa 和 ALBERT中介绍的 ALBERT 也是一种 BERT 压缩方法,主要是用了参数共享和矩阵分解的方法压缩 BERT
二、英伟达模型硬加速
介绍:
目前针对预训练模型推理加速,在模型不掉点情况下实现精度无损加速,目前尝试有效的方案:
1、TensortRT-Fp32加速
2、FasterTransformer-Fp32加速
注意:
1、针对Bert系列模型:在P40卡只能使用低版本TRT(<8),经过测试低版本trt加速效果不如FT的加速效果,如果是高算力的卡优先建议使用高版本TRT来加速。
2、针对基于Transformer+beamSearch这类生成模型:这里建议直接使用FT来实现加速,TRT在此类模型的加速收益不如FT。