【云驻共创】知识蒸馏模型TinyBert解读分享
一 研究背景
提前训练语言模型,然后再对下游任务进行微调,已经在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元稿酬和流量扶持!
- 点赞
- 收藏
- 关注作者
评论(0)