作为大模型落地的核心环节,微调的本质是让预训练模型在保留通用能力的基础上,精准适配特定场景需求——而数据集格式的规范性、算法选择的适配性、参数配置的合理性,共同构成了微调效果的“铁三角”。LLaMA-Factory 凭借多格式数据集支持、灵活的微调策略与全流程训练工具链,成为工业界快速落地大模型的首选框架。本文将融合“数据集工程+算法原理+参数调优+场景实战”四大维度,既保留可直接复用的实操方案,又深化算法底层逻辑与参数场景绑定,为资深工程师提供“知其然且知其所以然”的完整指南。
一、数据集工程:格式选型与场景化规范
数据集是微调的“燃料”,其格式设计直接决定模型能否理解任务目标。LLaMA-Factory 核心支持 Alpaca 和 ShareGPT 两大格式,覆盖从单轮指令到多模态、从偏好对齐到工具调用的全场景,选型的核心是“任务复杂度匹配格式能力”。
1.1 两大核心格式:适配逻辑与对比
| 对比维度 | Alpaca 格式 | ShareGPT 格式 |
|---|---|---|
| 核心优势 | 结构简洁、支持场景广(单轮/多轮/预训练/KTO/多模态),数据集构建成本低 | 支持多角色(human/gpt/function_call/observation),可复现复杂交互流程,适配对话类任务 |
| 数据组织 | 以“指令-输入-输出”为核心骨架,支持 system 指令(全局约束)、history 字段(多轮扩展),字段语义明确 | 以 conversations 列表为核心,按角色顺序组织对话流,每个节点包含“from”(角色)和“value”(内容),支持工具调用、结果反馈等复杂链路 |
| 适用场景 | 单轮任务(文本分类、摘要、公式计算)、预训练增量学习、多模态融合、KTO 训练(二分类反馈) | 多轮对话机器人、工具调用(如订单查询、天气查询)、复杂交互流程(多轮函数调用+结果迭代)、需要角色区分的场景 |
| 特殊限制 | 多轮对话依赖 history 字段串联上下文,角色类型固定(仅支持用户/助手二分法) | 角色位置有严格约束(human/observation 需在奇数位,gpt/function_call 需在偶数位),否则框架无法解析对话逻辑 |
1.2 关键场景数据集规范(附可直接复用示例)
(1)指令监督微调:单轮任务与复杂工具调用
指令监督微调(SFT)的核心是让模型“学会执行特定指令”,格式选择取决于任务是否涉及多角色交互。
Alpaca 格式(单轮简单任务):适用于文本分类、摘要、简单问答等无复杂交互的场景,核心字段
instruction(任务指令)、input(任务输入)、output(期望输出),其中input可选(无额外输入时留空)。
示例(用户意图分类任务):[{"instruction":"分类用户咨询意图,可选标签:订单查询、物流咨询、售后投诉、产品咨询","input":"我的订单什么时候发货?","output":"订单查询"}]配套
dataset_info.json配置(告知框架字段映射关系):"intent_classification":{"file_name":"intent_data.json","columns":{"prompt":"instruction","query":"input","response":"output"}}ShareGPT 格式(工具调用场景):适用于需要依赖外部工具完成的任务,支持
function_call(调用工具)、observation(工具返回结果)角色,需通过tools字段定义工具元信息(名称、描述、参数格式)。
示例(物流跟踪工具调用):[{"conversations":[{"from":"human","value":"查询订单号 123456 的物流状态"},{"from":"function_call","value":"{\"name\":\"track_logistics\",\"arguments\":{\"order_id\":\"123456\"}}"},{"from":"observation","value":"{\"status\":\"运输中\",\"current_location\":\"上海\",\"estimated_delivery\":\"2024-08-10\"}"},{"from"