大模型sft-数据构建和选择
1 数据形式
一、通用文本格式
1. 单轮问答(文本对)
-
结构:输入(Input)与输出(Output)的简单配对。
-
格式示例:
[ {"input": "如何学习Python?", "output": "建议从基础语法开始,逐步实践项目。"}, {"input": "推荐一部科幻电影", "output": "《星际穿越》是一部经典的科幻作品。"} ]
input,output "如何学习Python?","建议从基础语法开始,逐步实践项目。" "推荐一部科幻电影","《星际穿越》是一部经典的科幻作品。"
-
适用场景:文本生成、翻译、摘要等单轮任务。
-
优点:简单易用,兼容大多数模型。
-
缺点:无法处理多轮对话或复杂上下文。
二、对话格式
1. 多轮对话(Hugging Face推荐格式)
-
结构:使用
messages
字段记录完整对话历史,每条消息包含role
(角色)和content
(内容)。 -
格式示例:
[ { "messages": [ {"role": "user", "content": "推荐巴黎的必去景点"}, {"role": "assistant", "content": "埃菲尔铁塔、卢浮宫值得一游。"}, {"role": "user", "content": "卢浮宫门票价格?"}, {"role": "assistant", "content": "常规门票17欧元,每月第一个周六免费。"} ] } ]
-
适用场景:客服对话、聊天机器人等需要上下文的任务。
-
优点:保留完整对话逻辑,适配对话模型(如LLaMA-2-chat)。
-
缺点:存储空间较大,需处理长文本分块。
2. 角色扮演对话
-
结构:添加
system
角色定义助手行为,增强对话引导。 -
格式示例:
{ "messages": [ {"role": "system", "content": "你扮演李白,用唐诗风格回答"}, {"role": "user", "content": "如何看待现代都市生活?"}, {"role": "assistant", "content": "钢筋林立遮星月,车马喧嚣乱心弦。"} ] }
-
适用场景:个性化角色对话、风格迁移任务。
三、指令微调格式
1. Alpaca风格(指令-输入-输出)
-
结构:明确任务指令(Instruction)、输入(Input)和期望输出(Output)。
-
格式示例:
[ { "instruction": "将句子翻译成英文", "input": "人工智能将改变未来。", "output": "Artificial intelligence will reshape the future." }, { "instruction": "写一首关于春天的诗", "input": "", "output": "春风拂面花香溢,绿柳垂丝映碧池……" } ]
-
适用场景:任务导向的指令遵循模型(如Alpaca、Vicuna)。
-
优点:任务定义清晰,支持零样本学习。
-