什么是数据洞察
1. 如何理解数据洞察与处理
在大语言模型的精调领域,数据准备占据着至关重要的作用。贴合业务精调目标的高质量SFT数据集,可有效提升大语言模型的训练效率及效果表现。
SFT数据集评价标准
什么是一份好的SFT数据集?以下列举了一些经过验证的实践经验:
- 精调数据最好来自于业务场景的真实调用数据,样本分布情况相近,从而让大模型更好的参考学习。
- 针对用户反馈差的问答数据,人工标注改写为更优质的大模型回复,以定向调优模型表现。
- 一份SFT数据集尽可能聚焦一类场景,如角色对话、意图识别、摘要生成中的某一类场景。
- SFT数据集最低需要准备100条数据,建议达到千条的数据量级为优。
- SFT的数据质量远比数据量级更为重要,为了追求数据量级而混入了低质量的数据,反而会让模型效果变差。
- 除了垂直的业务数据集,还可以适当准备些该领域的高质量通用数据集。在SFT训练时混合一定比例,有利于保障基座模型的语言能力。
数据准备
基于上述经验,若想打造高质量的SFT数据集,数据准备往往包含两个关键过程:
- 数据洞察:“已有的数据集是怎样的?”
通过数据洞察,对已有数据集进行多维度的“诊断”分析,例如样本长度分布、字段缺失情况、某些场景的样本数量占比等。结合实际业务场景和精调目标,对数据样本进行定向遴选、删改加工等。 -
数据处理:“要对数据集进行怎样的处理?”
很多情况下,拟用于构建SFT精调的数据集往往面临数据量不足或样本低质的难题。这时往往需要使用数据清洗、增强等手段对数据集进行由少到多、去粗取精的处理。上述过程中,数据洞察获得的样本分布情况,将会作为数据处理的重要依据。反过来,数据处理的输出数据,也可通过数据洞察来进一步评估数据质量。
如此以往,数据洞察与处理循环迭代,直至数据质量与数据量达到SFT精调要求,由此开启模型精调之旅。
2. 适用场景与目标用户
当你手头有一份SFT数据集并且要对样本进行深度分析时,数据洞察为您提供了一个多方位诊断、精细化操作的数据集工作台。例如:
- 数据集混杂着未标注样本,需要过滤该类数据并发起模型训练。
- 数据集部分样本的字段值空缺/特殊字符率过高,对模型训练有害,需要识别并去除此类样本。
- 数据集中混杂着多种业务场景的样本,想要从中遴选某一类场景的样本构建数据集,用于后续的定向调优。
- 从BadCase数据集中选择微数据,提升模型微调效果。
-
......
一般意义上,数据洞察与处理往往由具备AI数据准备经验的开发工程师/数据科学家等角色开展。
此外,千帆精调样板间后续将引入更多的LLM数据准备理念及最佳实践,降低大模型SFT数据洞察与处理的认知门槛。
3. 数据洞察提供了哪些能力?
我们以人工客服对话多标签生成的场景为例。
在典型的客服对话场景中,我们往往通过分析顾客与人工客服之间的文字对话信息,识别顾客的“意图”标签和更为深层的“原因”标签,从而为客户服务及后续营销策略提供顾客画像信息。
例如,顾客因地址填写错误与人工客服沟通,陈述希望能够取消订单。该场景中,取消订单是对应的“意图”标签,地址填写错误是对应的“原因”标签。
对于该案例,为了能让大模型从一段客服对话中按照指定格式要求,准确抽取顾客的“意图”标签和更为深层的“原因”标签,我们选择通过SFT调优大模型的该任务表现,下述展示了SFT数据准备的过程。
3.1 结合自定义业务字段,构建SFT数据集
结合存量的客服历史对话记录及 “意图”、“原因” 两类业务标签集,收集构建对话语料,并上传为千帆平台数据集。
以下为该场景数据集的示例JSONL文件,上传至平台数据集后的效果:
一般而言,SFT数据集的基本字段包含 ''system" / "prompt" / "response",该类字段在精调时会参与模型的实际训练。
此外,数据集每个样本也可能附带业务属性信息,例如:客服对话场景数据集的每条样本,有可能归属 “售前”、“售中”、“售后”的一种场景,该类业务信息往往也能成为数据洞察的重要依据。
您可在平台上传SFT数据集时,添加辅助性质的自定义业务字段——
该客服对话案例中,在 "prompt" / "response" 基本字段之外,我们为每条样本附带添加了 "cls"(每个样本对应的场景类别:“售前”、“售中”、“售后”),以及 "intent"(每个样本对应的“意图”) 两个自定义业务字段,有助于在数据洞察环节为我们提供更多的样本信息。
注意:SFT数据集中,System、Prompt、Response、Weight 为平台预留字段,会实际参与模型训练。您在数据集JSONL文件构造自定义业务字段时,需确保字段命名不能与平台预留字段重复。
3.2 开启数据洞察
您可对上一步构建的SFT数据集开启数据洞察,如下是洞察工作台示意:
- 左侧数据洞察图表区,为您提供每个字段的样本分布信息。
- 右侧数据表格区,为您提供精细化筛选、排序,以及拆分构建数据子集的能力。
★ 可视化图表:多方位统计样本分布|呈现关键指标信息
样本长度分布如何?样本乱码究竟有多少?洞察图表一览无余~
平台为您展示数据样本的可视化统计图表,自动检测识别出数据集中样本分布情况,给出智能洞察建议。
- 围绕字符数的样本分布:最小字符数、最大字符数、字符数直方图分布
- 围绕特殊字符率的样本分布.
- 每条样本的指标值;对应所处的图表区间
- "prompt" 字段:通过洞察图表不难发现,字符数分布相对分散。SFT场景中,我们建议 "prompt" 的字符数分布与实际对话/推理场景分布尽可能保持一致,这样可发挥最佳精调潜力。
此外,您可通过数据表格区提供的升降排序或高级筛选能力,遴选特定字符数的样本,例如 处在 320~450 字符数区间的样本集合。
- "response" 字段:数据集中混杂着仅含 "prompt" 不含 "response" 的无标注样本。通过对数据表格区添加 "response" 为空的筛选条件,您可定向遴选并剔除此类无标注样本。
★ 交互式工作台-数据灵活下钻:多筛选条件组合嵌套|升降排序|样本删除&改写|全局检索 |数据子集构建
有了样本可视化洞察,要随之进行样本遴选及处理?交互式工作台提供完备数据探索筛查、加工能力~
★ 多条件组合筛选|升降排序
- 按照文本内容|字符数|特殊字符率对样本进行精细化遴选及升降排序,支持 10+ 筛选运算符
- 支持 且/或 多条件的嵌套组合,满足海量样本的复杂筛选场景
例如,您可通过高级筛选能力,将 “文本内容” 包含 “非常抱歉听到您的披萨有问题” & “字符数”小于 30 & “特殊字符率” 小于等于 0.3 的样本进行定向筛选。
★ 样本删除&改写|自定义字段配置&全局检索
-
将不符合要求的“问题样本”进行批量删除或改写
- 例如,在该案例的对话场景统计中,我们发现"prompt"字段的字符数往往在500字以下。为了保障精调效果,则可以配合高级筛选能力,对"prompt"字符数超过500的样本进行批量剔除。
- 特别地,在多轮对话场景下,自定义字段显示与排序可以让您聚焦洞察特定轮次对话的样本情况。
★ 数据拆分:灵活抽取样本批次、字段集合,构建数据切片
最后,您可将符合特定条件的样本集,从当前数据集拆分并构建新的数据子集。新的数据子集可进一步开展数据清洗、数据增强等处理操作,处理后的数据集可再度开展数据洞察。
该案例中,通过数据洞察我们发现,表达“如何提交评价”意图的样本占比相对较少,则可以将该类场景的样本集拆分构建成新的数据子集。
新的数据子集可结合千帆平台的数据增强功能,对“如何提交评价”意图类的样本进行自动扩充,增强后的数据集可再次进入数据洞察进行质量评估。
4. 数据洞察/增强/清洗闭环迭代
基于数据洞察提供的围绕样本透视/遴选/处理等方面的丰富能力,您可以进一步结合千帆平台的数据增强/清洗等服务,持续开展SFT数据集的迭代开发,直至数据质量与数据量满足训练要求,由此开启模型精调之旅。