Skip to content

LLM自动生成SFT数据方法

内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。

1. SFT 数据集如何生成?

SFT 数据集构建通常有两种方法:

方法优势劣势适用场景
人工标注减少有偏数据,质量高成本略高垂直领域
LLM 生成(如 GPT-4)短时间内生成大量数据可能有偏通用场景,快速扩充

2. Self-Instruct 方法

2.1 什么是 Self-Instruct?

Self-Instruct(论文)是一个通过预训练语言模型自己引导自己来提高指令遵循能力的框架。

2.2 Self-Instruct 处理流程

步骤操作说明
步骤 1种子采样从 175 个种子任务中随机抽取 8 条自然语言指令作为示例,提示 InstructGPT 生成更多任务指令
步骤 2判断任务类型确定步骤 1 生成的指令是否为分类任务
步骤 3生成输入输出基于步骤 2 结果,用 InstructGPT 生成对应的"输入"和"输出"
步骤 4后处理过滤类似指令,去除输入输出重复数据,最终得到 52K 条英文指令

2.3 分类任务与非分类任务的处理策略

任务类型输出选项生成策略
分类任务有限的选项根据指令生成所有可能选项 → 随机选择特定类别 → 生成对应"输入"内容
非分类任务无数选项输入优先策略:先生成"输入",再根据指令和输入生成"输出"
Self-Instruct 流程:

种子指令 (8条) → InstructGPT → 生成新指令

                              判断是否为分类任务?
                              ↓              ↓
                           是(分类)        否(非分类)
                              ↓              ↓
                        生成选项列表    输入优先策略
                        随机选类别      先生成输入
                        生成输入        再生成输出
                              ↓              ↓
                              └──────┬───────┘

                              后处理过滤去重

                              52K 条英文指令

3. Backtranslation 方法

3.1 什么是 Backtranslation?

回译在传统机器学习中是一种数据增强方法:

中文 → 英文 → 中文(语义一致,文本不同)

3.2 SFT 数据生成中的回译

与传统回译不同,SFT 数据生成的回译(论文)是通过输出来生成指令,即反向构造:

回译类型传统机器学习SFT 数据生成
方向语言翻译:中文→英文→中文任务反转:输出→指令
目的数据增强利用输出反推指令

4. 两种方法对比

对比维度Self-InstructBacktranslation
核心思路模型自生成指令+输出从输出反推指令
数据来源种子指令 + 模型生成已有输出 + 模型反推
适用场景从零构建指令数据集利用已有输出扩充指令
论文arxiv:2212.10560arxiv:2308.06259

两种方法可以结合使用:Self-Instruct 生成初始数据,Backtranslation 扩充指令多样性。