模型也可以上网课?!一文看懂服务型蒸馏训练方案

发布时间:2025-05-19 点击:14
本文经ai新媒体量子位(公众号id:qbitai)授权转载,转载请联系出处。
自今年年初,由于疫情的原因,为了减少人员聚集,降低病毒扩散的可能性,各大中小学校都陆续开始了网上教学。上网课已经成了家喻户晓的一种学习方式了。
可是你知道吗,在深度学习领域,模型训练也是可以采用网课形式,不用那么震惊,这个真的有!这就是今天要讲的lf ai基金会的edl项目基于飞桨深度学习平台推出的服务型蒸馏训练方案!
什么是蒸馏训练?
要讲蒸馏训练就要提到知识蒸馏。如今深度学习模型正在往越来越大,网络层越来越深的方向发展。在很多场景下,模型越大,层数越多,模型效果就越好。但受限于推理速度,显存资源等要求,大模型通常无法直接部署,需要对模型进行压缩。
目前主流的压缩方法有裁剪、量化、知识蒸馏等。其中知识蒸馏这一概念是由hinton等人在2015年发表的《distilling the knowledge in a neural network》论文中提出的一个黑科技,一种非常经典的模型压缩技术,是将知识从一个复杂模型(teacher)迁移到另一个轻量级模型(student)上的方式来实现模型压缩。
其实所谓知识的迁移,其实可以理解为一种训练过程,就是使用teacher模型来训练student模型,这种训练方法就是蒸馏训练。在训练出一个效果良好的student模型后,这个student模型就可以被用于实际部署了。
如下图所示,训练步骤可以分为两步:
训练好一个teacher模型。 训练student模型,即使用teacher模型的知识来训练student模型。
△知识蒸馏架构图
所谓teacher模型的知识是指teacher模型的推理结果,我们称之为soft label,这个soft label将作为student网络的训练目标,student的推理结果需要尽可能接近teacher的推理结果。与soft label相对应的是hard label,hard label就是真实训练数据的标签。相比于hard label,soft label所含的信息量更大。
举个例子,比如做区分驴和马的分类任务的时候,soft label不会像hard label那样只给马的index值为1,其余类别为0,而是在驴的部分也会提供一个概率值(例如0.3或0.4之类),这样的优势在于使soft label包含了不同类别之间的相似性信息。显而易见,使用soft label训练出来的模型肯定要比单独使用hard label训练出来的模型学习到更多的知识,也就更加的优秀。
知识蒸馏训练的目标函数可由distillation loss(对应teacher soft label)和student loss(对应标注的hard label)加权得到。公式如下,其中p表示student模型的推理结果,q为teacher的推理结果,y为hard label。
什么是服务型蒸馏训练?
说完蒸馏训练了,下面我们进入正题,来看看我们这个服务型蒸馏训练到底是个什么东东!蒸馏训练可以分为如下三种方式:
离线蒸馏训练
离线蒸馏训练的方式很像是老师(teacher)把要讲课的内容录制成视频交给学生(student)去自学,然后学生根据课程视频自学成才。所以离线蒸馏训练就是先使用teacher模型做推理并将结果保存在磁盘中,然后student模型使用磁盘中保存的样本和teacher模型的推理结果作为数据集进行训练。这种训练方式下student模型训练和常规训练一致,方法简单。不过这种训练方式一般需要数据增强,而且需要占用巨大的磁盘空间,因此应用环境受到了一定的限制。
△离线蒸馏训练
常规蒸馏训练
常规蒸馏训练是指将teacher模型和student模型放入同一网络中,固定teacher模型参数只做前向,student模型则正常做反向传播训练。这也是目前主流的蒸馏训练方式。这和现实生活中常规的教学方式很像,老师和学生在一个教室里,老师说一句,学生听一句。但是这种训练方式不仅teacher模型本身需要占用较大的空间,而且由于teacher和student是1对1的绑定关系,student模型的训练完全依赖teacher模型,student模型要等teacher模型输出一个batch的推理结果才可以训练,而teacher模型也要等student训练完一个batch,才能开始下一个batch的推理,对整体的训练速度有一定的影响。
服务型蒸馏训练
服务型蒸馏训练是基于edl(elastic deep learning,弹性深度学习框架)提出的一种训练方案。edl是linux基金会(lf)旗下负责人工智能和大数据深度学习领域的基金会lf ai正在孵化的重要项目之一。如今在云计算资源蓬勃发展的条件下,利用弹性资源进行深度学习模型训练和推理将成为一种普遍现象,因此edl项目应运而生。edl项目可以使云上深度学习模型的训练和推理变得更容易和更有效。而服务型蒸馏训练方案就是edl项目结合百度飞桨开源深度学习平台而推出了一种新的训练方案,可谓出身名门!
与常规蒸馏训练相比,服务型蒸馏训练将teacher模型和student模型解耦,teacher模型被部署为线上推理服务,student模型则以客户端的身份通过互联网实时发送样本到teacher模型获取推理结果进行训练,这就如同让模型上网课。那么让模型上网课可以给用户带来什么收益呢?咱们往下看!
△服务蒸馏训练
服务型蒸馏训练的价值
相比于常规的蒸馏训练模式相比,服务型蒸馏训练可以给用户带来如下收益:
节约显存资源。由于student模型和teacher模型的解耦,所以服务型蒸馏训练可以使用异构的资源,也就是把student模型和teacher模型的部署到不同的设备上。原先受限于显存大小而难以部署到单个gpu卡上的蒸馏网络可以通过该方式部署到不同卡上。 提升训练速度。由于节约了显存资源,这样就可以使student模型能够训练更大的batch size;同时由于student模型和teacher模型是异构流水线,student模型不用等teacher模型推理结束后再训练,综合上述两个原因,可以大大提高训练速度。 提高训练资源利用率。在实际应用中,我们可以将teacher模型部署到线上的弹性预估卡集群,利用线上预估卡闲时的算力资源提升蒸馏任务中teacher模型侧的吞吐量。同时由于teacher模型可以弹性调度,不用担心高峰时线上实例被抢占造成的任务失败。相当于把teacher对训练卡的资源需求转移到了在线gpu卡上,在v100等离线训练资源受限的情况下,使用在线卡对训练进行加速,以节约宝贵的训练资源。此外,在离线集群上,结合调度策略,还可以将teacher模型部署到集群碎片资源,或者如k40等使用率较低的资源上,充分利用集群的空闲、碎片资源。 提升训练效率。用户可以根据teacher和student的吞吐性能灵活设置teacher和student的比例,也就是说多个老师可以教多个学生,而不是只能保持1比1的家教模式,最大限度地提高训练的产出。
为了验证服务型蒸馏训练的效果,我们在imagenet数据集上使用普通训练、常规蒸馏训练和服务型蒸馏训练几个不同方式来训练resnet50_vd模型。
在精度上,可以看出相比于普通训练,蒸馏训练提升了resnet50_vd模型近2%%u7684精度。而服务型蒸馏训练和常规蒸馏训练在精度上持平。当然该模型的蒸馏精度远不止于此,关于知识蒸馏更多提升精度的技巧请参考如下地址:
https://paddleclas.readthedocs.io/zh_cn/latest/advanced_tutorials/distillation/index.html
在速度上,相比于普通训练,常规蒸馏训练由于teacher模型占用了很大一部分算力,所以在相同训练资源的情况下,训练速度仅为普通训练的35.9%%u3002而服务型蒸馏训练由于使用了额外的在线p4弹性资源,将teacher对训练卡的资源需求转移到了弹性卡上,所以相比于普通训练,仍保持有82.8%%u7684训练效率,速度为常规蒸馏训练2.3倍。
如果继续增加teacher资源,理论上edl服务型蒸馏训练的速度是可以和普通训练速度持平的。当然常规蒸馏训练如果加大资源,也是可以继续加速的,不过这样就占用了更多宝贵的v100训练资源了。
服务型蒸馏训练既然那么厉害,那它是怎么做到的呢?咱们来看看它的具体实现。
服务型蒸馏训练的实现方案
从具体实现的角度看,服务型蒸馏训练之所以被称为服务,就是因为它将teacher模型部署成了服务端,而student模型成了客户端。如下图所示,该方案可以描述为将teacher模型被部署为在线可容错弹性服务,而在student模型一侧则通过distillreader来封装student模型与teacher模型之间的通信,访问teacher服务。下面咱们分别介绍下distillreader和可容错弹性服务都是啥?
△服务型蒸馏训练架构图
distillreader
distillreader用来代表student模型向teacher模型进行通信,从而产生可供student模型训练的数据reader。如下图所示,student模型将训练样本和标签传入训练reader,distillread

电脑将Word2007转换成word2003文档的方法
备案更换法人证件-备案平台
网站新增备案-备案平台
阿里云服务器配置怎么样
网站域名为什么要备案?
服务器基本的知识有哪些?小编带你认识服务器!
山东枣庄免备案云服务器
香港阿里云服务器怎么样