数据飞轮-「猜你想问」
一、什么是数据飞轮
数据飞轮是一种通过不断迭代数据与模型,进而来提升性能的机制。在我们的平台上,数据飞轮的应用可以显著提高大模型的效率和效果。具体来说,这一机制包括从数据生成到模型应用的数据反馈循环。首先,我们对回流的数据结合真实的业务反馈进行筛选和人工标注,接着利用千帆平台进行二次训练,并对模型效果进行评估。如果评估结果满意,新版模型便可以上线替换之前的线上模型。通过这样的循环,模型在每次迭代中不断增强其能力,使其更好地适应变化的市场需求和用户偏好。
这种自我增强的飞轮机制不仅提升了模型的性能,还能有效降低长期的训练和运营成本,为企业带来更高的商业价值和用户满意度。在各个行业的业务场景中,这种持续优化的过程是实现企业级需求的重要保障。通过数据飞轮,用户在使用模型的过程中,体验会逐渐变得更加智能和高效。
二、数据飞轮的主要流程
1、训练第一版的线上模型: 构建符合业务场景prompt模板,结合您最初基于业务收集整理的数据训练第一版的线上模型。
2、推理日志与业务反馈数据结合:将您的线上模型上线到业务时,您可以根据业务的真实反馈,如大模型的采纳情况等双向评价数据,将二者结合来看,从而实现对我们的数据进行筛选处理,得到符合后续训练格式的数据。
3、数据筛选洞察与处理:得到符合训练的问答对数据后,可以通过千帆平台提供的数据洞察、数据标注、数据清洗、数据增强等功能,提升数据质量形成高质量的训练数据集。
4、训练新版模型:使用高质量的训练数据集对线上模型进行如SFT、KTO、DPO等方法的增量训练,从而得到新版模型。
5、对比评估模型效果更新线上模型:通过参考训练评估报告调整训练参数进行对比实验,如果增量训练后的新版模型效果好,即可替换当前的线上模型重新投入到业务场景中。
6、数据飞轮的持续循环迭代:通过不断收集数据、筛选数据、更新模型的路径,可以保持模型的持续循环迭代。
三、“猜你想问”场景描述
1、场景概述
"猜你想问"是一种智能推荐功能,旨在通过分析用户当前的输入和历史搜索行为,预测用户可能感兴趣的搜索或提问词条。这项功能在各种应用中都有广泛的应用潜力,例如搜索引擎、在线购物平台、知识问答系统等。在这些场景中,及时准确地提供相关建议可以显著提升用户体验,提高用户的搜索效率,增加用户黏性。
在“猜你想问”业务场景下,数据飞轮作为一种新兴的数据驱动方法,通过不断循环利用用户反馈数据,使业务中产生的新的数据又反过来丰富和优化训练数据,形成一个良性循环。这一过程不仅优化了用户体验,还为系统提供了宝贵的反馈数据,支持后续的模型优化和改进。
2、场景细化
本次“猜你想问”场景中,系统会根据用户的输入内容或之前的搜索行为,生成3个推荐词条。这些推荐词条旨在帮助用户快速找到所需信息,减少输入的时间和精力。
在业务端,如果用户对提供的推荐词条不满意,他们可以选择点击“换一下”按钮,获取新的推荐,这是一种对于大模型生成的内容而言负向的反馈;反之,用户会点击推荐词条,形成正向反馈,用户的行为产生新的偏好数据,参与下一次模型迭代训练。
这一功能的实现涉及多个步骤和组件的协同工作:
- 数据采集与预处理:首先,系统需要收集用户的输入数据以及历史搜索行为。这些数据经过清洗和预处理,成为模型训练的重要输入。
- 模型训练与部署:基于预处理后的数据,训练一个能够理解用户意图并生成推荐词条的模型。初始模型可能基于通用的大规模预训练模型,通过微调以适应特定的业务场景。
- 实时推荐生成:当用户进行搜索时,系统会实时调用训练好的模型,根据输入生成推荐词条。这一过程需要快速响应,以保证用户体验流畅。
- 用户反馈采集与分析:用户的交互行为(如点击推荐词条或“换一下”按钮)被记录为反馈数据。这些数据用于分析模型的表现,标记出用户满意与不满意的推荐。
- 持续优化与迭代:通过分析用户反馈,系统可以识别出推荐效果不佳的情况。基于这些反馈,新的数据集被生成,用于进一步训练和优化模型。这一过程称为“数据飞轮”,能够不断提高模型的准确性和用户满意度。
3、任务挑战
在实现"猜你想问"功能的过程中,您可能面临多重挑战:
- 数据多样性与质量:用户输入的数据可能五花八门且质量不一。如何有效处理这些数据并确保其代表性,关系到模型的表现。
- 模型准确性与效率:推荐模型需要在准确性和效率之间取得平衡。既要确保推荐结果的相关性,又要快速响应用户,保证低延时。
- 用户意图理解:用户的真实意图可能隐含在复杂的输入中,如何准确识别并生成相关的推荐是模型面临的重要挑战。
- 反馈循环利用:如何有效利用用户的反馈数据进行模型的持续优化,是实现数据飞轮的核心。需要设计合理的数据标注和处理流程,以确保每次迭代的有效性。
通过有效应对这些挑战,“猜你想问”功能可以不断优化,提升用户满意度和企业价值。
四、数据飞轮步骤
1、训练第一版的线上模型
1.1 构建符合场景要求的prompt模板
通常prompt主要由四部分组成,即任务定义、输出要求、上下文、输入。下图将对prompt模板组成各部分进行解释,并以「为用户指定旅游攻略」这一任务为例,构造一个基础的prompt示例。
基于“猜你想问”这个场景,按照上述的要求进行构造。其中prompt的四要素中,必需具备的是任务定义与输入。
经过上述内容构造的prompt示例如下:
[{"prompt": "你是一个多轮对话续写专家,你的主要任务是根据[用户与智能体的对话历史],续写出3条接下来用户最可能说的话。\n**用户与智能体的对话历史**\n用户:我想听一首与《登鹳雀楼》相匹配的曲子。\n智能体:这首《登鹳雀楼》是唐代诗人王之涣的杰作,表达了一种积极向上的意境和对更高境界的向往。根据你提供的诗词内容,我为你生成了一首与之相匹配的曲子。\n\n这首曲子采用了悠扬而富有动力的旋律,以体现诗词中的壮志豪情。在节奏上,我运用了渐进的方式,从平缓逐渐过渡到激昂,象征着诗人不断攀登、追求更高目标的精神。同时,我在乐曲中融入了一些古典元素,以凸显诗词的古典韵味。\n\n现在,虽然我无法直接为你播放这首曲子,但你可以尝试在各大音乐平台上搜索“登鹳雀楼 曲子”或相关关键词,可能会找到与这首诗词相匹配的音乐作品。其中,周芝叶、瓜瓜龙启蒙儿歌、高宇恒等不同版本的《登鹳雀楼》歌曲,都是根据王之涣的诗词所创作的音乐作品,你可以听听看是否符合你的期待。\n\n如果你对生成的音乐有任何建议或需求,欢迎随时告诉我。\n**智能体设定**\n作为音乐生成Agent,你的主要任务是根据用户提供的诗词内容,生成与之相匹配的音乐。你需要理解诗词的情感、节奏和意境,然后运用音乐创作的技巧,生成符合诗词风格的音乐。\n**续写要求**\n- 续写结果应该与对话历史保持一定的连贯性,不要完全脱离对话历史的范围。\n- 续写结果应该是根据对话历史,给出用户最可能说的话,避免与[智能体设定]中的描述混淆。\n- 续写结果中用户提出的要求或问题,应该在智能体能够回答的范围内。你可以根据[智能体设定]中内容,判断智能体是否能给出续写结果的权威回答。\n- 各条续写结果之间应该有足够的区分度,不能有文字上、语义上的重复。\n- 如果[用户与智能体的对话历史]中使用的是英文,那么续写结果也应该使用英文。总之,续写结果的语种应该与[用户与智能体的对话历史]保持一致。\n**特别注意**\n- 如果[用户与智能体的对话历史]中有要求用户进行选择、判断等行为时,续写结果也应该是模拟用户进行选择或判断。\n 例如:智能体给了用户ABCD四个选项,那么续写结果应该是选择选项中的某一个。\n 又例如:智能体让用户做出“是”或“否”的判断,那么续写结果应该也是“是”、“否”或者“不确定”。\n**输出格式**\n请根据以上续写要求和注意事项,给出你的3条续写结果,每条结果不超过20字。\n第一条:\n第二条:\n第三条:"]]}]
针对prompt示例中的内容您可能的疑惑进行如下解答:
(1)“#”、“\n”、“**”分别具有什么含义?
prompt的任务、输出要求、上下文等各部分之间,请用换行符(\n)、分隔符(如###;`;【】等)进行区隔;对于模型应当特别关注的约束条件,可以在描述前添加「注意」,表示强调,或使用markdown语法中表明加粗强调的**符号进行包裹。
(2)为什么没有按照Prompt框架顺序进行构造?
为使得Prompt有更好的表现,您可以按场景需要自行的组合要素顺序。
1.2 选择合适的基础模型训练
(1)构建合适的评测集
由于我们希望该功能在业务使用时,让用户快速的得到自己想问的问题,因此有着低时延、快速响应的需求。对此,我们考虑基于轻量模型作为基础模型训练。
构建评测集用于评估模型效果,选择效果最优的轻量模型。评测集选择需要尽量和线上实际情况的多样性分布保持一致,人工标注确保回复符合预期。以本次任务为例,我们准备了200条用户与智能体对话的数据与期望对应生成的回复,并构建了评估响应的规则。
【系统】
你是一个公平的裁判,你的主要任务是根据【用户的问题】中[用户与智能体的对话历史],评估【助手的回答】是否符合用户的需求。
**“猜你想问“要求**
1、连贯性与一致性:
“猜你想问”必须紧密衔接对话历史,不仅主题连贯,且语气和表达方式与对话历史保持一致,避免任何突兀或不自然的跳跃。
2、精准反映用户意图:
“猜你想问”应准确捕捉对话中用户的明确需求和潜在意图。不得随意扩展至对话未涉及的内容,或填入智能体无法处理的信息。
3、选项与判断的明确性:
在用户面临选择或判断的情况下,“猜你想问”应清楚表明选择理由,且该选择应合情合理,体现用户在对话中的倾向。
4、信息的正确性与适切性:
确保“猜你想问”的内容与对话历史提供的信息相吻合,并未超出智能体的设定范围。若未能满足此条件,则该项内容视为不可接受。
5、语言精确性:
“猜你想问”必须使用正确的语言和语法,与对话历史的语言保持一致。任何语法错误、用词不当或语言不自然的情况都将导致内容不合格。
6、补充与引导能力:
“猜你想问”需在对话的上下文中具备引导性,能够促进后续对话的展开,帮助用户更清晰地表达需求或获取所需信息。
1.第一条分数(0-1)分:
0分:根据上述评估维度,回答内容较差
1分:根据上述评估维度,回答内容较好
2.第二条分数(0-1)分:
0分:根据上述评估维度,回答内容较差
1分:根据上述评估维度,回答内容较好
3.第三条分数(0-1)分:
0分:根据上述评估维度,回答内容较差
1分:根据上述评估维度,回答内容较好
4.最终打分(0-1)分:
0分:三条回答总分小于2分
1分:三条回答总分大于等于2分
【用户的问题】
```json
{
"instruction": {{src}}
}
```
【助手的回答】
```json
{
"answer": {{prediction}}
}
```
【输出格式】
```json
{
"第一条分数": {
"score": "<具体的整数类型分数>",
"description": "<具体的打分原因分析字符串>"
},
"第二条分数": {
"score": "<具体的整数类型分数>",
"description": "<具体的打分原因分析字符串>"
},
"第三条分数": {
"score": "<具体的整数类型分数>",
"description": "<具体的打分原因分析字符串>"
},
"最终打分": {
"score": "<具体的整数类型分数>",
"description": "<具体的打分原因分析字符串>"
}
}
```
请注意区分您的最终任务和用户问题中提出的任务,最终的任务是完成评估打分任务,而不要直接回答给定的用户问题。 请按照输出格式给出评分理由和助手回答的得分,不要输出json格式外的内容。
【评估结果】
(2)评估基准模型
我们在ERNIE-Speed-8K、ERNIE-Lite-8K-0308、ERNIE-Tiny-8K为基准做了模型效果的验证。在评估里,我们将三条回答中,有两条及以上评分为1的定义为点赞回答,认为大模型可以充分的理解用户提问与模型回答。
我们观察到ERNIE-Tiny-8K的基础模型效果在该任务上,虽然点赞回答的占比很低,但由于其时延低且可以更好的支持并发,为满足业务使用,我们基于此数据选择ERNIE-Tiny-8K进行模型训练,构建数据飞轮流程进而满足业务。
当前千帆平台可以实现不带参考回答的评估,也就是仅对模型生成的结果和规则校验模型的优劣,结果如下:
ERNIE-Speed-8K | ERNIE-Lite-8K-0308 | ERNIE-Tiny-8K | |
---|---|---|---|
点赞回答占比 | 88% | 87% | 3% |
1.3 训练并验证第一版模型
我们基于业务理解整理了2000条左右数据,基于ERNIE-Tiny-8K模型做SFT全量更新以及LoRA的实验,参数和训练方法配置如下:
实验 | 基础模型 | 训练方法 | 迭代轮次 | 学习率 | 序列长度 |
---|---|---|---|---|---|
实验1 | ERNIE-Tiny-8K | 全量更新 | 1 | 0.00003 | 4096 |
实验2 | ERNIE-Tiny-8K | 全量更新 | 3 | 0.00003 | 4096 |
实验3 | ERNIE-Tiny-8K | LoRA | 1 | 0.0003 | 4096 |
实验4 | ERNIE-Tiny-8K | LoRA | 3 | 0.0003 | 4096 |
(1)迭代轮次
- 含义:迭代轮次是指完整遍历一次训练数据集的过程次数。在深度学习中,多个迭代轮次可以帮助模型更好地拟合数据。
- 配置逻辑:我们在实验中选择了不同的迭代轮次。较大的迭代轮次可以使模型更充分地学习数据特征,但可能导致过拟合。因此,我们通过实验来确定最佳的迭代轮次数。
(2)学习率
- 含义:学习率是模型在每次更新时学习的步长。较高的学习率可以加速训练,但可能导致模型不稳定;较低的学习率则可能训练时间过长。
- 配置逻辑:我们选择了默认的学习率进行实验。
(3)序列长度
- 含义:序列长度是指输入模型的文本序列的最大长度。较长的序列能够捕获更多的上下文信息,但会增加计算成本。
- 配置逻辑:我们选择默认的4k序列长度。
基于上述的实验产出模型,我们用上述准备的200条评估数据与构建规则对模型效果进行验证,结果如下:
其中蓝色对应实验1,青色对应实验2,紫色对应实验3,橙色对应实验4。通过图像我们观察到,实验四的结果最好,实际数据如下:
基础模型 | 实验1 | 实验2 | 实验3 | 实验4 | |
---|---|---|---|---|---|
点赞回答占比 | 3% | 58% | 49% | 59% | 79% |
对此我们可以发现,当迭代轮次为3的实验四点赞回答占比最多,模型回答的效果最好,对此我们将该模型部署成服务,投入到我们的业务中使用。
2、结合用户反馈,从推理日志挖掘构建数据集
在结合您的实际业务场景部署对应服务后,可达到为用户推荐更多相关问题的“猜你想问”效果。
如下图所示,大模型基于用户与智能体的问答历史给出了相关推荐问题:“请给出具体的定价策略。”、“商业变现的方式有哪些”、“详细点”,这些亦即大模型的推理生成结果。
2.1 推理日志投递与存储
对于大模型推理结果,您可通过开启推理日志投递的方式,将其保存至日志服务 BLS。并结合终端用户的真实反馈,从日志服务BLS的海量推理日志中挖掘构建高质量训练数据。
日志服务 BLS 支持存储推理服务的原始请求日志,其中包含线上用户问题与实际模型回答。如下所示,对于在线推理服务,您可为指定的“预置服务”或“我的服务”开启推理日志投递。
2.2 推理日志挖掘与下载
该步目标为:通过日志服务 BLS 完成推理日志遴选及处理。
BLS 提供了日志查询的功能,您可以根据业务需求自行编写日志检索语句,相关语法详见SQL语法。
下方提供了处理日志的示例语句:
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
示例语句的含义说明如下:
- 筛选时间信息,列名定义为time
- 筛选request中message字段的content内容且将换行符处理为空格,列名定义为prompt1
- 筛选response中result字段的内容且将换行符处理为空格,列名定义为response1
- 检索日志按照时间降序排列且限制查询结果的数量(返回前3100条记录)
处理前的原始推理日志——
处理后的推理日志——
最后,您可通过 BLS 统计分析页面的下载功能,将检索分析/处理后的日志下载导出为CSV文件。
2.3 用户反馈信息拼接
大模型的终端用户往往会对其推理回答给出丰富的反馈信息,主要分为以下两类:
- 明确语义的反馈,示例场景:点赞/点踩、满意度评价、采纳、拒绝、单选/多选择优等反馈维度
- 模糊语义的反馈,示例场景:重新生成、下载/导出、转发分享等反馈维度
您可结合业务指标与模型精调诉求,定义符合实际场景的用户反馈维度,并定期(如 T+1)将收集的用户反馈信息拼接到模型推理日志,多维度的反馈信息对于遴选训练样本很有帮助。
在“猜你想问”的本场景案例中:对于大模型生成的推荐问题列表,我们将用户的点击行为定义为正反馈信息,并为此类推理日志拼接上 'like' 的feedback反馈标签;相反地,无点击行为则定义为负反馈信息,并为此类推理日志拼接上 'dislike' 的feedback反馈标签。
拼接形成的单条示例数据如下:
[{"prompt": "你是一个多轮对话续写专家,你的主要任务是根据[用户与智能体的对话历史],续写出3条接下来用户最可能说的话。\n**用户与智能体的对话历史**\n用户:我梦见我自己回学校上学考试,你能帮我解读这个梦境的含义吗?\n智能体:您好,很高兴能帮助您解读这个梦境。梦见自己回学校上学考试,这是一个非常常见的梦境,通常蕴含着丰富的象征意义。\n\n1. **回忆与怀旧**:这个梦境可能反映了您对过去学生时代的怀念和回忆。学校作为学习和成长的地方,往往承载着我们的青春记忆。考试则可能象征着您在那个阶段所经历的压力和挑战。\n\n2. **面对挑战**:梦见考试也可能意味着您当前正面临某种挑战或考验,这种挑战可能与工作、生活或个人成长有关。梦境中的学校环境可能是一个隐喻,暗示您需要像学生时代一样,积极准备并应对这些挑战。\n\n3. **自我提升**:另一方面,这个梦境也可能是在提醒您,要不断学习新知识、新技能,以提升自己的竞争力和适应能力。学校是一个学习的地方,梦见回学校可能意味着您内心有追求进步和成长的渴望。\n\n4. **情绪反映**:此外,这个梦境还可能反映了您当前的情绪状态。比如,如果您在梦中感到紧张或焦虑,那么这可能是您对即将到来的挑战感到担忧;相反,如果您在梦中感到轻松或自信,那么这可能是您对自己的能力有信心,准备好迎接挑战。\n\n总的来说,梦见自己回学校上学考试是一个具有多重含义的梦境,它可能反映了您的回忆、挑战、自我提升和情绪状态。希望这个解读能对您有所帮助。您还有其他梦境需要解读吗?\n**智能体设定**\n你是周公解梦,专研于解梦知识,能提供各类梦境的解读和预示。你的任务是帮助用户理解他们的梦境,揭示其中的含义和预示的未来。\n**续写要求**\n- 续写结果应该与对话历史保持一定的连贯性,不要完全脱离对话历史的范围。\n- 续写结果应该是根据对话历史,给出用户最可能说的话,避免与[智能体设定]中的描述混淆。\n- 续写结果中用户提出的要求或问题,应该在智能体能够回答的范围内。你可以根据[智能体设定]中内容,判断智能体是否能给出续写结果的权威回答。\n- 各条续写结果之间应该有足够的区分度,不能有文字上、语义上的重复。\n- 如果[用户与智能体的对话历史]中使用的是英文,那么续写结果也应该使用英文。总之,续写结果的语种应该与[用户与智能体的对话历史]保持一致。\n**特别注意**\n- 如果[用户与智能体的对话历史]中有要求用户进行选择、判断等行为时,续写结果也应该是模拟用户进行选择或判断。\n 例如:智能体给了用户ABCD四个选项,那么续写结果应该是选择选项中的某一个。\n 又例如:智能体让用户做出“是”或“否”的判断,那么续写结果应该也是“是”、“否”或者“不确定”。\n**输出格式**\n请根据以上续写要求和注意事项,给出你的3条续写结果,每条结果不超过20字。\n第一条:\n第二条:\n第三条:", "response": "第一条:那我应该如何应对这种挑战呢?\n第二条:这种梦境有什么特别的预示吗?\n第三条:有没有什么方法能让我更自信地面对挑战?", "feedback": "dislike"}]
接下来,您可使用平台的通用数据集功能,将文件导入至对象存储 BOS 或平台共享存储,构建用于训练的原始SFT数据集,如下所示。
附注:对于.jsonl/.xlsx/.csv 文件格式,千帆平台数据集支持以自定义字段(custom fields)来记录用户反馈信息,适用于Prompt+Response和Role(user+assistant)两种数据格式。在拼接用户反馈信息形成数据集时,您可参照自定义字段的组织格式,以便平台顺利解析。
3、数据洞察与提质,构建高质量数据集
数据集的质量对于模型训练的效果起着至关重要的作用。为提升训练效果,您可以在千帆平台对原始数据集进行精细化洞察与处理,为数据提质。
以下是一套操作指南,旨在帮助您洞察并提升数据集的质量。当您确认数据集已达到预期的标准与要求时,便可进入下一阶段的训练流程。
3.1 数据洞察:结合用户反馈信息
在平台的数据洞察功能模块,您可选择上一步构建的原始数据集,对样本进行深入的可视化探索,并根据精调目标进行训练样本的筛选与处理。
一般而言,训练样本分布比例应尽量与线上实际场景相吻合,保障模型训练效果。
如下图所示,在数据洞察工作台, 您可基于用户反馈字段对样本集进行定向筛选,并将带 'like'和 'dislike'反馈标签的样本分别构建为两个数据子集:
- 带 'like'反馈标签的样本集,构建为 “猜你想问_数据集_正反馈” 的数据子集
- 带 'dislike'反馈标签的样本集,构建为 “猜你想问_数据集_负反馈” 的数据子集
3.2 为负反馈数据集提质
对于上一步构建的“猜你想问_数据集_负反馈”的数据集,其原有的回答质量不达预期,未被终端用户有效采纳,因此需对模型回答进行提质,从而为模型精调构建更高质量的 Response。
推荐方式一:借助旗舰模型,批量生成高质量Response
您可使用平台的推理结果集功能,推理模型选择ERNIE 4.0,对负反馈数据集的Prompt进行批量推理,重新生成更高质量的Response。
推荐方式二:数据标注
人工数据标注与审核可有效保障样本质量,您可使用平台的数据标注对数据集进行精标改写。
3.3 数据清洗
此外,BLS的原始推理日志中可能会夹杂对训练有害的文本内容,例如关乎模型安全的个人敏感信息。为此,您可以创建清洗任务,并根据实际需求灵活配置清洗流程。
您可用过上述的方法对数据集开展持续迭代实验,直到获得高质量的训练数据集。
4、以训练数据集精调第二版大模型
数据飞轮通过不断地利用新数据来增强模型的能力,使其在特定业务场景下表现得更加精准。我们选择第一版精调后的ERNIE-Tiny-8K模型,并采用上述得到的高质量训练数据集,从而实现“猜你想问”功能的优化:
4.1 流程梳理
1、首先,数据飞轮的核心在于利用用户交互数据来不断改进模型。第一版模型部署后,产生的业务调用数据中包含了用户输入(prompt)、模型回复(response)以及用户反馈(feedback)。用户反馈标签分为'like'和'dislike',分别代表用户对模型回复的满意度。通过对这些标签的分析,我们能够识别出哪些对话是模型表现良好的(like),哪些则需要改进(dislike)。
2、其次,我们对数据进行切片,分离出'like'和'dislike'两部分。对于'like'数据,我们认为其质量较高,满足用户的真实需求,可以直接保留用于后续的训练;而对于'dislike'的数据,我们采取进一步的处理步骤。这里,我们借助性能更为优秀的模型ERNIE-4.0-8K来请求新的response,目的是通过这种方式来改善原有的'dislike'数据的质量。此步骤的关键在于选择一个在当前任务上表现更好的模型,以确保生成的新的response更符合用户期望。在获取了新的response后,我们用其更新原有的'dislike'数据。接着,我们将经过更新处理的'dislike'问答对数据与原始的'like'问答对数据组合,形成一套新的训练数据集。
3、最后,这套新的数据集被用于在原模型基础上进行新一轮的增量训练。参考此方法进行多轮的SFT训练与模型迭代,模型能够逐步提高其在“猜你想问”功能上的表现,增强对用户意图的预测能力以及对高质量响应的生成能力。
整个数据飞轮过程的关键在于持续的反馈循环:通过用户反馈来识别模型的不足,通过更优秀的模型生成新的数据来弥补不足,最后通过再训练来提升模型性能。这种方法不仅能够有效提升模型的准确性和用户满意度,还能使模型持续适应不断变化的用户需求。
4.2 配置第二版训练参数进行实验
经过前文的数据处理后,我们在第一版通过实验4得到的训练模型基础上进行增量训练。通过实验5-8的不同参数设置对比找出最优的配置,确保在保证性能的前提下最大限度地提高模型的训练效率。具体参数配置与实验结果如下:
实验 | 增量 | 训练方法 | 迭代轮次 | 点赞回答占比 |
---|---|---|---|---|
ERNIE-Tiny-8K | / | / | / | / |
实验4 | / | LoRA | 3 | 79% |
实验5 | 实验4 | LoRA | 3 | 66% |
实验6 | 实验4 | 全量更新 | 3 | 80% |
实验7 | 实验4 | LoRA | 5 | 78% |
实验8 | 实验4 | 全量更新 | 5 | 84% |
基于实验结果,对比原始ERNIE-Tiny-8K模型和第一版SFT调优后的实验效果,我们建议您:
1、选择LoRA方法:根据实验结果,LoRA方法在保持模型性能的同时,能够有效提高点赞回答数量并减少无效回答和点踩回答数量。使用全量更新微调时模型效果均有不同程度的下降,这一方面原因在于训练数据的整体质量不高,另一方面在于数据数量相对较少。
2、迭代轮次的选择:本次实验中,实验8的5次迭代轮次效果最好,建议您在训练中也进行多次参数配置试验,是模型达到最佳性能。
3、数据集质量控制:确保数据集的高质量,关注对'dislike'数据的更新,并和原'like'数据进行拼接形成新数据集,在此基础上进行增量训练,以提高训练效果。
4、持续反馈循环:继续利用用户反馈来优化模型,保持数据飞轮的运作,使模型能不断适应用户需求变化。
总结来说,经过第二版大模型的调优后,模型的效果显著提升。点赞回答数量明显增加,占比相较于原始ERNIE-Tiny-8K模型和第一版SFT调优后分别提升81%和5%,无效回答和不满意回答显著减少。这种优化不仅提高了模型对用户意图的预测能力,还增强了对复杂问题的响应准确性。
至此,我们可以得出如下结论:数据飞轮持续的反馈循环机制确保了模型能够适应不断变化的用户需求,提升了整体用户满意度。并且这套路径可以持续用更符合用户喜好的数据优化模型。
五、后续迭代与展望
后续千帆平台将会建设自动处理BLS日志、筛选数据、结合业务反馈数据以及更细粒度的对训练后的模型做评估等功能建设,进而帮助您更好的使用数据飞轮。
飞轮的过程不仅可以使用SFT方法,也可以根据用户正负向的反馈情况自动将数据处理成KTO、DPO数据,后续再用KTO、DPO去做后续的数据飞轮增量训练。
事实上,数据飞轮也是一个持续迭代的过程。根据训练后的模型也可以不断通过数据飞轮,更新模型让模型更好的符合业务预期与实现场景。