分享
L2G2-GraphGen:训练数据合成实践
输入“/”快速插入内容
🚀
L2G2-GraphGen
:训练数据合成实践
用户1672
用户1672
用户5110
用户5110
用户8666
用户8666
2025年6月3日修改
文档尚处于草稿阶段,完善中
在基础课程第4节里,大家已经知道了如何使用
XT
uner微调InternLM3系列模型。
然而,在垂域模型(如医疗、农业)训练中,常常会面临数据短缺的问题。
用 SFT(Supervised Fine-Tuning)给模型注入新知识,需要数十万的样本量。同时,领域数据的标注需要专业背景,普通人难以胜任。此时数据合成手段是刚需。
1.
GraphGen介绍
GraphGen是一个基于知识图谱的SFT数据生成框架。
该框架通过构建细粒度知识图谱、识别 LLMs 的知识盲点、并生成多风格的内容来提高模型在知识密集型任务上的表现。GraphGen 适用于三种关键问答场景:原子问答(atomic QA)、聚合问答(aggregated QA)和多跳问答(multi-hop QA)。
•
Atomic QA:最基础的问答形式,专注于单一知识点或事实。
•
Aggregated QA:涉及多个知识点或复杂信息的整合。
•
Multi-hop QA:需要通过多步推理,结合多个知识点才能回答。
Workflow图
Github仓库:
https://github.com/open-sciencelab/GraphGen
2.
GraphGen流程解析
1.
知识图谱构建
•
文本分割
:将原始文档分割成语义连贯的小片段。
•
实体与关系提取
:使用 Synthesizer Model 从片段中识别和提取实体及其关系。
•
知识图谱聚合
:将不同片段中的相同实体或关系的描述自动合并,形成知识图谱。
2.
理解能力评估
•
知识表示:
将知识图谱中的每个关系视为一个知识陈述
Ri
,并生成其改写版本及否定版本。
•
置信度量化:
通过 Trainee Model 对这些陈述的置信度进行评估,计算其对每个知识点的理解程度。
•
理解损失计算:
通过计算真实分布与预测分布之间的交叉熵,来衡量 Trainee Model 对知识的理解差距。
3.
图组织
•
子图提取:
执行
k
-hop 子图提取,以有效组织知识图谱。采用深度策略、长度策略和选择策略来平衡子图的复杂性、相关性和计算可行性。
4.
问答对生成
•
原子 QA 生成:
从单个节点或边生成基础问答对。
•
聚合 QA 生成:
组织和改写子图中的数据,生成涉及多个实体和关系的综合性问答对。
•
多跳 QA 生成:
明确实体间关系,生成需要多步推理的问答对。
3.
环境
1.
使用conda创建环境
代码块
Plain Text
conda create -n graphgen python=3.10 -y
conda activate graphgen
2.
下载GraphGen仓库,并安装依赖
代码块
Plain Text
git clone https://github.com/open-sciencelab/GraphGen.git
cd GraphGen
pip install -r requirements.txt
4.
运行GraphGen
3.1 使用Gradio Demo进行简单数据合成
1.
运行Gradio Demo,执行下述命令