zl程序教程

您现在的位置是:首页 >  其他

当前栏目

模型压缩技术:综述【模型蒸馏/Distillation;量化/Quantization;剪枝/Pruning;参数共享】

技术 模型 参数 压缩 共享 综述 量化 剪枝
2023-09-27 14:20:41 时间

BERT 在很多 NLP 任务上都取得不错的效果,但是其模型体积与计算量都很大,而且现在出现了更多越来越大的模型,例如 roBERTa 和 GPT2。由于这些模型的太大,难以用于一些性能没那么好的机器上,也不能很好地用于实时性要求高的应用中。因此有不少针对 BERT 模型压缩的研究,其中模型蒸馏 Distillation 是一种比较好的解决方法,本文介绍两种基于模型蒸馏的 BERT 模型压缩方法。

在这里插入图片描述

上图展示了很多基于 Transformer 的模型,模型下方的数字对应了模型的参数数量,单位是百万,可以看到这些模型变得越来越大。这些模型的体积也限制了其在现实世界中的使用,因为各方面因素:

  • 这种模型的训练花费大量的金钱,需要使用昂贵的 GPU 服务器才能提供大规模的服务。
  • 模型太大导致 inference 的时间也变长,不能用于一些实时性要求高的任务中。
  • 现在有不少机器学习任务需要运行在终端上,例如智能手机,这种情况也必须使用轻量级的模型。

基于以上的原因,不少研究开始针对 BERT 模型压缩进行,常见的模型压缩方法有以下几种:

  • 模型蒸馏 Distillation,使用大模型的学到的知识训练小模型,从而让小模型具有大模型的泛化能力。
  • 量化 Quantization,降低大模型的精度,减小模型。
  • 剪枝 Pruning,去掉模型中作用比较小的连接。
  • 参数共享,共享网络中部分参数,降低模型参数数量。

RoBERTa 和 ALBERT中介绍的 ALBERT 也是一种 BERT 压缩方法,主要是用了参数共享和矩阵分解的方法压缩 BERT,但是 ALBERT 只减少模型的参数,并不能减少其 inference 的时间。

两种使用模型蒸馏压缩 BERT 的算法,第一种是 DistilBERT,将 12 层的 BERT-base 模型蒸馏到 6 层的 BERT 模型;第二种是将 BERT 模型蒸馏到 BiLSTM 模型。




参考资料:
BERT 模型蒸馏 Distillation BERT
深度神经网络模型蒸馏Distillation
深度学习模型压缩方法(4)-----模型蒸馏(Distilling)与精细模型网络
模型蒸馏(Model Distillation)
知识蒸馏的过程是怎样的?与迁移学习的区别在哪里?
模型蒸馏(Distil)及mnist实践
BERT 模型蒸馏 Distillation BERT