IT策士 10余年一线大厂经验,专注大模型测试、AI产品质量保障与职场进阶。我会在各个平台持续发布最新文章,助你少走弯路。

前面几篇我们学会了调用 API,也认识了各大主流模型。但你有没有好奇过:这些模型从"一张白纸"到"博学多才",到底经历了什么?为什么 GPT-5.4 和 DeepSeek-V4 的"性格"截然不同?这篇文章带你走进大模型的训练流水线,用测试工程师能理解的类比,拆解预训练、微调与对齐三个阶段。


一、训练流程全景图

如果把大模型比作一个人,训练流程大致对应三个阶段:

📚 预训练 (Pre-training)"读完整个图书馆"
   海量互联网文本,学习语言的统计规律
   ↓
🎓 指令微调 (Instruction Tuning)"学会做题"
   用高质量问答数据,让模型学会"按指令输出"
   ↓
🧭 对齐 (Alignment)"树立价值观"
   用人类反馈或规则,让输出有用、真实、无害

这三个阶段对应三个截然不同的数据配方、训练目标和算力消耗。下面逐一深入。


二、预训练:数据吞噬者的"通识教育"

2.1 预训练在做什么?

预训练的核心任务很简单:预测下一个 token

输入: "中国的首都是"
模型需要预测: "北京"

这不是"理解",而是"统计"。模型在海量文本(通常 10~50 万亿 token)上反复做这个任务,最终学到的是一种对世界的压缩表示——语法规则、事实知识、推理模式,都以概率分布的形式编码在模型参数中。

2.2 数据配方决定模型"体质"

数据来源 占比(典型) 提供的能力
网页文本(Common Crawl) 60~70% 通用知识、语言流畅度
书籍 10~15% 长文本连贯性、深度知识
代码仓库(GitHub) 10~15% 代码生成、逻辑推理
学术论文 3~5% 专业知识、科学推理
多语言文本 3~5% 多语言能力

测试启示: 如果某个领域的数据占比过低,模型在那个领域就容易产生幻觉。比如中文预训练数据少的模型,中文能力天然弱——这就是为什么 DeepSeek 的中文好(中文数据占比高),而早期 GPT 的中文差。

2.3 预训练的技术细节

# 伪代码:预训练的核心循环(简化)
for batch in dataloader:  # 遍历 TB 级数据
    inputs = batch["input_ids"]       # 前文 token
    targets = batch["labels"]         # 下一个 token(正确答案)
    
    outputs = model(inputs)           # 模型预测每个位置的下一个 token
    loss = cross_entropy(outputs, targets)  # 计算预测与实际的差距
    loss.backward()                   # 反向传播,计算梯度
    optimizer.step()                  # 更新参数,让下次预测更准

训练周期通常为 1~3 个 epoch(一个 epoch = 完整过一遍数据),用时数周到数月,消耗数千张 GPU。

2.4 预训练完成后的模型长什么样?

此时它叫做基座模型(Base Model),例如 GPT-5.4-base。它的行为特征:

# 用基座模型生成文本(演示用,实际基座模型通常不直接对外开放)
# 输入: "中国的首都是"
# 输出(基座模型):
"中国的首都是北京。上海是中国最大的城市。中国的国土面积..."
# ↑ 它不知道何时停,因为它只学了"续写",没学"回答"

关键缺陷: 基座模型会"自由续写"而非"回答问题"。你问它"1+1=?“,它可能接着写"1+1=2,2+2=4,3+3=6…”,完全停不下来。这就是为什么需要指令微调。


三、指令微调:从"续写机器"到"问答助手"

3.1 指令微调在做什么?

指令微调的核心是改变模型的输入输出格式,让它学会"看到指令→给出回答"。

预训练数据格式:
  "中国的首都是北京。上海是..."  → 预测下一个 token

指令微调数据格式:
  {
    "instruction": "中国的首都是哪里?",
    "output": "中国的首都是北京。"
  }

数据集通常包含数十万到数百万条高质量指令-回答对,形式多样:

任务类型 示例
知识问答 “光合作用的化学方程式是什么?” → “6CO₂ + 6H₂O → C₆H₁₂O₆ + 6O₂”
摘要 “将以下段落总结为一句话:…” → “本文讨论了…”
翻译 “将’Hello’翻译成中文” → “你好”
代码生成 “写一个 Python 快速排序” → “def quicksort(arr): …”
创意写作 “写一首关于月亮的诗” → “明月几时有…”

|

3.2 指令微调的三种方法

方法 参数量变化 算力需求 适用场景
全参微调 (Full Fine-tuning) 更新全部参数 极高(需要和预训练类似的算力) 大公司,追求极致效果
LoRA 只训练少量低秩矩阵(<1%参数) 低(单卡即可) 中小企业,特定领域微调
QLoRA LoRA + 量化(4-bit) 极低(消费级 GPU) 个人开发者,实验性微调

3.3 全参微调 vs LoRA:一张表看懂

对比维度 全参微调 LoRA
训练参数量 全部(如 8T) 极小(如 800M)
所需显存 > 500GB 24GB 单卡即可
训练时间 数天(多卡集群) 数小时(单卡)
效果天花板 最高 接近全参微调(90~95%)
可插拔性 差(一个大模型只能有一个全参微调版本) 好(可以同时加载多个 LoRA 适配器)
成本 数十万美元 几十到几百美元

