预训练 vs. 后训练

预训练(Pre-training)和后训练(Post-training)是大模型生命周期中两个不同阶段,它们的目标、数据、计算资源和产出都有本质区别。
预训练(Pre-training)
- 目标:让模型掌握通用语言规律、世界知识、推理能力。
- 数据:
- 来源:网页(Common Crawl)、书籍、论文、代码等。
- 特点:无标注、大规模(TB 级)、噪声大。
- 训练方式:
- 自监督学习(如 Next Token Prediction、MLM)。
- 需要千卡 GPU(如 Llama-3-70B 预训练用了 1.6 万张 H100,耗时 54 天)。
- 产出:
- 基座模型(如
Llama-3-8B
、Qwen2.5-7B
),不能直接对话,但具备通用能力。
- 基座模型(如
后训练(Post-training)
后训练(Post-training)中的领域微调(Domain Adaption Fine-tuning) 和指令微调(Instruction Tuning) 是两种目的和方法截然不同的微调策略。
简单来说,它们的核心区别在于:
- 领域微调:目标是让模型成为一个**“领域专家”**,精通某个特定领域(如医疗、法律、金融)的知识和语言风格。
- 指令微调:目标是让模型成为一个**“听话的助手”**,能够更好地理解并执行人类的各种指令(如总结、翻译、问答、创作)。
下面我们从多个维度进行详细对比。
对比总表
维度 | 领域微调 (Domain Adaption Fine-Tuning) | 指令微调 (Instruction Tuning) |
---|---|---|
核心目标 | 让模型掌握特定领域的知识和术语,适应其语言风格。 | 让模型学会遵循指令,理解任务意图,并输出符合人类期望的格式。 |
要解决的问题 | “知识鸿沟”:通用模型缺乏特定领域的深度知识。 | “对齐鸿沟”:基础模型即使有知识,也不知道如何根据人类指令有效、安全地调用它。 |
训练数据格式 | 大量的非结构化或半结构化文本。 例如:医学论文、法律条文、金融财报、代码库等。 | 高质量的(指令,输出)配对数据。 例如: 指令:“总结以下文章:...” 输出:“这篇文章主要讲述了...” |
数据来源 | 领域内的专业文档、书籍、数据库、网页等。 | 人工编写、模型生成后经人工筛选、从现有数据集中重构(如将摘要任务的数据转为指令格式)。 |
微调方式 | 通常是无监督或自监督的(如继续使用 LM 损失进行训练)。 | 监督学习,使用(指令,输出)配对进行有监督的训练。 |
主要效果 | 1. 大幅提升模型在该领域任务上的表现和可靠性。 2. 模型生成的文本更具领域专业性。 | 1. 极大提升模型的泛化能力和零样本/少样本表现。 2. 使模型输出更有用、诚实、无害(对齐)。 3. 能够响应在训练时从未见过的新指令。 |
好比 | 让一个聪明的大学生去攻读一个特定专业的博士学位。 | 教一个博学的专家如何与人清晰、有礼貌、有效地沟通和协作。 |
典型例子 | 1. 用医学文献微调 LLM,得到医疗 AI。 2. 用代码数据微调 LLM,得到代码助手。 | 1. Alpaca、Vicuna 等模型使用的微调方法。 2. ChatGPT 的对话能力很大程度上源于指令微调。 |
深入解析
1. 领域微调 (Domain Adaption)
-
为什么需要? 一个在大规模通用语料(如互联网文本)上训练的基础模型(Base Model),虽然知识面广,但在特定垂直领域的深度、准确性和专业性上往往不足。例如,让通用模型去解读心电图报告或撰写法律合同,它很可能会犯低级错误或使用不专业的表述。
-
如何工作? 这个过程类似于“沉浸式学习”。我们将模型“浸泡”在目标领域的大量文本中,通过继续训练(Continual Pre-training)或标准微调,让模型调整其内部参数,从而:
- 熟悉领域内的专业词汇和术语。
- 学习领域内独特的语法结构和表达习惯(如法律文书的严谨性、代码的规范性)。
- 将领域知识更深地编码到模型的权重中。
-
输出示例:
- 微调前(通用模型):
- 输入:“心肌梗塞的治疗方法有哪些?”
- 输出:“心肌梗塞是一种心脏病,通常需要及时就医。治疗方法可能包括吃药、做手术等。”(回答模糊、不专业)
- 微调后(医疗领域模型):
- 输入:“心肌梗塞的治疗方法有哪些?”
- 输出:“急性心肌梗塞的治疗包括再灌注治疗(如经皮冠状动脉介入治疗-PCI、静脉溶栓)、药物治疗(抗血小板药如阿司匹林、P2Y12 抑制剂,抗凝药,镇痛药,β 受体阻滞剂等)以及冠状动脉旁路移植术-CABG 等。”(回答具体、专业、准确)
- 微调前(通用模型):
2. 指令微调 (Instruction Tuning)
-
为什么需要? 一个经过领域微调的模型可能充满了知识,但它可能不会“好好说话”。你问它“写一首关于春天的诗”,它可能却开始给你输出医学论文。指令微调的核心目的是对齐(Alignment),让模型的行为与人类的意图和价值观保持一致。
-
如何工作? 这个过程类似于“家教辅导”。我们给模型提供大量的例题,每一个例题都包含一个“指令”和“期望的输出”。
- 模型通过学习这些配对样例,不是为了记忆知识,而是为了理解“指令”这个模式。
- 它学会了当看到“总结...”时,就应该生成一个摘要;当看到“把...翻译成英文”时,就应该启动翻译功能。
- 它同时学会了更符合人类偏好的对话风格,比如更礼貌、更拒绝有害请求、更少地幻觉出错误信息。
-
输出示例:
- 微调前(基础模型):
- 输入:“请将‘Hello, world!’翻译成中文。”
- 输出:“‘Hello, world!’ 是一个常见的编程入门示例,它通常用于...” (模型没有遵循指令,而是开始解释相关知识)
- 微调后(指令微调模型):
- 输入:“请将‘Hello, world!’翻译成中文。”
- 输出:“你好,世界!” (模型正确理解了指令的意图并执行了任务)
- 微调前(基础模型):
协同作用:它们是如何结合使用的?
在实际应用中,这两种技术往往是顺序进行的,以打造一个既专业又好用的 AI 助手:
- 预训练 (Pre-training):在海量通用文本上训练,得到一个基础模型(如 LLaMA、GPT-3 Base)。这个模型拥有广泛的通用知识和语言能力。
- 领域微调 (可选但推荐):如果目标是垂直领域,则在领域数据上继续训练基础模型,得到一个领域专家模型。这一步填补了知识鸿沟。
- 指令微调 (关键步骤):使用指令数据对上述模型进行微调,得到一个领域对话助手。这一步解决了对齐鸿沟,让专家模型变得“听话”。
- RLHF (进一步优化):基于人类反馈的强化学习,可以进一步打磨指令微调后的模型,使其输出更符合人类偏好。
总结:
- 领域微调是“灌知识”,解决“懂不懂”的问题。
- 指令微调是“教规矩”,解决“会不会用”的问题。
一个理想的 AI 应用通常是先通过领域微调让它变得“专业”,再通过指令微调让它变得“好用”。
大模型的后训练已经变得比预训练重要了吗?
为什么后训练这么火?
现在数据量的增加和计算能力的提升让大模型不再像过去那样很大程度上只依赖预训练。现在,后训练的灵活性让我们可以针对具体问题,定制模型的表现。比如,针对某些冷启动任务,通过特定的数据集进 行微调,效果往往比单纯依赖预训练模型要好。你可以进一步优化模型的任务感知,让它在实际应用中的表现更出色。
后训练的新机遇
很多人在讨论后训练时,忽略了它给大模型带来的更多可能性。后训练不仅仅局限于模型微调,还包括一些创新的技术手段。比如,通过优化后训练的学习率策略、选择性冻结部分参数、以及增强模型的稳健性等方法,可以使得模型在新任务上进行快速适应,避免了无谓的资源浪费。这种定制化的优化方式,无疑是后训练的一大优势。