AI大模型微调训练数据概要

Scroll Down

高质量微调数据编制方法

第一部分:高质量通用微调数据编制心法

核心目标:制作能让模型从“知道”变为“会做”的教科书级范例

四项黄金原则

  1. 质量压倒数量:1000条精雕细琢的数据,远胜10万条粗糙数据。
  2. 场景驱动,而非API驱动:数据应围绕“解决问题”展开,而非“展示函数”。
  3. 指令需“过度具体”:假设模型毫无背景,提供全部约束(技术栈、版本、格式、边界条件)。
  4. 输出需“生产就绪”:代码应包含错误处理、日志、注释,可直接集成到项目。

标准编制流程

  1. 定义目标:明确模型需掌握的单一、具体技能(如“用Pandas进行数据清洗”)。
  2. 设计指令
    • 提供角色与上下文(“你是一个数据分析师,正在处理销售数据…”)。
    • 明确列出要求(使用数字编号,如1. 处理空值;2. 格式化日期;3. 输出CSV)。
    • 给出输入输出范例
  3. 编写输出
    • 完整且可运行
    • 符合项目规范(命名、格式、错误处理)。
    • 附带简要解释(关键行注释)。
  4. 迭代与审查
    • 人工抽样检查:随机审查至少100条,确保指令与输出精准匹配。
    • 多样性检查:覆盖正面、反面、边界情况。

第二部分:面向AI Agent的微调数据特殊设计

核心升级:Agent数据不仅是“问答对”,更是模拟其“思考-行动-观察”内部决策过程的沙盘演练

五大关键设计要素

  1. 工具定义集成:每条数据应隐含或明确关联工具清单,说明名称、功能、参数。
  2. 思维链外化:在output中,必须拆解推理步骤。这是Agent学会自主规划的关键。
  3. 结构化动作输出:将“调用工具”设计为一种标准化的输出格式
  4. 多轮交互模拟:构建完整对话轮次,包含用户输入、Agent思考、工具调用、工具返回、Agent回应。
  5. 结果处理示范:展示如何解析、判断并利用工具返回的结果生成最终答复。

一个Agent数据的核心结构示例

{
  “conversation”: [
    {“role”: “user”, “content”: “北京天气怎样?要带伞吗?”},
    {“role”: “assistant”, “content”: {“thought”: “需先查天气,再根据降水建议。调用天气工具。”, “action”: {“tool_name”: “get_weather”, “parameters”: {“location”: “北京”}}}},
    {“role”: “tool”, “content”: {“result”: {“condition”: “多云”, “precipitation”: 70}}},
    {“role”: “assistant”, “content”: {“thought”: “降水概率70%,建议带伞。”, “final_answer”: “北京多云,降水概率高,建议带伞。”}}
  ]
}

通用数据 vs. Agent专用数据对比

维度通用微调数据AI Agent专用数据
核心目标完成单次、静态的问答或代码生成。完成动态、多步骤的任务,涉及环境交互。
输出重点最终答案的正确性与完整性。决策过程的合理性与行动序列的准确性。
数据结构简单的 {“instruction”: “”, “output”: “”}复杂的多轮对话,包含 thought, action, tool_response
评估标准输出是否符合指令要求。推理是否合理,工具使用是否正确,能否根据反馈调整。

实践路线图

  1. 启动:从你的项目中,选取10个最具代表性的任务,手动编制10条符合上述标准的“完美数据”,建立质量标准。
  2. 批量生产:根据这10条范例,编写脚本从项目历史(代码、提交信息、工单)中半自动化提取和构建更多数据。
  3. 格式转换:使用 LLaMA Factory 等框架,将你的JSON数据自动转换为目标基座模型(如Qwen、Llama)所需的对话格式(如ChatML)。你不必手动处理格式
  4. 持续迭代:用初步模型处理新任务,收集其失败案例,将这些案例作为反面教材或新的训练数据加入下一轮训练。

最重要的一步:立即动手,从你最熟悉的领域开始创建第一批高质量数据。这是构建实用AI Agent过程中不可替代、价值最高的工作。如果需要针对特定场景(如数据库操作、API集成)的设计范例,可随时提出。

高质量微调数据的使用

这是一个非常关键的操作问题。两种数据的使用路径和最终目标有显著区别,下图清晰展示了从数据到应用的全流程对比:

