问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SFT 指令数据生产

创作时间:
作者:
@小白创作中心

SFT 指令数据生产

引用
1
来源
1.
https://www.raygecao.cn/posts/data-generator/

在大模型时代,高质量的数据成为了决定模型性能的关键因素。本文将探讨如何通过合成数据和LLM来高效生产高质量的训练数据,重点介绍多种基于LLM的数据生产方案。

自从 LLaMa 开源后,很多小公司不再选择高成本的从头训练大模型的方案,而是选择在一个基础模型上进行训练,可以细化为两个训练过程:

  • 预训练:使用无监督的方式对基础模型进行训练,使用的是未经标注的数据。
  • SFT:使用监督方式对预训练的模型进行微调,使用的是已标注的指令数据。

合成数据

预训练的数据通常来自于某一领域的非结构化数据,经过清洗后喂给基础模型,此类数据通常来自于网络爬虫、客户知识库等。而 SFT 所需的数据是需要经过标注的,通常是人工标注的数据。考虑到人工标注的成本与效率,合成数据得到了广泛的应用。

合成数据是运用计算机等手段模拟生成的人造数据,它不包含真实数据,但从统计角度上反映了真实数据。使用合成数据进行 SFT 存在如下好处:

  • 可以短期内产生大量数据、可以进行自动标注,减少人工成本。
  • 合成数据避免了真实数据中涉及用户隐私的问题。
  • 很容易地制造出现实中小概率出现的 corner data。

SFT 数据

SFT 通常采用标注的数据进行监督训练,这类数据被称为指令数据。指令数据本质上是一个问答对,但根据问题的具体程度,将指令分为以下三部分:

  • Instruction:描述具体任务的指令,如“请根据给定内容提炼摘要”。
  • Input:作为指令的补充,如上例中的给定内容。如果指令中的任务已明确,则其应为空。
  • Output:任务的解答。

数据生产方案

对于 SFT 这种标注数据,通常借助 LLM 进行批量生成,下面详细介绍数据生产方案。

Self-Instruct

使用 LLM 生成指令数据的最早的方案是SELF-INSTRUCT,该方案使用 GPT3 生成了大量指令数据并对 GPT3 进行了微调,指令生成流程如下:

Self-Instruct 流程图

  • 使用 175 个人工标注的指令数据作为种子数据放入任务池。
  • 随机选择种子数据,并结合指令生成的 Prompt,使用 LLM 批量生成指令。
  • 对生成指令进行划分,分为分类指令与生成式指令。
  • 借助 LLM 生成 Input 与 Output,分类指令采用 Output-first方法,生成式指令采用 Input-first方法。
  • 对生成的指令进行过滤,如问答长度过滤、RoughL 关联性过滤、黑词过滤等,并将过滤后的指令放入到任务池中进行迭代。

Self-Instruct 使用一个通用的 prompt 与种子数据,通过 GPT3 生成新的指令,进而生成相关的输入输出。种子数据用作示例,可以便于 LLM 返回标准的解析格式并以续写模拟的方式完成新指令的生成。

每次随机从种子数据中筛选出几个示例,这种随机性使得生成的指令具有丰富的多样性。

论文中给出了生产的数据质量,通过这些高质量的数据对 GPT3 进行微调,评测效果提升了33.1%


Self-Instruct 生成数据的质量

Alpaca

Stanford 在此基础上进行了进一步扩展,使用 GPT3.5 生产出 52k 条数据并对开源的 LLaMa 模型进行微调,训练出Alpaca模型,这也是利用大模型训练小模型的经典之作。

Alpaca 在指令生成上沿袭了 Self-Instruct 的套路,但对此方法进行了简化:

  • 指令不再区分分类指令与生成式指令。
  • 使用 GPT3.5 一次性生成指令、输入与输出,避免指令和输入输出的两阶段生成。

借助于更强大的 LLM,Alpaca 简化的方法生成的策略仍然具备丰富的多样性,仅通过几百美元的成本快速训练出一个性能大幅提升的语言模型。

Chinese-LLaMA-Alpaca

Chinese-LLaMA-Alpaca将 Alpaca 的数据生产应用到中文领域,借助 GPT3.5 生成中文指令去微调 LLaMa。

该项目进一步简化的指令生产的流程,相对于 Alpaca 移除掉了种子数据,使用更通用的 prompt 生成多样性的中文指令数据。

ALPAGASUS

AlpaGasus在 Alpaca 指令集基础上,借助 LLM 进行了进一步过滤,将低质量的指令数据过滤掉。

其主要的思路是将 Alpaca 生成的指令逐条送给 ChatGPT 进行评分,选择评分高的一小批数据对 LLaMa 进行微调。

使用 LLM 评分过滤的方式将 52k 指令集过滤到 9k,微调后的性能有显著的提升。

alpagasus vs alpaca

除了性能的提升,训练的成本也降低了很多,节省了大量训练时间。这表明数据质量对于 SFT 影响巨大,而数据数量反而对模型性能的影响有限。

与 AlpaGasus 类似,EasyInstruct引入了插件式的指令清洗组件,将数据生产与数据清洗流程打通。

Self-QA

Self-QA使用无监督的方式代替手工编写的种子指令,将非结构化的数据喂给 LLM,并让其根据此数据上下文生成指令数据。

Self-QA 使用无监督数据生成指令

指令生成 Prompt

总结

大模型对数据数量和质量提出了进一步要求,合成数据以其低成本、高灵活性在模型微调中扮演了重要的角色。 本文讨论了借助 LLM 进行数据生产的方案,顺着这个思路我们看到 LLM 在智能化、自动化方向上的有着广泛的应用,甚至在某些环节中可以做到自我完善。

从策略演进的过程我们看到,数据生产一方面依赖于大模型本身能力的提升,另一方面源于对 Prompt 工程的探索。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号