|

对测试工程师的意义: 你需要知道被测模型经过了哪种微调——全参微调的模型行为更稳定,LoRA 微调的可能在某些边界 case 出现退化。


四、对齐:给模型注入"价值观"

4.1 为什么需要对齐?

指令微调后的模型会"回答"了,但可能:

  • 有用但不真实:自信地编造 “2025年世界杯冠军是火星队”

  • 真实但有害:告诉你 “如何制造炸弹” 的详细步骤

  • 无害但没用:对所有问题都回答 “对不起,我不能回答这个问题”

对齐的目的就是在有用性(Helpful)、真实性(Honest)、无害性(Harmless)之间找到平衡

4.2 RLHF:基于人类反馈的强化学习

RLHF(Reinforcement Learning from Human Feedback)是对齐的主流方法,分为三步:

步骤1: 收集人类偏好数据
  "1+1=?" 
  → 回答A: "1+1=2"  ← 人类标注员选择A(更好)
  → 回答B: "1+1=2,这是一个简单的数学问题..." 

步骤2: 训练奖励模型 (Reward Model)
  学习人类偏好,给任意回答打分

步骤3: PPO 强化学习
  用奖励模型优化大模型,让它的回答获得更高分数

4.3 DPO:更简单的替代方案

DPO(Direct Preference Optimization)是 RLHF 的简化版,直接用好/坏回答对优化模型,省去了奖励模型这一步:

# DPO 的简化思想
# 好的回答 → 提高概率
# 坏的回复 → 降低概率
# 不需要额外的奖励模型,直接优化

目前 GPT-5.4 和 Claude 4.8 倾向于使用 RLHF+DPO 混合方案,DeepSeek 主要使用 DPO。

4.4 不同对齐策略塑造不同"性格"

模型 对齐策略 表现出的"性格"
GPT-5.4 强 RLHF 乐于助人,积极回答,有时过度自信
Claude 4.8 Constitutional AI + RLHF 谨慎、安全第一,容易拒绝敏感问题
DeepSeek-V4 DPO + 规则约束 平衡,中文场景更自然
Gemini 3.5 RLHF + 搜索增强 信息丰富,倾向引用来源

五、训练全流程对测试的影响

5.1 各阶段引入的缺陷类型

阶段 可能引入的缺陷 测试关注点
预训练 知识错误、偏见、数据污染 事实准确性、公平性、训练数据泄露
指令微调 格式遵循不稳、多任务冲突 指令遵循率、输出格式正确性
对齐 过度拒答、谄媚、价值观不统一 安全边界、拒答率、一致性

5.2 一个模型,三个"版本"的测试策略

当你面对一个模型时,理论上它有三个版本:

基座模型 → 测试知识储备(测"知道什么")
  ↓ 指令微调
对话模型 → 测试任务能力(测"能做什么")
  ↓ 对齐
发布模型 → 测试安全与价值观(测"不会做什么"

实际测试中,你通常只能接触到发布模型。但理解这个分层,可以帮你定位缺陷根因:

  • 如果是事实错误 → 可能是预训练数据问题

  • 如果是格式输出不对 → 可能是指令微调不充分

  • 如果是过度拒答 → 可能是对齐过度


六、动手试试:对比基座行为与对话行为

虽然我们无法直接调用 GPT-5.4 的基座模型,但可以用 DeepSeek-V4 做个有趣的实验——通过调整 prompt 模拟"预训练模式"和"指令模式"的差异:

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.deepseek.com"
)

# 实验:模拟"预训练续写模式"
prompt_continuation = """中国的首都是"""

response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "system", "content": "你是一个文本续写引擎。你只负责续写给定的文本,不要回答问题,不要加前缀,直接续写。"},
        {"role": "user", "content": prompt_continuation}
    ],
    max_tokens=50
)
print("=== 续写模式 ===")
print(f"输入: {prompt_continuation}")
print(f"输出: {response.choices[0].message.content}")
print()

# 实验:标准问答模式
prompt_qa = "中国的首都是哪里?"

response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "system", "content": "你是一个简洁的问答助手,直接回答问题。"},
        {"role": "user", "content": prompt_qa}
    ],
    max_tokens=50
)
print("=== 问答模式 ===")
print(f"输入: {prompt_qa}")
print(f"输出: {response.choices[0].message.content}")

预期输出:

=== 续写模式 ===
输入: 中国的首都是
输出: 北京。作为中国的政治、文化、国际交往和科技创新中心,北京拥有超过3000年的建城史...

=== 问答模式 ===
输入: 中国的首都是哪里?
输出: 北京。

这个实验直观展示了:同样的模型,不同的指令格式会产生截然不同的行为——这就是指令微调想要教给模型的东西。


本文小结

大模型的训练是一条三阶段的流水线:预训练用海量数据建立"知识压缩库",指令微调用高质量问答教模型"按格式办事",对齐用人类反馈注入"价值观"。每个阶段都引入独特类型的缺陷,理解这个分层是精准测试和缺陷定位的基础。预训练决定"知道什么",微调决定"能做什么",对齐决定"不会做什么"。

下一篇预告:《AI 的六块技术拼图》——NLP、CV、语音、知识图谱、具身智能、多模态如何与大模型融合,各自解决什么问题。

想了解更多还可以去各个平台搜索「IT策士」,一起升级 AI 测试思维 !

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