LLM-SFT训练指"北"
前言
垂类场景(游戏,法律,医学等)下,如何进行SFT训练,核心目的是让通用大模型适应特定领域知识和任务格式。
SFT的数据多样性到底是什么?什么叫高质量的SFT数据。
SFT阶段能注入知识吗?能是为什么,不能又是为什么?
通用基座如何提升模型垂类场景的知识能力?
评价指标
评价维度:
真实性:指输出包含准确的信息,不会胡编乱造、不会前后矛盾。
有用性:能够清晰理解用户意图,回答合理,并给出专业可靠的答复。
安全性:安全性指输出不包含政治敏感内容、色情或者暴力内容,不会对用户造成身体、心理或社交伤害,不威胁公共安全。
版更指标:GSB评估;人评(双盲);机评(position bias)
数据建设
冷启数据如何收集?
多样性怎么评估?
数据来源
真实数据
竞品爬虫。
内部过往积累知识。
合成数据
核心围绕:可控性,多样性。
Self-Instruct:给定问题分类+seed+examples做self-instuct。By GPT3。
Classification:可控
Filtering:过滤质量低,多样性去重。
Personas:prompt给定人设信息,从人设信息出发,构造合成数据。
多样性评估
From Kimi 1.5 tech report。
核心:让prompt/数据有标签体系。
游戏场景下:设想的维度,玩法x内容。
玩法:RPG,SLG,MOBA
内容:道具,人物,数值,攻略。
数据类目分布热力图:数据标注明显有了⽅向感,数据扩量更好量化。
踩坑实验
注⼊知识
背景:SFT后的模型,模型对于人名类的问题,统一回复是xxx副总裁。
原因:模型过拟合,强行注入知识,模型死机硬背,仅学到pattern,带来幻觉。
解法:剔除通用场景的人设注入数据,通过RAG方式进行检索生成。
fix后:
SFT仅仅只是behavior cloning。
垂类&通用知识占比
背景:原始数据中,通用数据的占比较少,仅约10~20%,其他3类数据(安全,游戏,内部)占比较大。
影响:
fix:调整训练数据占比,极大提升通用数据,并降低大幅降低垂域游戏数据占比。
结论:需要大量的通用数据,来保证模型的基础回复能力。
Less is more
By LIMA
问题:
原始训练数据存在大量的重复游戏知识数据,
数据样式,<游戏名>这款游戏发行商<发行商名>,是一款xxxx 这样的格式,
在SFT阶段pattern同质化太严重,属于无效数据,可能引起过拟合。
1.xx达人这款游戏发行商是广州xx有限公司,品类是3D Tiles、休闲益智、消除,应用描述:3D益智的解压消除小游戏,有手就能通关!
2.xx跳棋这款游戏发行商是宁波xx有限公司,是一款棋牌博彩题材的游戏,应用描述:跳棋双人对战,多人混战,好友团战。
3.xx风云这款游戏发行商是苏州xx有限公司,发布日期为2024-10-25,是一款中国历史题材的游戏,应用描述:女主晋升,古风时装轻松获取。
结果:SFT数据 10w量级 --> k量级。(高质量数据),SFT数据量级显著降低的情况下,并不明显影响模型最终评测效果。
结论:SFT阶段数据不是“越多越好”!
经验:在SFT训练数据数据与LLaMa、Yi等类似量级,保持在10-100k以内的水平。
Prompt一致性
背景
通⽤问答prompt会提到“不要回答xxx问题”,但实际SFT数据并没有保证遵守此设定,prompt
和实际回复⽅式的⼀致性对最终微调效果的影响是否有影响,一直是不清晰的点。
实验设置
以编程为例⼦,垂类人设的设定是不需要满⾜⽤⼾提出编程问题的需求,即可以⽤拒识/回避式回复。
数据:
k量级通⽤垂类数据(不包含编程)
14条编程相关数据(有满⾜式回复和回避式回复)
前提:
原底座会满⾜编程问题
“不回答编程问题”算是「垂类场景」新的指令遵循需求
实验结果:
结论:
#2 说明prompt与实际回复⼀致时是能很好完成新的指令遵循需求;
#1 和 #3 说明prompt说⼀套实际回复另⼀套的话,模型⼤部分情况是跟着实际SFT的回复⾛,此时
指令遵循是不可控的状态;
#2 只增加回避式回复会严重导致偏差,对满⾜式回复有需求的话需要做更进⼀步的对⻬(⻅下面)。
补充实验
与底座能⼒不同的新指令需要更多的数据;
简单SFT数据配⽐很难让相反能⼒的指令同时遵循做到100%。
说明数据标准的一致性很关键!
Conclusion
多样性到底是什么?
语义相似 不多样/同质?? ×(一般会做向量化去重)
五花⼋⻔的边缘问题 = 多样?×
覆盖类目品类体系 ✓
真实⽤⼾的In-depth/breadth需求(类似WizardLM Evol-Instruct) ✓
什么SFT数据叫⾼质量?
真实问题:prompt/问题不是某些“形⽽上”⼈⼠YY出来的 ×
风格一致:回答遵循同样⻛格、符合标注标准 ✓
模型能力:在模型能⼒范围内 ✓
标准清晰:不同⼈多次review都不会有明显意⻅ ✓
SFT能注入知识问题吗?会带来什么问题?
不要把LLM当作“超大号bert” ×
灾难性遗忘 ×
知识冲突与幻觉 ×
死记硬背 ×
Ref
The Unlocking Spell on Base LLMs: Rethinking Alignment via In-Context Learning
Smaug: Fixing Failure Modes of Preference Optimisation with DPO-Positive
https://github.com/LLaMafia/SFT_function_learning
LIMA: Less Is More for Alignment
Yi: Open Foundation Models by 01.AI
Llama 2: Open Foundation and Fine-Tuned Chat Models
STaR: Bootstrapping Reasoning With Reasoning
ReAct: Synergizing Reasoning and Acting in Language Models
Kimi k1.5: Scaling Reinforcement Learning with LLMs
END