flowchart LR subgraph A[通用指令数据] A1[“高质量<br>instruction-output 对”] --> A2[“格式化<br>(如ChatML)”] A2 --> A3[“微调训练<br>(更新模型权重)”] A3 --> A4[“得到一个<br>更‘听话’的模型”] A4 --> A5[“直接用于<br>对话或生成”] end subgraph B[AI Agent专用数据] B1[“结构化多轮对话<br>含 thought/action”] --> B2[“格式化<br>(保持结构)”] B2 --> B3[“微调训练<br>(教会决策流程)”] B3 --> B4[“得到一个<br>会‘思考’的模型”] B4 --> B5[“必须接入Agent框架<br>(如LangChain)”] B5 --> B6[“框架解析动作<br>调用真实工具”] B6 --> B7[“得到一个<br>能‘执行’的智能体”] end A -- “路径对比” --> B

路径一:通用指令数据的使用(得到一个“专家模型”)

使用目标:让模型成为一个在特定领域(如编写Java工具类)知识渊博、回答准确的专家

使用步骤

  1. 数据准备:你已拥有格式良好的 {instruction, output} 对。
  2. 格式转换:使用训练框架(如LLaMA-Factory),选择一个对话模板(如ChatML),将你的数据自动转换为模型训练所需的文本序列。你无需手动拼接
  3. 执行微调:使用QLoRA等参数高效方法,在基座模型(如CodeLlama)上运行微调。产出是一组新的模型权重文件(如 adapter_model.safetensors)。
  4. 部署使用
    • 直接对话:将微调后的模型加载到任何支持该模型的聊天界面或API中(如Ollama、Text Generation WebUI)。你可以直接问:“如何用Commons Lang3安全拼接字符串?” 它会根据所学给出精准答案。
    • 集成到应用:将模型作为代码生成、文档撰写等任务的引擎嵌入你的工作流。

核心:你得到的是一个升级版的ChatGPT,它在你定制的领域内更专业。

路径二:AI Agent专用数据的使用(得到一个“智能体大脑”)

使用目标:让模型成为一个能自主规划、决定调用工具、处理结果的智能体决策核心。

使用步骤
第1-3步与通用数据相同:准备Agent格式数据 -> 格式转换 -> 微调训练。这一步产出的同样是一个“大脑”,但这个大脑被训练为输出结构化动作
最关键的第4步:与Agent框架集成这个大脑不能单独工作,它必须接入一个执行层。

  1. 选择框架:选用LangChain、LlamaIndex等框架,它能定义工具、解析模型输出、调用工具、管理状态。
  2. 关键配置:确保框架中工具的定义(名称、参数)与微调数据中的完全一致。这是成败的关键。
  3. 组装运行
    # 伪代码示意:以LangChain为例
    from langchain.agents import initialize_agent, Tool
    from your_model_loader import load_fine_tuned_model # 加载你微调好的模型
    
    # 1. 加载微调后的模型
    llm = load_fine_tuned_model()
    
    # 2. 定义与训练数据匹配的真实工具
    tools = [
        Tool(name="get_current_weather", func=real_weather_api, description="..."),
        Tool(name="search_database", func=real_db_query, description="...")
    ]
    
    # 3. 创建智能体,并指定其遵循与训练数据一致的格式(如ReAct)
    agent = initialize_agent(tools, llm, agent="react-chat")
    
    # 4. 运行!模型会输出“思考”和“行动”,框架会截取“行动”部分去调用真实工具
    agent.run(“查询北京天气,并总结是否需要带伞。”)
    

核心:你得到的是一个具备决策能力的“大脑”,必须与充当“四肢”的Agent框架结合,才能成为一个能行动的完整智能体。

对比与选择建议

特性通用指令微调AI Agent专用微调
产出物一个领域专家模型一个智能体决策引擎
使用方式可直接对话或调用必须与Agent框架结合使用
核心能力知识问答、内容生成任务规划、工具调用、多步推理
复杂度相对较低,易部署较高,需维护工具与框架
适合场景编写代码、解答疑问、创作文本自动化工作流、复杂任务处理、环境交互

给你的直接建议

  • 如果你的目标是让模型更好地回答你领域内的问题或生成特定代码,请使用通用指令数据进行微调。
  • 如果你的目标是构建一个能自动操作软件、处理工单、分析数据并生成报告的自动化流程,请使用AI Agent专用数据进行微调,并准备好与框架集成。