【HCIE-AI】6.微调数据构造方法

📅 2026/7/13 14:39:55
【HCIE-AI】6.微调数据构造方法
SFT 监督微调数据构造方法详解目录概述四大构造范式范式一从种子指令生成2.1 Self-Instruct2.2 Evol-Instruct2.3 Self-QA2.4 现实案例Alpaca 的 $500 实验范式二自我改进循环3.1 Self-AlignDromedary3.2 Humpback3.3 SPINSelf-Play Fine-tuning3.4 LMSILarge Model Self-Improvement3.5 现实案例Dromedary 65B 零人工数据对齐范式三从教师模型蒸馏4.1 Orca / Orca 24.2 UltraChat4.3 现实案例微软 Orca 13B 超越 GPT-3.5范式四从真实数据提取5.1 ShareGPT / WildChat5.2 Dolly / OpenAssistant / No Robots人工标注5.3 现实案例Vicuna 从 ShareGPT 起家六大方法对比总表1. 概述四大构造范式范式一从种子指令生成 Self-Instruct → Evol-Instruct → Self-QA └─ 少量种子 教师模型 → 大规模扩增 范式二自我改进循环 Self-Align → Humpback → SPIN → LMSI └─ 模型自己生成 → 自己评价 → 自己改进 范式三从教师模型蒸馏 Orca → UltraChat └─ 强模型生成数据 → 弱模型学习 范式四从真实数据提取 ShareGPT / WildChat → Dolly / OpenAssistant └─ 用户真实交互 / 人工标注2. 范式一从种子指令生成2.1 Self-Instruct提出论文Self-Instruct: Aligning Language Models with Self-Generated Instructions (2022)核心思想用 175 条人工编写的种子指令让大语言模型批量生成新的指令和回答实现数据量的指数级扩增。完整流程种子指令175条人工编写覆盖多样化任务 │ ▼ 步骤1指令生成 对每条种子指令让 LLM 生成 3-5 条相似的、同任务类型的新指令 如种子写一封商务邮件 → 写一封客户感谢信 / 写一封项目延期道歉信 / ... │ ▼ 步骤2指令分类与过滤 ├── 去重基于指令文本相似度 ├── 分类均衡确保 10 类任务分布均匀 ├── 排除无效指令你是谁 / 你能做什么 类 └── 排除不安全内容 │ ▼ 步骤3回答生成 对每条通过过滤的新指令让 LLM 生成完整回答 │ ▼ 步骤4质量筛选 ├── 回答长度下限至少 20 个 token ├── 回答与指令相关性检查 └── 排除模板化/千篇一律的回答 │ ▼ 最终数据集Alpaca 得到 52k 条种子指令示例175 条中的典型覆盖任务类型示例种子指令代码“用 Python 写一个斐波那契数列生成器”知识问答“解释量子纠缠的基本原理”文本改写“帮我润色这段文字使其更正式”翻译“把这段话翻译成英文”创作“根据以下信息写一份产品简介”数学推理“计算 345 × 678 等于多少”逻辑推理“这个论证的逻辑漏洞在哪里”信息抽取“从这段文本中提取关键实体”结构化输出“用 Markdown 格式写一个周报模板”分步解答“请分步骤解释如何解决这个问题”优缺点优点缺点实现简单代码量少指令多样性有限容易产生模式化数据成本极低Alpaca 仅花费约 $500生成质量参差不齐很多面试题风格可复现性强分类不均衡时模型在某些类型上表现差可快速扩展到任意领域教师模型的弱点会传递给小模型2.2 Evol-Instruct提出论文WizardLM: Empowering Large Language Models to Follow Complex Instructions (2023)核心思想在 Self-Instruct 基础上增加指令进化机制——让指令变得更复杂、更有深度、更具挑战性。不是简单地扩增数量而是提升质量。进化方式原始指令写一篇关于气候变化的文章 │ ├──▶ 深度进化增加约束和复杂度 │ 写一篇 800 字的关于气候变化的文章要求 │ 1. 引用 IPCC 报告的最新数据 │ 2. 对比中国和欧洲的减排政策差异 │ 3. 从批判性视角分析 COP28 的成果 │ 4. 结尾提出 3 个可行的个人行动建议 │ └──▶ 广度进化切换场景和领域 写一篇关于数字化转型的文章 写一份绿色转型路线的汇报PPT大纲 ...五种深度进化策略策略做法例子增加约束添加字数/格式/语气要求“不超过200字” “语气礼貌但坚定”深化推理增加 2-3 步推理步骤“需要先分析原因再给出对策”复杂化背景添加多个前置条件“假设资源有限、时间紧迫、利益相关方有冲突”增加错误检测让回答同时包含验证步骤“先判断输入是否正确再回答”增加对比要求比较多个维度“从成本、效率、风险三个角度比较方案A和方案B”Evol-Instruct vs Self-Instruct维度Self-InstructEvol-Instruct数据量52k250k指令复杂度简单/中等简单/中等/困难 三级推理能力较弱强进化过程中强制要求推理生成成本~$500~$2000-3000训练后模型AlpacaWizardLMBenchmark 表现一般接近 GPT-3.52.3 Self-QA核心思想从无标注纯文本反向构造问答对。这是最自然的领域微调数据构造方法。流程输入优质领域文本技术文档、论文、博客、公司知识库... │ ▼ 步骤1问题生成 给 LLM 提示根据以下文本提出 3-5 个只能从该文本中找到答案的问题 │ ▼ 步骤2答案生成 给 LLM 提示根据以下文本回答上述问题要求引用原文 │ ▼ 步骤3可选质量验证 用另一模型检查问题是否合理答案是否准确 │ ▼ 输出(Q1, A1), (Q2, A2), ... (Qn, An)实际示例输入文本 Transformer 使用多头注意力机制Multi-Head Attention 将查询、键、值分别线性投影到 h 个不同的子空间 在每个子空间独立计算注意力再拼接触回。 每个注意力头的输出维度是 d_k d_model / h。 生成 QA 对 Q: Transformer 为什么使用多头注意力而不是单头 A: 多头注意力允许模型同时关注不同位置的不同表示子空间。 每个头可以学习不同的注意力模式如语法关系、语义关系等 h 个头并行计算后拼接比单头注意力表达能力更强。 Q: 多头注意力中每个注意力头的输出维度是多少 A: 每个注意力头的输出维度是 d_k d_model / h 其中 d_model 是模型总维度h 是头的数量。适用场景场景说明推荐度RAG 知识库微调用已有文档生成 QA训练模型锚定源文档回答⭐⭐⭐⭐⭐公司内部知识微调内部培训文档、产品手册、API 文档 → QA 对⭐⭐⭐⭐⭐技术领域专用模型论文、技术博客 → 深度 QA⭐⭐⭐⭐课本/教材知识迁移教材章节 → 习题式 QA⭐⭐⭐⭐变种——Self-Knowledge QA不依赖外部文档直接让 LLM 使用自己的知识生成 QA 对适合常识问答、百科类数据风险会固化模型已有的知识包括错误知识2.4 现实案例Alpaca 的 $500 实验背景2023 年 3 月Stanford CRFM 团队发布 Alpaca仅用 $500 的 API 费用和 52k 条 Self-Instruct 数据在 LLaMA 7B 上微调效果接近 GPT-3.5。关键数据项目数值API 费用~$500使用 text-davinci-003生成数据量52,000 条种子指令175 条人工编写基座模型LLaMA 7B训练成本8 张 A100 80GB3 小时训练方式全参微调Full Fine-tuning影响Alpaca 证明了低成本 合成数据 小模型路线的可行性引发了一波 Self-Instruct 热潮。局限后续研究发现 Alpaca 数据中存在大量重复和低质量样本引发了对合成数据天花板的讨论。这直接催生了 LIMA1k 高质量数据 ≈ 52k Alpaca和 Evol-Instruct 等改进方向。3. 范式二自我改进循环3.1 Self-AlignDromedary提出论文Principle-Driven Self-Alignment of Language Models from Scratch with Minimal Human Effort (2023)核心思想不给模型看好回答长什么样而是给模型看指导原则让模型根据原则自己生成、自己审查、自己修正。完整流程第一阶段原则定义 │ ├── 16 条核心原则有帮助的、诚实的、无害的、尊重文化差异... ├── 每条原则配详细解释和例子 └── 以 Few-shot 形式注入模型 prompt │ ▼ 第二阶段原则驱动的初始生成 给模型展示少量高质量事例 16 条原则 → 模型理解应该遵循什么标准 → 生成自己的回答 │ ▼ 第三阶段Self-Revision自我修正← 最关键的创新 对每个生成的回答 │ ├── 步骤 A用同一原则自我审查 │ 请检查以下回答是否符合原则 1-16指出不足 │ ├── 步骤 B根据审查反馈修正回答 │ 根据以上审查意见改进你的回答 │ └── 重复 2-3 轮 → 得到一个经过多次自我修正的回答 │ ▼ 第四阶段Self-Curriculum自学课程 从简单任务到复杂任务逐步增加难度 如简单单轮问答→ 中等多轮对话→ 困难复杂推理 │ ▼ 最终得到高质量 SFT 数据不需要任何人工作答16 条原则示例精简版1. 有帮助的回答应当尽可能协助用户解决问题 2. 诚实的不清楚时应明确说不知道不捏造事实 3. 无害的不鼓励或协助有害行为 4. 尊重的尊重不同文化和价值观 5. 安全的不生成危险内容 6. 清晰的使用清晰易懂的表达 7. 结构化的复杂内容应分层次呈现 8. 尽责的对专业问题要准确严谨 9. 客观的不偏袒特定立场 10. 共情的理解用户的情感和处境 11. 隐私保护的不索要或泄露个人信息 12. 主动的在必要时主动追问澄清 13. 适度的回答长度应当与问题匹配 14. 创造性的适当使用类比、故事等增强理解 15. 可操作的给出具体可行的建议而非泛泛而谈 16. 自我审视的对自己的回答保持批判态度Self-Align vs Self-Instruct维度Self-InstructSelf-Align核心机制模仿人类写的回答遵循原则 自我审查改进数据质量中等依赖种子质量较高多轮修正消去低质量人工参与需要 175 条种子指令需要定义 16 条原则迭代方式一次性生成多轮自我修正Self-Revision价值观对齐隐性数据中包含什么就学什么显性原则直接注入代表模型AlpacaDromedary 65B接近 GPT-3.53.2 Humpback提出论文Humpback: Self-Improvement through Learning from Own Generations核心思想让模型自己生成回答 →自己比较A vs B→ 选出更好的 → 用 DPO 微调 → 迭代。不需要人类偏好标注模型通过自己打自己提升。流程初始化一个已有一定能力的基座模型如 LLaMA-2 7B │ ▼ Round 1: 给模型 prompt P → 生成两个回答 A 和 B不同温度采样 让模型自己判断A 和 B 哪个回答更好请排序并给出理由 标记 chosen 好的, rejected 差的 训练 DPO: 最大化(chosen) - 最小化(rejected) 得到 Round 1 模型 │ ▼ Round 2: 用 Round 1 模型重新生成 A 和 B 继续自己比较 → 继续 DPO 得到 Round 2 模型 │ ▼ Round 3-5: 重复上述过程 当模型判断能力不再提升时停止 │ ▼ 输出经过自我博弈提升后的模型关键难点问题初始模型比较能力差怎么办 └── 答Humpback 要求基座模型本身就具备一定的判断能力 如果基座模型较差如 GPT-2比较结果完全随机 则 DPO 训练的信号是噪声越练越差 这就引出了自欺欺人效应 模型如果分不清好坏用自己生成的数据训练 会把坏回答也当作更好的来学习 → 性能反而下降解决方案方法做法效果多模型投票用 3 个不同版本的模型一起比较取多数有效但成本高初始筛选只有初始模型足够强时如 LLaMA-2 7B才启动 Humpback实用但有限制结合奖励模型用独立的 Reward Model 替代自比较偏离了无外部信号的初衷Humpback 在实践中的定位适合作为微调后的精炼步骤先用 SFT 数据训练再用 Humpback 提升偏好对齐不适合从零开始基座模型太差时效果为负3.3 SPINSelf-Play Fine-tuning提出论文SPIN: Self-Play Fine-Tuning with self-supervised preference optimization (2024)核心思想借鉴 GAN生成对抗网络的思想——主模型学生学习区分真实数据 vs “旧版本模型生成的虚假数据”。伪代码流程def SPIN_training(main_model, real_data): real_data: 少量真实高质量数据 main_model: 待训练的模型 old_model deepcopy(main_model) # 保存一个旧版作为判别对手 for epoch in range(N): # 1. 用旧模型生成假数据 fake_data [] for prompt in real_data[prompts]: fake_answer old_model.generate(prompt) fake_data.append((prompt, fake_answer)) # 2. 训练主模型区分真/假 training_examples [] for (prompt, real_answer) in real_data: training_examples.append((prompt, real_answer, label1)) # 真实 for (prompt, fake_answer) in fake_data: training_examples.append((prompt, fake_answer, label0)) # 虚假 main_model.train(training_examples) # DPO or 分类式训练 # 3. 主模型 → 旧模型自我升级 old_model deepcopy(main_model) return main_modelSPIN 的创新点创新解释对抗式训练模型与旧版本对战迫使自己越来越能区分好坏利用真实数据少量真实数据作为锚防止模型误判方向DPO 兼容SPIN 训练时可以用 DPO loss无需奖励模型收敛性证明证明在理想条件下训练过程会收敛到真实数据分布SPIN vs Humpback维度HumpbackSPIN比较对象同模型的 A/B 两个回答真实 vs 旧版模型生成是否需要真实数据不需要需要少量真实数据抗自欺欺人能力弱完全自我循环强有真实数据锚定可证明收敛无理论保证有理论证明实际效果提升10-15%15-30%3.4 LMSILarge Model Self-Improvement核心思想结合 Self-Instruct 的生成能力和 Self-Align 的自我修正能力加入CoT思维链增强。流程第一阶段主题采样 定义 200 个领域每个领域 100 个子主题 覆盖科学、技术、人文、艺术、商业、生活... 第二阶段指令生成Self-Instruct 风格 在每个 (领域, 子主题) 组合下生成 5-10 条指令 确保覆盖不同难度级别 第三阶段CoT 增强 不是只让模型输出最终回答 而是先输出推理过程再输出最终答案 格式 逐步推理 Step 1: ... Step 2: ... ... 最终答案... 第四阶段自我评估 对每个生成的 (指令, 推理, 回答) 三元组 模型自己打分1-5分 过滤低分样本低于 3 分删除 第五阶段多轮迭代 将 R1 的高分数据加入训练 训练新模型 → 用新模型重新生成 → 再次过滤 → R2LMSI 数据格式{ domain: machine_learning, subtopic: gradient_descent, instruction: 解释 Adam 优化器相对于 SGD 的优势, reasoning: 首先需要理解 SGD 的局限性固定学习率、容易陷入鞍点...\nAdam 结合了 Momentum 和 RMSProp具体来说...\n第三步考虑实际场景稀疏梯度下 Adam 表现更好..., answer: Adam 优化器相比 SGD 有以下优势\n1. 自适应学习率...\n2. 对稀疏梯度鲁棒...\n3. 通常收敛更快..., self_score: 4, difficulty: medium }3.5 现实案例Dromedary 65B 零人工数据对齐背景2023 年CMU Google DeepMind 联合团队挑战在不使用任何人工作答数据的情况下能否对齐一个大模型方法Self-Align原则驱动 自我修正训练成本项目数值基座模型LLaMA 65B人工投入定义 16 条原则 61 个示例仅需 2 人工作几天API 费用约 $100原则验证阶段训练资源8 张 A100约 1 天生成数据量约 10 万条多轮自我修正后效果Dromedary 65B vs GPT-3.5 对比Human Evaluation Helpfulness: Dromedary ≈ GPT-3.5 Honesty: Dromedary GPT-3.5更少幻觉 Harmlessness: Dromedary ≈ GPT-3.5 推理能力: Dromedary GPT-3.5约 8-10% 差距 创造性: Dromedary ≈ GPT-3.5 结论零人工标注数据可以达到接近 GPT-3.5 的水平 但推理能力仍有差距——这是自我循环方法的固有瓶颈。局限性定义原则本身也是一种人工参与——为什么 16 条怎么确保原则完整自我修正过程存在天花板——模型自己发现不了的缺陷修正也没用推理类任务效果差——模型自己没法通过自我审查突然学会复杂推理4. 范式三从教师模型蒸馏4.1 Orca / Orca 2提出论文Orca: Progressive Learning from Complex Explanation Traces of GPT-4 (2023)Orca 2: Teaching Small Language Models How to Reason (2024)核心创新不是简单地学教师模型的答案而是学教师模型的推理过程。对比传统蒸馏Self-Instruct 风格 教师模型 → 输出回答 学生模型 → 学习回答label-only ↓ 学生学到了该回答什么没学到为什么这么回答 Orca 的做法 教师模型GPT-4 ├── ▶ 输出回答 └── ▶ 输出推理过程Chain of Thought 学生模型 → 学习 (推理过程 回答) 配对 ↓ 学生学到了如何推理 该回答什么Orca 的数据构造流程教师配置 模型GPT-4 System Prompt: 请逐步思考和推理然后给出你的最终回答。 将推理过程放在 reasoning 标签内 将最终回答放在 answer 标签内。 数据生成 Prompt → GPT-4 → reasoning...推理过程.../reasoning answer...最终回答.../answer 训练方式 学生模型FLAN 13B/Llama 13B学习这个结构 训练时对推理过程做 Loss Masking可选 - 完整训练学生既学推理又学最终回答 - 只训练答案学生只学最终回答推理过程只作为上下文参考 Orca 的结论完整训练效果更好 数据增强技巧 1. Explanation Tuning对同一个问题收集 GPT-4 的多种解释风格 2. Progressive Learning先容易后难逐步增加数据复杂度 3. Task Diversity覆盖 100 种任务类型Orca 与 Orca 2 的对比维度Orca 1Orca 2发布时间2023.062023.11基座模型FLAN 13B/70BLlama 2 7B/13B/70B教师模型GPT-4GPT-4数据量500 万条约 1500 万条核心方法Explanation Tuning多种推理策略 谨慎推理Cautious Reasoning学生 13B 效果超过 GPT-3.5 部分基准接近 GPT-4 部分基准效果Orca 2 13B 在公开基准上的表现MMLU: 59.8 (GPT-3.5: 70.0, 但 Orca 2 13B 模型尺寸小很多) GSM8K: 76.8 (数学推理显著高于同尺寸模型) BBH: 63.4 (Big-Bench Hard复杂推理) ARC-C: 73.4 (科学推理)4.2 UltraChat提出论文OpenChat 团队大规模合成对话数据核心思想通过分层分类的系统化方法全面覆盖对话场景。分类树结构第一层10 大领域 ├── 写作 → 商务邮件、学术论文、小说、诗歌、广告文案、技术文档... ├── 编程 → 调试、代码审查、架构设计、代码生成、优化... ├── 知识问答 → 科学、历史、地理、医学、法律、经济... ├── 角色扮演 → 客服、教师、医生、心理咨询师... ├── 头脑风暴 → 商业创意、产品设计、研究思路... ├── 建议咨询 → 职业规划、投资理财、人际关系... ├── 数据分析 → 统计分析、可视化解释、报告撰写... ├── 翻译 → 英中、中英、技术翻译、文学翻译... ├── 总结提炼 → 文章总结、会议纪要、摘要生成... └── 日常对话 → 闲聊、情绪支持、生活建议... 第二层每个领域细分 20-50 个子类总计 300 子类 第三层每个子类预定义 10-20 个种子话题模板生成流程1. 随机采样从分类树随机选择 (领域, 子类) 2. 话题生成根据 (领域, 子类) 生成具体话题 例(编程, 调试) → Python 报错 TypeError: expected str, got int 3. 多轮对话生成 - 设置角色用户 vs AI - 生成第一轮用户消息 - 生成 AI 回复 - 根据 AI 回复生成用户追问 - 重复 3-5 轮 4. 质量过滤 - 每轮长度 10 tokens - 无有害/有毒内容 - 对话逻辑一致性检查 5. 输出1.4M 条多轮对话数据示例{ domain: writing, sub_category: business_email, conversation: [ {from: user, value: 我需要写一封催款邮件给客户语气要礼貌但不失坚决}, {from: assistant, value: 好的我为您起草一封模板\n\n尊敬的[客户姓名]\n\n主题关于[项目名称]款项的友好提醒\n\n希望这封邮件找到您一切安好。我们注意到[项目名称]的发票发票号XXX已到期...我认为下面这些点是关键...后续回复略}, {from: user, value: 语气可以更温和一些毕竟我们还想维持长期合作关系}, {from: assistant, value: 完全理解。以下是调整后的版本更注重合作关系而非催收压力修改后的完整邮件} ] }UltraChat 的特点维度说明规模1.4M 条对话约 780 万轮覆盖度300 子类远超 Self-Instruct 的单一生成方式多轮对话保留上下文依赖适合训练 Chat 模型成本约 $5000-8000GPT-4 API 调用开源完全开源广泛用于 SFT4.3 现实案例微软 Orca 13B 超越 GPT-3.5背景2023 年中微软研究院挑战一个命题——“小模型能否通过蒸馏学到强模型的能力”Orca 的核心发现发现 1学推理过程比学答案重要对比实验只学答案学生的 MMLU 得分为 48.2学推理 答案学生的 MMLU 得分为 55.77.5 分启示教师的思维过程是比最终答案更有价值的知识发现 2渐进式学习效果更好不是一次性给全部数据而是 第一阶段简单任务单步问答 第二阶段中等任务多步推理2-3 步 第三阶段困难任务复杂推理5 步需要多种策略 效果比一次性混训高出 5-8 个百分点发现 3数据量存在边际递减100 万条 → 500 万条提升 12% 500 万条 → 1000 万条提升 4% 1000 万条 → 1500 万条提升 1.5% 结论在推理过程蒸馏下500 万条左右达到性价比最优Orca 2 的谨慎推理Cautious ReasoningOrca 2 引入策略选择机制——不是所有问题都需要 CoT 问题类型 A简单事实 → 直接回答 Q: 法国首都是什么 A: 巴黎。 问题类型 B需要推理 → CoT Q: 如果 A B, B C, 那么 A 和 C 的关系 A: 根据传递性A C。 问题类型 C不确定 → 表达不确定性 Q: 明年美联储会加息吗 A: 根据当前数据市场预期有 60% 概率维持不变... 关键模型要学会判断什么时候用哪种策略。 这需要 GPT-4 教师在生成数据时就已经标注推理策略。5. 范式四从真实数据提取5.1 ShareGPT / WildChatShareGPT用户自发上传与 ChatGPT 的对话记录截至 2023 年底社区积累了约 90k 条多轮对话数据特征真实使用场景、多样化的提问方式、包含多轮上下文WildChat由 Univ. of Washington 和 Allen AI 联合推出在自己的网站上部署 GPT-4 服务收集真实用户对话数据量达 1M覆盖全球用户包含 IP 来源、时间戳等元数据数据格式ShareGPT 格式已广泛成为业界标准{ id: conv_12345, conversations: [ {from: human, value: 帮我解释一下什么是数据库索引}, {from: gpt, value: 数据库索引是一种数据结构...}, {from: human, value: 那 B 树索引和哈希索引有什么区别}, {from: gpt, value: B 树索引支持范围查询...} ] }真实用户数据的优缺点优点缺点真实使用场景覆盖长尾需求质量参差不齐很多低质量对话提问方式自然多样包含个人信息泄露风险多轮对话有真实上下文延续用户可能有恶意/测试行为反映真实的用户期待数据分布偏向 ChatGPT 的风格可从中提取隐式偏好信息版权和隐私法律风险常见的清洗策略1. PII 脱敏 → 替换邮箱、电话、地址 2. 对话质量过滤 → 长度 3 轮单轮 15 tokens 3. 去重 → 用户反复发的相同问题 4. 安全过滤 → 暴力/色情/违法内容 5. 语言筛选 → 保持目标语言占 95% 6. 对话注意力检测 → 如果用户重复问同一个问题说明前一轮回答不好Copy5.2 Dolly / OpenAssistant / No Robots人工标注数据规模与标注方式对比数据集发布方规模标注方式标注成本估算特点DollyDatabricks15k内部员工手写~$30k员工来自不同背景多样性好OpenAssistantLAION~30k 多轮对话全球志愿者众包免费志愿者多语言含偏好排序No RobotsHugging Face9.5kScale AI 专业标注~$50k高质量但规模小LIMAMeta AI1k专家精选手动~$10-15k少而精路线证明 1k 足够Super-Natural InstructionsGoogle1600 任务多轮人工标注~$200k最大规模人工 SFT 数据Dolly 的标注策略Databricks 全体员工非标注专家参与覆盖头脑风暴、分类、QA、总结、代码、创作等每人写 20-50 条优点多样性好反映普通人怎么用 AI缺点标注质量不一LIMA 的少而精理念维度LIMA1kAlpaca52k质量比数据量1,00052,0001:52任务类型10 类10 类相当人工筛选每条精选自动生成天壤之别单条数据成本~$1-2~$0.01100-200x训练后效果接近 GPT-3.5一般LIMA 胜结论数据质量比数据量重要 50 倍。5.3 现实案例Vicuna 从 ShareGPT 起家背景2023 年 3 月UC Berkeley 的 LMSYS 团队用 ShareGPT 用户分享的 ChatGPT 对话数据微调 LLaMA 13B 得到 Vicuna。关键数据项目数值基座模型LLaMA 13B训练数据约 70k 条 ShareGPT 对话从 90k 中过滤过滤标准长度 2 轮、非英文比例 20%、无有毒内容训练方式Full Fine-tuning Flash Attention训练成本8 张 A100 80GB约 1 天约 $300评估方式GPT-4 盲评LLM-as-Judge评估结果GPT-4 盲评胜率比较Vicuna 13B vs Alpaca 13B: Vicuna 胜率 67% Vicuna 13B vs LLaMA 13B: Vicuna 胜率 90% Vicuna 13B vs Bard: Vicuna ≈ Bard约 50% 胜率 Vicuna 13B vs ChatGPT (GPT-3.5): Vicuna ≈ ChatGPT 的 90% 水平 结论用真实用户对话数据ShareGPT微调的效果 显著优于用合成数据Alpaca 52k微调的效果。Vicuna 的经验教训教训 1数据质量筛选比数量重要 → 90k → 70k过滤掉 22% 低质量数据 → 再后来发现进一步过滤到 30k 效果更好 教训 2训练技巧影响巨大 → Vicuna 调整了 loss 计算方式只计算 assistant 部分 → 对话头的特殊处理system message 设计 → 学习率从 2e-5 降到 1e-5 更稳定 教训 3评估是最大难题 → 当时没有好的自动评估全靠 GPT-4 盲评 → GPT-4 评估有位置偏差第一个出现的回答更容易被选中 → 后续 LMSYS 开发了 Chatbot Arena 众包评估6. 六大方法对比总表方法所属范式核心机制种子数据领域定制质量成本代表模型Self-Instruct指令生成种子指令→扩增→过滤175条手动⭐⭐⭐⭐⭐极低~$500AlpacaEvol-Instruct指令生成指令进化加复杂度需要种子⭐⭐⭐⭐⭐⭐低WizardLMSelf-QA指令生成纯文本→问答对源文档⭐⭐⭐⭐⭐⭐⭐极低~Self-Align自我改进原则自修正不需要⭐⭐⭐⭐⭐⭐⭐中DromedaryHumpback自我改进自比较DPO好基座模型⭐⭐⭐⭐⭐中HumpbackSPIN自我改进对抗式自博弈真实数据锚定⭐⭐⭐⭐⭐⭐高SPINLMSI自我改进主题CoT自评不需要⭐⭐⭐⭐⭐⭐⭐中LMSIOrca蒸馏学推理过程教师模型(GPT-4)⭐⭐⭐⭐⭐⭐⭐⭐⭐高OrcaUltraChat蒸馏分层分类生成分类树⭐⭐⭐⭐⭐⭐⭐高OpenChatShareGPT真实数据用户对话无用户产生⭐⭐⭐⭐极低Vicuna人工标注真实数据人工写无⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐极高Dolly/LIMA