【云驻共创】知识蒸馏模型TinyBert解读分享

举报
kaliarch 发表于 2021/09/02 12:46:54 2021/09/02
【摘要】 一 研究背景提前训练语言模型,然后再对下游任务进行微调,已经在NLP中成为一种新的范式。预训练语言模型(PLMs),如BERT (Devlin等人,2019)、 XLNet 等等模型,在许多NLP任务中取得了巨大成功(如GLUE基准)。然而,PLM通常参数数量大,推理时间长,难以部署在手机等边缘设备上。近期研究证明PLMs中存在冗余。因此,降低PLMS的计算开销和模型存储,并且在保留其性能时...

一 研究背景

提前训练语言模型,然后再对下游任务进行微调,已经在NLP中成为一种新的范式。

预训练语言模型(PLMs),如BERT (Devlin等人,2019)、 XLNet 等等模型,在许多NLP任务中取得了巨大成功(如GLUE基准)。然而,PLM通常参数数量大,推理时间长,难以部署在手机等边缘设备上。近期研究证明PLMs中存在冗余。因此,降低PLMS的计算开销和模型存储,并且在保留其性能时是至关重要的。


二 知识蒸馏模型TinyBert

2.1 知识蒸馏( knowledge distillation )简介

知识蒸馏是一种模型压缩方法,是一种基于“教师-学生网络思想”的训练方法,由于其简单,有效,在工业界被广泛应用。

2.2 BERT简介

BERT是201 8年10月由Google AI研究院提出的一-种预训练模型。BERT的全称是Bidirectional Encoder Representationfrom Transformers。BERT在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩。


网络结构: 12-layer, 768-hidden, 12-heads

参数数量:110M

模型大小: 365MB

2.3 相关贡献

提出了- -种新的Transformer蒸馏方法,能更好的将教师BERT base所编码的语言知识充分地转移到TinyBERT;

提出了- -种新的两阶段学习框架,该框架在预训练和微调阶段进行Transformer蒸馏,保证了TinyBERT既能吸收教师模型的一般领域知识,又能吸收教师模型的任务特定知识。

实验表明, TinyBERT4在GLUE任务的基础上,能达到96.8%以上的性能,更少的参数( 13.3%)和更少的推理时间(10.6%) , 在BERT蒸馏上明显优于其他最先进的4层基线;

实验表明,6层TinyBERT6可以实现在GLUE.上和老师BERT base-样的性能。


三 算法模型剖析

3.1 模型总览


TinyBert4模型与BERT-base的结构一致。最大的区别是Encoder数量上有所减小。从12变为4。

3.2 算法创新点

具体来说,我们设计了三种类型的损耗函数来适应BERT层的不同表示:

嵌入层的输出;

从变换层导出的隐藏状态和注意矩阵;

预测层输出的logits.



提出了一个新的两阶段学习框架,包括一般的提炼和任务特定的提炼,如图所示。在一般蒸馏阶段,未经微调的原始BERT作为教师模型。

在特定任务的提取阶段,我们首先对数据进行增强,然后以微调后的BERT作为教师模型对扩充后的数据集进行提取。

这两个阶段对于提高TinyBERT的性能和泛化能力至关重要。

3.3 实验结果

通过实验数据克制TinyBert4模型相较于其他模型,效率和准确性都是最好的。


四 代码复现

4.1 复现思路

原则是先实现,再调优以达到论文要求。秉承“站在巨人肩膀上”的思想,我们首先在Gitee.上查找官方的开源代码,在开源代码基础上进行论文复现。经过不断试错,最终基于华为简便好用的Mindspore框架和强大的ModelArt算力平台,成功运行。

经过一些“小插曲”后, 代码调通了,经过一 些调优调整, 特别是 受论文启发(GLUE训练集的数据增强),达到精度要求。


4.2 ModelArts环境介绍


ModelArts的理念就是让AI开发变得更简单、更方便。

面向不同经验的AI开发者,提供便捷易用的使用流程。例如,面向业务开发者,不需关注模型或编码,可使用自动学习流程快速构建AI应用;面向AI初学者,不需关注模型开发,使用预置算法构建AI应用;面向AI工程师,提供多种开发环境,多种操作流程和模式,方便开发者编码扩展,快速构建模型及应用。

4.3 代码讲解

4.3.1 TinyBert4

首先对输入数据进行embedding,之后进行encoder,将处理完成输出进行类型转化后进行输出。

4.3.2 TinyBert的Loss计算

蒸笼算法与三个核心loss组成,分别是attn/hidn/pred组成,通过反响更新参数来进行实现。

五 基于ModelArts实操演示

5.1 获取模型

从AI Gallery搜索TinyBert蒸馏模型,对该模型进行订阅,

5.2 在ModelArts中实践

创建训练作业

在ModelArts算法管理中找到算法进行创建训练作业

设置选择数据源和模型输出存放位置。

提交任务,等待训练任务完成。

将模型进行在线部署,首先导入模型,从模版导入模型

点击完成模型创建,点击在线部署模型。模型部署完成后,您可添加图片进行测试。

在“部署上线”界面,选择状态为“运行中”的服务版本,通过postman进行接口调用测试。

六 其他

深度学习在这两年的发展可谓是突飞猛进,为了提升模型性能,模型的参数量变得越来越多,模型自身也变得越来越大。通过本届知识蒸馏模型的算法模型及源码讲解,并通过华为ModelArts环境进行演示,相信对大家的对AI的认知有很大的帮助。

本文整理自华为云社区内容共创活动:【内容共创系列】IT人加薪新思路,认证华为云签约作者,赢取500元稿酬和流量扶持!

查看活动详情:https://bbs.huaweicloud.com/blogs/293957

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。