单位 6 / 11

微调的基础:何时、如何以及风险是什么

收益:

  • 只有在prompt、few-shot和RAG耗尽后,才能区分问题是信息还是行为,并评估行为问题的微调。
  • 了解微调方法(SFT、LoRA/PEFT、RLHF)和决定质量(一致性、多样性、机密性)的数据属性
  • 能够通过前后评估、过度学习和灾难性遗忘测试来衡量微调的真正价值

微调(通过使用您自己的数据进一步训练预训练模型来定制其行为)是法学硕士工程师的武器库中一个强大但昂贵的工具。当用在错误的地方时,它会浪费金钱和时间,但当用在正确的地方时,它提供了其他方式无法达到的质量。在本单元中,我们将介绍何时需要进行微调、其基本方法和风险。目标是让您做出决策。

首先是正确的问题:是否需要微调?

初学者最昂贵的错误就是立即急于微调一个可以解决的问题。像这样设置顺序:

  1. 提示工程:清晰解释任务的良好提示可以解决大多数问题。先在这里消费。
  2. 少样本学习:在提示中放置几个​​示例,向模型展示所需的格式和行为。
  3. RAG:如果问题是“缺乏信息”(需要模型不知道的数据),解决方案是RAG(单元4),而不是微调。
  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 替代方案。
  • [ ] 我审核了微调数据的一致性、多样性和保密性。
  • [ ] 我分配了一个保留的评估集群并测量了基本分数。
  • [ ] 我计划了一个前后比较和遗忘测试。
  • [ ] 我将总成本与其提供的质量进行了比较。