模型蒸馏训练方法(情感分析任务)
一、什么是模型蒸馏
模型蒸馏(Model Distillation),其核心思想是利用一个效果较好的大型模型(称为“教师模型”)的知识,来指导一个较小的模型(称为“学生模型”)的训练,使得学生模型在参数量和计算复杂度较低的情况下,尽可能接近甚至超越教师模型的效果。
在千帆ModelBuider中,您可以:通过调用旗舰大模型(如ERNIE 4.0/ERNIE 3.5)产生的问答对,经过筛选得到有效的训练数据。在降低数据标注成本的同时,可通过精调得到成本更低、耗时更优、且特定任务上的效果趋近旗舰模型的轻量大模型(如ERNIE Speed/ERNIE Lite/ERNIE Tiny)。
- 效果提升:通过使用实际应用中的真实业务数据,轻量大模型能够更好地适应特定场景或任务,提升模型的实用性和效果。
- 时延降低:训练得到的轻量大模型在参数规模和计算需求上更为高效,平均回复时延更低,回复速度更快,适合部署在对响应速度有要求的环境中。
- 成本降低:蒸馏后的模型在调用量高的情况下性价比更高,整体的成本与价格更能接受。
二、模型蒸馏的主要流程
1、选择模型并批量请求旗舰模型(老师): 构建符合业务场景prompt模板,选择效果最佳的旗舰模型作为老师,通过线上真实请求批量调用旗舰模型(老师)获得回复。
2、回流旗舰模型(老师)推理日志:将旗舰模型的推理日志投递至BLS,BLS会存储的推理日志包含真实业务请求数据与模型回复。通过对于日志的初筛与处理,可以得到符合SFT训练格式的问答对数据。
3、对日志筛选、洞察与处理形成训练数据集:得到符合SFT训练的问答对数据后,可以通过千帆平台提供的数据洞察、数据标注、数据清洗、数据增强等功能,提升数据质量形成高质量的训练数据集。
4、以训练数据集精调轻量大模型(学生):将高质量的训练数据集训练小参数量级的轻量大模型(学生),通过参考训练评估报告调整训练参数进行训练实验,得到一个符合业务场景需求的优质模型。
5、对比评估得到“学生”模型能力逼近“老师”:使用千帆平台模型自动化评估功能,通过裁判员模型打分对比评估训练前后的模型效果,以及对比评估训练后轻量大模型(学生)和旗舰模型(老师)效果差距。如果符合业务效果预期,可以选择将训练后的轻量大模型替换旗舰模型,效果逼近且成本和时延更低。如果学生模型距离老师模型还有较大差距,可以持续蒸馏不断提升学生模型效果。
三、用户情感分析场景描述
情感分析,也被称为意见挖掘,是自然语言处理领域的一个重要分支。它主要通过对文本中的主观信息进行挖掘,以判断文本作者的情感态度。这一技术在许多领域,如市场分析、公共情感监测、产品管理等方面都有着广泛的应用。
1、场景概述
在本次任务场景中,您可以将构建一个对文章、社交媒体观点以及网友评论进行情感分类的模型。该模型将这些内容按照情感倾向分为“积极”、“消极”和“中性”三类。其目的是理解和分类网络文字背后,作者或用户的情感反应,为公共舆论监测、社会情绪分析和市场营销策略等提供参考依据。
2、场景细化
- 用户群体特征:在互联网平台上,用户群体多样化,涵盖了不同年龄、性别、文化背景和兴趣爱好的人群。例如,年轻用户可能在评论中使用流行的网络用语和表情符号,而年长用户的语言相对更传统;不同兴趣爱好的用户在讨论相同主题时可能关注的重点不同,这种多样性使得评论数据具有极大的差异性。
- 评论常见形式:在社交媒体和评论区,情感表达形式多样。文字是最主要的形式,具有口语化特点,包含缩写、方言词汇和口语化短语。例如,“这篇文章真赞”“这观点太扯” 等表述。同时,广泛使用表情符号,一个简单的表情可能直观地表达了积极或消极情感。当表情符号与文字混合使用时,需要准确理解两者结合所传达的情感强度和倾向。此外,用户常使用隐喻、夸张等修辞手法来表达情感,比如“这简直是我的福音”,需要模型理解这些修辞手法背后的情感含义。
3、任务挑战
本次情感分析任务面临几个主要挑战,包括但不限于:
- 多样性和复杂性:用户生成的文本形式多样,可能包含口语化表达、拼写错误、表情符号、俚语、网络用语、隐喻等,这增加了情感分类的难度。同时,用户情绪会受到许多因素的影响,如主题的性质、个人偏好、时事背景等,模型需要准确理解评论中包含的关键信息,并考虑这些因素。
- 情感极性不明显:有些内容情感倾向不明显或包含复合情感。例如,一条评论可能既有积极又有消极的方面,需要模型正确识别主要情感倾向;此外,一些模棱两可的内容也会给情感分类带来挑战。
接下来,您将逐步进行模型蒸馏操作,克服任务中可能存在的挑战,从而完成该场景下的情感分类任务。
四、模型蒸馏步骤
1、选择模型并批量请求旗舰模型(老师)
1.1 构建符合场景要求的prompt模板
通常prompt主要由四部分组成,即任务定义、输出要求、上下文、输入。下图将对prompt模板组成各部分进行解释,并以「为用户指定旅游攻略」这一任务为例,构造一个基础的prompt示例。
基于情感分析这个场景,按照上述的要求进行构造。由于该任务与其他任务相比,该任务难度相对不高,上下文示例的内容可以不做体现,其中prompt的四要素中,必需具备的是任务定义与输入。
经过上述内容构造的prompt示例如下:
[{"prompt": "你是一个人工智能助手## 角色\n你是一名非常专业的情感分析师,负责分析文章、社交媒体内容、用户评论等中的情感倾向,擅长使用情感分析工具或自然语言处理技术来量化情感强度。\n## 目标\n- 基于特定的监测对象和关键词,分析文章的整体内容和语境,判断文章的情感属性。\n## 工作流程:\n1. **明确监测对象和关键词**:\n -「监测对象」:某款手机。\n -「关键词」:某款手机。\n2. **阅读并理解文章内容**:\n -「文章标题」:[蛋糕]####2024愿你所愿#国庆节快到了、福利也来了!收到倍思的中秋&国庆双节大礼包啦!这套数码产品太适合我的新款手机了(虽然手机还没到)。有喜欢的老铁吗?好说,直接壕送三套!有三合一磁吸充电坞+车载香薰+三合一充电线+无线磁吸。【抽奖条件】转+关,9月27号抽三位「铁粉」送出图里的一整套大礼包,不过滤!由@微博抽奖平台官方备案真实有效!。\n -「文章摘要」:国庆双节大礼包啦!这套数码产品太适合我的新款手机了(虽然手机还没到)。。\n## 注意\n - 尽量覆盖文章中与监测对象和关键词相关的所有内容,以确保分析的全面性。\n - 在分析过程中保持客观中立,避免个人偏见影响分析结果。\n - 如果文章内容中包含多种情感倾向,请从正面、中性、负面中选择最接近的情感属性。\n## 输出格式\n```json\n{\n \"data\": \"正面或中性或负面\"\n}\n```", "response": [["```json\n{\n \"data\": \"正面\"\n}\n```"]]}]
针对prompt示例中的内容您可能的疑惑进行如下解答:
(1)“#”、“\n”、“**”分别具有什么含义?
prompt的任务、输出要求、上下文等各部分之间,请用换行符(\n)、分隔符(如###;`;【】等)进行区隔;对于模型应当特别关注的约束条件,可以在描述前添加「注意」,表示强调,或使用markdown语法中表明加粗强调的**符号进行包裹。
(2)为什么没有按照Prompt框架顺序进行构造?
为使得Prompt有更好的表现,您可以按场景需要自行的组合要素顺序。如在此Prompt中,将用户输入放到了中间位置有助于模型更好的理解任务。
1.2 选择合适的旗舰模型(老师)
(1)构建合适的评测集
构建评测集用于评估旗舰模型效果,选择效果最优的旗舰模型。评测集选择需要尽量和线上实际情况的多样性分布保持一致,人工标注确保回复符合预期。以本次任务为例,我们准备了50条评论数据,并为每条评论分配了预期的情感标签:正面、中性或负面。
(2)选择合适的旗舰模型(老师)
目标是选择一个能够显著提高分析效果的旗舰模型(老师)进行模型蒸馏,因此需要提前对模型进行评估。针对本次任务来说,先使用不带有情感标签回复的prompt集,选择候选旗舰模型进行请求,请求结果的标签与符合预期的标签进行打分对比。
我们使用千帆平台上的模型评估功能,创建自动评估任务。其中使用相同评估集、评估标准测试评估候选模型。评估方法选择自动裁判员打分,修改变量steps中的描述,以0-1打分的方式对模型效果进行打分,符合预期则为1分,不符合预期则为0分,并计算每条分数的平均值和标准差,用于评估模型的综合效果表现与效果表现稳定性情况。
候选旗舰模型 | ERNIE-4.0-8K | ERNIE 4.0 turbo-8K | ERNIE-3.5-8K |
---|---|---|---|
裁判员模型打分平均值 | 0.93 | 0.91 | 0.92 |
裁判员模型打分标准差 | 0.25 | 0.29 | 0.27 |
经过这样的测试,我们发现ERNIE-4.0-8K模型在情感分类任务中表现最好,其输出与预期标签的匹配程度最高。
1.3 获得轻量模型(学生)基线效果
针对业务并发高、调用量大、时延敏感、成本敏感等诉求,选择ERNIE-Tiny-8K作为轻量模型(学生)精调训练,期望能通过蒸馏旗舰模型(老师)的方法,使得ERNIE-Tiny-8K精调后的效果可以逼近老师能力,且保持原来高性能、低成本的轻量特性。
通过指定评测集评估,我们获得了轻量模型的基线效果,从和ERNIE-4.0-8K效果对比来看,效果确实差距较大,期望通过模型蒸馏的方式,能够有效提升ERNIE-Tiny-8K情感分析这样特定场景的能力。
轻量与旗舰模型效果对比 | ERNIE-Tiny-8K(基线) | ERNIE-4.0-8K |
---|---|---|
裁判员模型打分平均值 | 0.23 | 0.93 |
裁判员模型打分标准差 | 0.42 | 0.25 |
1.4 批量请求旗舰大模型(老师)
请将选择的旗舰模型服务接入您的线上产品,获得真实的线上用户输入信息,将用户输入信息拼接第一步的prompt模版,从而形成批量的prompt集合请求旗舰模型,得到效果好的模型回复。而这些prompt集合和对应模型回复,都将记录在推理日志中,推理日志是宝贵的训练原材料。
2、回流旗舰大模型(老师)推理日志
本步骤主要讲述如何保留旗舰模型(老师)ERNIE-4.0-8K的推理日志,并将推理日志转化为可用的训练数据集。
2.1 日志投递
在预置服务中,存在日志投递的按钮。点击日志投递,可以开通日志服务BLS。BLS可以记录并存储由模型推理产生的问答对信息。
当开启日志服务后,会将调用的原始日志记录并存储。从海量BLS的原始日志获得有效的训练数据,还需要在BLS中完成数据筛选及处理。
2.2 日志粗筛
BLS提供了日志查询的功能,此处提供处理数据的查询日志示例,含义为:
- 筛选时间信息,列名定义为time;
- 筛选request中message字段的content内容且将换行符处理为空格,列名定义为prompt1;
- 筛选response中result字段的内容且将换行符处理为空格,列名定义为response1;
收集后的数据按照时间降序排列(以获取最新的样本信息)且限制查询结果的数量,只返回前3100条记录。您可以根据业务输出自行调整,上述内容在输入栏中编写如:
select timestamp as time, replace(json_extract(request, '$.body.messages[0].content'), '\n', ' ') as prompt1, replace(json_extract(response, "$.body.result"), '\n', ' ') as response1 from qatest
order by time desc
limit 3100
2.3 日志下载
查询后在统计分析中支持数据的下载,下载后的文件为CSV格式。其中CSV列中的time列不会被千帆数据校验,您可以不做处理;只需CSV文件中包含prompt1列、response1列即可。
处理前的原始日志信息为:
处理后的日志信息为:
点击统计分析中的下载按钮,即可将CSV下载到本地。
2.4 创建数据集
存储到本地后,可选择千帆平台的通用数据集功能,点击创建数据集将数据导入到BOS或千帆共享存储中,从而保存为一份可以用于训练的原始数据集。但是为了有更好的精调效果,还需提升该数据集的质量。
3、对日志筛选、洞察与处理形成训练数据集
数据集的质量对于模型训练的效果起着至关重要的作用。为提升训练效果,成功导入数据后,您可以在千帆平台“数据洞察与处理”模块对样本进行精细化的处理和筛选。以下是一套操作指南,旨在帮助您检查并提升数据集的质量。当您确认数据集已达到预期的标准与要求时,便可进入下一阶段的训练流程。
在数据处理环节,您可以对原始数据进行数据清洗、重新标注和质量筛选:
3.1 数据清洗
从BLS回流的线上数据中,可能会夹杂着一些需要特别处理的内容,例如表情符号、敏感信息以及重复的评论等。为此,您可以创建清洗任务,并根据实际需求灵活配置清洗流程。以当前数据集为例,您可以启用以下配置:全面清洗所有异常项、过滤色情及暴力样本、执行去重操作以及去除隐私信息。
3.2 数据标注
若您对当前数据集中的模型回复效果不甚满意,可以对部分数据进行重新标注。
3.3 数据洞察
完成数据处理后,接下来,您需要筛选出适配业务场景的高质量样本。我们建议您在数据洞察页面直观地查看当前样本的分布情况,并根据实验需求进行适当的筛选和调整。一般而言,情感数据的比例应避免过于偏颇,积极、消极及中性样本的占比应尽量与线上实际场景相吻合,以此来确保模型训练效果的均衡性。您可以便捷地进行编辑与筛选操作,将满意的数据样本另存至新的数据集中。随后,您可以将这个经过精心准备的新数据集作为训练集,发起训练流程。
通过上述的方法,获得了一份高质量的训练数据集。
4、以训练数据集精调轻量大模型(学生)
选择精调基座模型ERNIE-Tiny-8K,并用第三步产出的高质量训练数据集进行精调,精调主要需要如下步骤:
4.1 配置训练参数进行实验
在参数配置过程中,您需要综合考虑模型的学习能力和计算效率。通过实验1到实验7的不同参数设置,您可以对比找出最优的配置,确保在保证性能的前提下最大限度地提高模型的训练效率。具体来说:
(1)迭代轮次
- 含义:迭代轮次是指完整遍历一次训练数据集的过程次数。在深度学习中,多个迭代轮次可以帮助模型更好地拟合数据。
- 配置逻辑:我们在实验中选择了不同的迭代轮次。较大的迭代轮次可以使模型更充分地学习数据特征,但可能导致过拟合。因此,我们通过实验来确定最佳的迭代轮次数。
(2)学习率
- 含义:学习率是模型在每次更新时学习的步长。较高的学习率可以加速训练,但可能导致模型不稳定;较低的学习率则可能训练时间过长。
- 配置逻辑:我们选择了1e-4、1e-5、3e-4 和 3e-5的学习率进行实验。起初使用较高的学习率以快速收敛,然后通过调整至较低的学习率以精细化模型参数。
(3)序列长度
- 含义:序列长度是指输入模型的文本序列的最大长度。较长的序列能够捕获更多的上下文信息,但会增加计算成本。
- 配置逻辑:我们选择默认的4k序列长度。
参数和训练方法配置展示如下:
参数配置 | 实验1 | 实验2 | 实验3 | 实验4 | 实验5 | 实验6 | 实验7 |
---|---|---|---|---|---|---|---|
训练方法 | 全量 | 全量 | 全量 | 全量 | LoRA | LoRA | LoRA |
迭代轮次 | 1 | 3 | 3 | 1 | 1 | 3 | 3 |
学习率 | 3e-5 | 3e-5 | 1e-5 | 1e-5 | 3e-4 | 3e-4 | 1e-4 |
序列长度 | 4k | 4k | 4k | 4k | 4k | 4k | 4k |
4.2 观察训练评估报告调整实验
观察实验3的训练曲线,实验3使用了全量更新的训练方法,迭代轮次配置为3,学习率配置为1e-5,发现Loss曲线不断降低且趋于稳定,训练收敛。
其中,我们在本次实验中调整了验证步数,关于验证损失(Validation Loss),当其下降并趋于平稳时,表明模型达到了最佳状态;若验证损失开始上升,则可能意味着模型出现了过拟合或训练不稳定的问题,需要调整上述参数重新进行实验。
5、对比评估得到“学生”模型能力逼近“老师”
通过上述的训练实验并观察评估报告中的验证损失(Validation Loss),已得到训练最佳状态的模型。我们需要进一步对比精调后的ERNIE-Lite-8K模型效果和精调前基线效果以及“老师”模型ERNIE-4.0-8K效果,来明确是否“学生”模型能力已逼近“老师”,符合业务的预期。
本次模型评估,我们选取了模型评估中的自动评估任务,依然选择与之前相同评估集、评估标准测试评估候选模型,并以0-1打分的方式对模型效果进行打分,符合预期则为1分,不符合预期则为0分,并计算每条分数的平均值和标准差,用于评估模型的综合效果表现与效果表现稳定性情况。
5.1 创建自动评估任务
在创建自动评估任务中,我们选择新建推理结果集,在待评估模型选择训练后的模型,数据集与之前相同的评估数据集即可。
评估方法配置中我们选择自动裁判员打分,主要关注裁判员模型打分标准差和裁判员模型打分平均值两个维度即可。
对于其中的配置项,我们选择ERNIE 4.0作为裁判员模型。由于我们的任务属于判别式任务,回复相同即为正确,不同即为错误。因此在右侧的变量中我们调整max_score为1,将steps的规则调整为“助手的回答判断的情感倾向与参考的回答一致打1分,否则打0分,然后最高分1分,最低分0分”。
5.2 分析自动评估结果
开启模型评估后,具体的打分情况如下:
实验结果 | 直接调用ERNIE-4.0-8K | 直接调用ERNIE-Tiny-8K | |||||||
实验1 | 实验2 | 实验3 (迭代轮次=3,学习率=1e-5) |
实验4 | 实验5 | 实验6 | 实验7 | |||
平均分 | 0.93 | 0.23 | 0.74 | 0.88 | 0.89 | 0.72 | 0.83 | 0.86 | 0.86 |
平均分 | 0.25 | 0.42 | 0.44 | 0.33 | 0.32 | 0.45 | 0.38 | 0.34 | 0.35 |
在精调模型评估与对比中,您需要主要关注平均分、标准差两个指标。
- 平均分:指模型在评估任务中获得的平均得分,反映模型的整体效果表现。实验3的平均分为0.89,高于其他实验且接近直接调用ERNIE-4.0-8K的0.93,表明其在任务中表现更佳。
- 标准差:指模型在评估任务中获得得分的标准差,反映模型表现的稳定性。实验3的标准差为0.32,低于其他实验且接近直接调用ERNIE-4.0-8K的0.25,表明其在任务中表现更稳定。
我们观察到,实验3进行SFT训练的ERNIE-Tiny-8K表现最好,该实验的平均分和直接调用ERNIE-4.0-8K接近。与此同时,其他实验采用了多种参数组合,SFT的结果也非常接近ERNIE-4.0-8K的效果。这一结果表明,模型蒸馏的方法在情感分析这一分类任务上是非常可行的,能够将轻量大模型的效果提升至与旗舰大模型相近的水平。
通过这些指标的对比,我们可以得出结论:在模型蒸馏过程中,基于旗舰大模型回复结果进行精调的轻量大模型,能够在情感分析任务中逼近旗舰模型的效果。
五、后续迭代与展望
后续千帆平台将会建设自动处理BLS日志、筛选数据以及更细粒度的对训练后的模型做评估等功能建设,进而帮助您更好的使用模型蒸馏。
事实上,模型蒸馏是一个持续迭代的过程。根据训练后的模型也可以继续通过模型蒸馏这套流程,产出更小的或者效果更好的模型供业务使用。
不仅在情感分析的场景,在大多数行业如教育、医疗、法律等具体任务场景中,模型蒸馏都可以替您节省成本,训练一个更符合您业务需要的大模型。