总:模型压缩和加速方法
蒸馏(Distillation)
知识蒸馏:使用较大的模型预测结果来知道较小的,结构简单的模型学习。这样可以减小模型复杂度,提高模型的泛化能力和推理速度。
对抗蒸馏:在知识蒸馏的基础上,通过对抗训练来提高模型的鲁棒性和抗干扰能力
剪枝(Pruning)
参数剪枝:删除模型中冗余参数,减少模型大小。原因:一般只有小部分对参数贡献较大(激活函数前一或若干层的模型参数权重分配),其余参数对模型的贡献较小或没有贡献,可以删除冗余参数。
网络剪枝:删除冗余神经元。对比参数剪枝,可以仅删除神经元,不删除对应参数
网络裁剪:对不重要的连接进行裁剪,减少计算开销
量化(Quantization)
基础量化:浮点参数转换为更小的整数或低精度浮点数,减小模型参数和内存占用,提高计算效率
模型量化:模型的权重和激活函数精度从32位浮点数减小到16位浮点或8位整型
分解(Decomposition)
低秩分解(Low-Rank):将一个较大的权重矩阵分解成几个小的权重矩阵,减少计算开销。代表成果:LoRA,QLoRA
卷积分解(CD):卷积层分为几个更小的卷积层或全连接层,减小计算开销
分:大模型与知识蒸馏
知识蒸馏模型
FitNets:使用一个较大的模型作为教师(Teacher)来指导一个较小模型(Student)的训练
Hinton蒸馏:使用一个大型模型的输出作为标签来指导小型模型的训练
Born-Again Network(BAN):使用一个已经选练好的模型来初始化一个新模型,然后使用少年数据重新训练模型
TinyBERT:使用一个大型BERT模型作为教师来指导小型BERT模型的训练
知识蒸馏及其改进方法
知识蒸馏与训练
分:模型量化
To be continue...