收益:
- 只有在prompt、few-shot和RAG耗尽后,才能区分问题是信息还是行为,并评估行为问题的微调。
- 了解微调方法(SFT、LoRA/PEFT、RLHF)和决定质量(一致性、多样性、机密性)的数据属性
- 能够通过前后评估、过度学习和灾难性遗忘测试来衡量微调的真正价值
微调(通过使用您自己的数据进一步训练预训练模型来定制其行为)是法学硕士工程师的武器库中一个强大但昂贵的工具。当用在错误的地方时,它会浪费金钱和时间,但当用在正确的地方时,它提供了其他方式无法达到的质量。在本单元中,我们将介绍何时需要进行微调、其基本方法和风险。目标是让您做出决策。
首先是正确的问题:是否需要微调?
初学者最昂贵的错误就是立即急于微调一个可以解决的问题。像这样设置顺序:
- 提示工程:清晰解释任务的良好提示可以解决大多数问题。先在这里消费。
- 少样本学习:在提示中放置几个示例,向模型展示所需的格式和行为。
- RAG:如果问题是“缺乏信息”(需要模型不知道的数据),解决方案是RAG(单元4),而不是微调。
- 微调:如果上述还不够并且问题是“行为/格式/风格”,那么它就发挥作用。
主要区别:微调在向模型传授新信息方面较弱且存在风险;但它在教导如何行为方面很强大(特定的格式、语气、领域术语、一致的结构)。 “我的模型不知道我们公司的信息” → RAG。 “让我的模型始终以我们想要的确切格式给出输出”→ 微调候选者。
提示:在决定微调之前,先问自己:“这是知识问题还是行为问题?”信息问题通过 RAG 可以更好地解决,行为问题通过微调可以更好地解决。
微调方法
全面微调:重新训练模型的所有参数。最强大但最昂贵;它需要大型硬件(GPU)和仔细的数据。对于大多数团队来说这是不必要的。
参数高效微调 (PEFT):冻结模型大部分内容,仅训练一小部分附加参数的方法。最常见的是 LoRA(低阶适应:训练添加到模型中的小型“适配器”层)。 LoRA 提供接近于完全微调的结果,并且内存和成本要少得多;这就是为什么它是实践中的首选。
监督微调 (SFT):教导模型使用由输入-理想输出对组成的数据“像这样响应此输入”。这是最常见的情况。
根据人类反馈进行强化学习 (RLHF):根据人们的首选响应调整模型的行为。它复杂且昂贵; SFT 可以满足大多数应用程序团队的需求。了解 RLHF 作为一个概念就足够了。
数据:微调的核心
微调的质量完全取决于训练数据的质量。几百个高质量、一致的样本比数千个马虎的样本要好。准备数据时:
- 一致性:所有示例都一致地显示您想要的格式和语气。自相矛盾的例子让模型变得混乱。
- 多样性:示例涵盖了实际使用中的多样性,但并不统一。
- 清理:包含不正确、有偏见或隐藏数据的实例将永久传递到模型中。微调数据应该像阅读合同一样仔细阅读。
注意:进入微调数据的每个偏差、错误和隐藏信息都会被蚀刻到模型中并重新出现在其输出中。像发布数据一样仔细审核您的训练数据;请勿发布个人数据。
点评:微调有效果吗?
在微调之前,保留一个保留的评估集并测量未经微调的模型(基础模型)的分数。微调后,在同一组中再次测量。如果没有比较,你就不能说“它变得更好了”。还有两个陷阱需要注意:
- 过度学习:小数据的过度训练会导致模型失去记忆和概括训练示例的能力。
- 灾难性遗忘:对狭窄任务的过度训练可能会损害模型的整体能力。测试在获得新行为的同时是否保留了旧技能。
弱方法/强方法
弱:“我有3000条聊天记录,让我们把它们全部进行微调,这样模型就可以像我们一样说话了。”
Güçlü:“首先,我使用 100 个真实任务评估基本模型,记下分数。我通过提示和几次测试测量了它的改进程度 - 这还不够。然后,从 3000 个日志中,我仅选择并清理了 400 个高质量、格式一致且没有隐藏数据的样本。我使用 LoRA 进行了微调,再次使用相同的 100 个任务进行了测量,并通过单独的测试确认了总体功能完好无损。”
区别在于:强方法首先会穷尽替代方案、精选数据、前后测量以及副作用测试。
成本和维护的现实
微调不是一次性的工作;这是一种注意义务。当基础模型更新、需要更改或数据丢失时,可能需要重新训练。此外,托管微调模型会带来额外的成本和运营。将总拥有成本与其提供的质量提高进行比较。大多数时候,一个好的提示+RAG比微调更便宜、更灵活。
三个迷你箱子
情况 1 - 不必要的微调。一个团队开始了一项昂贵的微调项目,因为“我们的模型不了解我们的产品”。花费了数月和预算,结果却很脆弱——每次产品目录发生变化时,模型就会过时。最后他们转向了 RAG:他们从文档库中获取产品数据,更新是即时的,并且成本下降了。教训:信息问题不是通过微调就能解决的。
情况 2 - 正确微调。一家保险公司希望该模型始终以相同的严格结构(逐条条款,具有特定标题)生成保单摘要。与提示的一致性停留在 70%。经过 LoRA 对 300 个良好样本进行微调后,格式一致性提高到 98%。这是一个行为问题,微调是正确的工具。
案例 3 - 隐私泄露到数据中。一个团队提交聊天日志进行微调,但没有清理它们。日志包含真实的客户姓名和身份号码。经过微调的模型开始“泄漏”这些名称作为不相关问题的输出。该模型被撤回,数据被屏蔽并重新训练。教训:微调数据中的隐藏信息会永久转移到模型中。
可复制模板
帮助我决定是否需要对我的这个问题进行微调。问题:[描述]这是一个信息问题(模型不知道某些东西)还是一个行为问题(模型没有产生我想要的格式/语气/结构)?可以先用prompt、few-shot和RAG来解决吗?为什么要尝试/不尝试每一个?仅在什么情况下您会建议进行微调?
检查此微调数据集:1)示例的格式和语气是否一致?2)它们是否涵盖了实际使用中的变化?3)它是否包含机密/个人数据(必须屏蔽)?4)是否存在冲突的示例?示例的子集:[示例]列出您发现的每个问题并修复。
制定微调前后的评估计划。任务:【解说】- 保留的评估集应该如何选择?- 基础模型的分数是如何衡量的?- 微调后与哪个指标进行比较?- 如何测试一般能力没有受损(灾难性遗忘)?
建议使用 LoRA 进行微调的初始超参数。数据大小:[样本数量]目的:[格式/语气教学]建议 epoch、学习率和提前停止以避免过度学习。
决策表:何时使用哪种工具
需要
首先尝试
微调?
该模型不知道任何信息
RAG
不
所需当前数据
RAG
不
特定的刚性格式
几枪
如果还不够 是
一致的语气/风格
提示+几次射击
如果还不够 是
领域术语/风格
提示
如果这还不够,LoRA
简单任务优化
即时工程
一般没有
常见错误
- 试图通过微调来解决信息问题。 RAG 是正确的工具。
- 在不消耗提示/少量镜头/RAG 的情况下进行微调。昂贵且不必要。
- 使用低质量/冲突数据进行训练。数据越少但清晰越好。
- 将机密数据投入教育。永久渗透模型。
- 不测量之前和之后。您无法证明康复。
- 不测试灾难性遗忘。新技能可能会颠覆旧技能。
综上所述
微调是一种强大但昂贵的工具,仅应在使用prompt-few-shot-RAG后考虑行为/格式问题;信息问题属于RAG。 LoRA 等参数高效的方法是实用的首选。质量完全取决于数据质量;使用小但干净、一致且机密的数据。测量之前和之后,测试是否过度学习和能力丧失。微调是一种谨慎的义务;权衡其总成本与其提供的质量。
应用任务
选择一个问题,通过区分“知识或行为”来决定是否需要微调,并写下你的理由。如果是行为问题,准备 20-30 个一致样本,检查隐藏数据,并记录前后评估计划(保留聚类、基本分数、比较指标、遗忘测试)。如果可以用 RAG/few-shot 而不是微调来解决,也请记下这一点。
清单
- [ ] 我确定问题是知识问题还是行为问题。
- [ ] 我首先评估了提示、few-shot 和 RAG 替代方案。
- [ ] 我审核了微调数据的一致性、多样性和保密性。
- [ ] 我分配了一个保留的评估集群并测量了基本分数。
- [ ] 我计划了一个前后比较和遗忘测试。
- [ ] 我将总成本与其提供的质量进行了比较。