LLM微调
微调的区别
| 阶段 (Stage) | 核心目标 (Core Objective) | 数据格式 (Data Format) | 生动比喻 (Analogy) | 模型能力与局限 (Model’s Capability & Limitations) |
|---|---|---|---|---|
| CPT (Continued Pre-training) |
知识注入 (Knowledge Injection) |
原始法律文本 (Raw Legal Corpus) | 学舌鹦鹉 (The Mimicking Parrot) |
能力: 知识渊博,是法律领域的“文本续写大师”,能完美补全法律条文和段落。 局限: 完全没有对话或指令遵循能力,只是一个被动的文本补全机器,不会“对话”。 |
| SFT (Supervised Fine-tuning) |
行为对齐 (Behavior Alignment) |
[问题] -> [标准答案] 指令 - 回答对 (Instruction-Output Pairs) |
表演鹦鹉 (The Performing Parrot) |
能力: 学会了问答的“剧本”,能遵循指令进行对话,成为了一个基础的法律问答机器人。 局限: 缺乏价值判断,只会模仿“标准答案”,无法在多个看似都正确的选项中分辨优劣。 |
| DPO (or ORPO, KTO) |
初步价值对齐 (Basic Preference Alignment) |
[问题, 好的答案, 坏的答案] 对比组 (Preference Pairs) |
法律小孩 (The Legal Child) |
能力: 开始形成初步的是非观和价值观。在回答时能展现出对“好”答案的偏好,避免“坏”的答案。 局限: 价值判断相对黑白分明,不够成熟和审慎,缺乏对复杂情景的综合考量。 |
| RL (Reinforcement Learning) |
高级价值对齐 (Advanced Policy Alignment) |
[问题] + 奖励函数/模型进行实时打分 (Online Feedback) | 成熟法律专家 (The Mature Legal Expert) |
能力: 判断力变得复杂、审慎且多维度。能综合考量安全性、逻辑性、同理心等多个因素,提供高质量的专业建议。 局限: 训练成本和技术复杂度最高,对个人开发者门槛较高(GRPO 除外)。 |
- CPT (Continued Pre-training)
- 目标: 知识注入。
- 产出: 一个**“学舌鹦鹉”。它是一个知识渊博的法律文本续写器**,但没有对话能力。
- SFT (Supervised Fine-tuning)
- 目标: 行为对齐。
- 产出: 一个**“表演鹦鹉”。它学会了问答的格式,成为了一个基础的法律问答机器人**,但缺乏判断力。
- DPO (Direct Preference Optimization)
- 目标: 初步价值对齐。
- 产出: 一个**“法律小孩”**。它在问答中开始展现出初步的是非观和价值判断。
- RL (Reinforcement Learning)
- 目标: 高级价值对齐。
- 产出: 一个**“成熟法律专家”**。它的判断力变得复杂、审慎且多维度。
微调实战——能否直接做SFT
答案是:可以!你完全可以直接用高质量的对话数据对Base模型进行SFT,这不仅可行,而且是目前最常见、最主流、最高效的入门路径。
但是,这样做是一种权衡 (Trade-off)。你用效率和简洁换取了模型的“知识深度”。
我们再次用那个绝佳的学生比喻,来看看这两种路线的区别。
两种培养法律专家学生的路径
路径一:我们之前讨论的“完美路径” (CPT -> SFT)
- 学生A:
- 第一步 (CPT): 花一个月时间,把自己关在法学院的图书馆里,废寝忘食地读完了所有藏书。他现在满脑子都是法律理论、法条和判例,知识深不可测。
- 第二步 (SFT): 走出图书馆,开始做模拟考卷。因为他基础扎实,所以触类旁通,很快就掌握了答题技巧。
路径二:你提出的“快捷路径” (直接 SFT)
- 学生B:
- 第一步 (跳过CPT): 他从未踏入图书馆。
- 第二步 (SFT): 直接拿到了和学生A一模一样的那套模拟考卷,然后开始疯狂地背题和背标准答案。
两种学生的能力对比
| 对比维度 | 学生A (CPT -> SFT) | 学生B (直接 SFT) |
|---|---|---|
| 应对模拟题 | 表现很好 | 表现也很好。因为他把题型和答案都背熟了。 |
| 应对新题型 | 表现依然很好。因为他可以调用深厚的知识储备,从第一性原理出发去推理答案。 | 表现很差,容易“翻车”。因为他的知识仅限于模拟题覆盖的范围,一旦遇到新问题,他就只能靠猜测或瞎编。 |
| 知识深度 | 深厚、成体系 | 浅薄、碎片化。他的知识是“应试”的,不成体系。 |
| 犯错倾向 | 犯事实性错误的概率低 | “一本正经地胡说八道”(幻觉)的概率更高。 |
结论:跳过CPT意味着什么?
跳过CPT,直接用SFT,意味着你默认并信任“Base模型本身已经读过足够多的书了”。
对于像Llama 3, Qwen, Mistral这样的现代开源模型来说,这个信任在一定程度上是合理的,因为它们在预训练阶段已经吞噬了互联网上几乎所有的公开文本,其中自然也包含了很多法律知识。
跳过CPT的优势 (Why it’s so popular):
- 快!省钱!:CPT是一个非常耗时耗资源的过程。直接SFT可以让你在几个小时内就看到初步成果,大大降低了试错成本。
- 简单!:你的工作流从两步缩减为一步,更容易管理和实现。
- 效果可能“足够好”:对于很多非极端专业的问答场景,Base模型自带的知识储备,加上你高质量的SFT数据,产出的模型效果已经能满足80%的需求。
跳过CPT的风险 (What you lose):
- 知识的“最后一公里”缺失:Base模型可能知道《合同法》,但它一定不知道你公司内部的《XX项目合规审查条例》,更不懂你们律所最爱引用的那几个经典判例。这些私有的、高度专业的、未公开的知识,只能通过CPT来注入。
- 术语理解不深:模型可能知道一个法律术语的大概意思,但无法像经过CPT的模型那样,深刻理解它在不同上下文中的细微差别。
- 可靠性降低:当面对SFT数据未覆盖的“边缘问题”时,没有经过CPT强化的模型,其回答的可靠性会显著下降。
给你的最终决策建议
你应该根据你的目标和数据来决定是否跳过CPT:
-
你应该跳过CPT,直接SFT,如果:
- 你刚开始这个项目,希望快速验证想法。
- 你的问答场景相对通用,不涉及极其小众和保密的专业领域。
- 你拥有一份数量庞大且覆盖面广的高质量SFT数据。
- 你的计算资源和时间有限。
-
你必须进行CPT,如果:
- 你的领域高度专业且小众(例如:“明代盐铁专卖法案研究”)。
- 你的模型需要理解大量的私有文档或内部知识库。
- 你对模型的事实准确性和可靠性有极高的要求,不能容忍其在关键问题上犯错。
- 你手头有大量的原始文本资料(比如你的1000篇文献),不利用起来就是巨大的浪费。
一个折中的“智能”方案是:先跳过CPT,直接做SFT,快速得到一个V1版本的模型。然后评估它的表现,如果发现它在某些专业知识点上反复犯错,再回头针对性地用相关文献对它进行一轮**“补充性CPT”**,然后再做第二轮SFT。