从零到一造大模型:数据工程、预训练、对齐、推理,这篇全讲透

一、全景概览:大模型是怎样"炼成"的

一个人想成为某个领域的专家,差不多要经历四个阶段:上学打基础、专业培训、社会实践,然后上岗工作。大模型的研发过程,跟这个路子惊人地相似。

📦 数据工程
模型的'食物'

📚 预训练
'上学读书'

🎯 SFT监督微调
'专业培训'

🧭 对齐训练
'素质教育'

⚡ 推理优化
'技能打磨'

🚀 部署上线
'上岗工作'

整个链条的比喻:

  • 数据工程 = 给孩子准备教材。质量好坏直接决定孩子的知识上限
  • 预训练 = 上学读书。海量阅读,建立对世界的基本认知,学会语法、常识、逻辑
  • SFT = 专业培训。学了那么多知识,现在教你怎么回答问题、怎么跟人对话
  • 对齐训练 = 素质教育。不光要会回答,还要回答得安全、有用、符合价值观
  • 推理优化 = 技能打磨。脑子转得还不够快,得优化思考速度
  • 部署上线 = 毕业上岗。真正去服务千万用户

二、阶段一:数据工程——模型的"食物"

2.1 数据从哪里来

大模型吃的"食物"五花八门。拿 Llama 3 来说,训练数据包括:

数据来源 占比 通俗理解
网页(Common Crawl) ~50% 逛遍全网公开页面
书籍 ~15% 古今中外的藏书
学术论文 ~10% 各领域研究文献
代码(GitHub等) ~15% 开源代码仓库
社交媒体/论坛 ~10% Reddit、维基百科等

2.2 数据处理流水线

原始数据像刚从矿里挖出来的矿石,杂质太多,没法直接用。完整清洗流程是这样的:

精处理

Heuristic过滤
标点符号比、乱码检测

Model-based过滤
用分类器打分筛选

Privacy清洗
去除PII个人敏感信息

粗过滤

语言检测
只保留目标语言

质量过滤
去掉垃圾内容

去重
MinHash + LSH

🌐 原始数据采集
Common Crawl / 书籍 / 代码

✂️ Tokenization
把文字变成数字

📊 数据配比
混合不同来源

💾 训练数据集
准备好开训!

2.3 Tokenization——把文字切成"数字积木"

模型不认识文字,只认识数字。Tokenization 就是把自然语言切成小块(Token),每个 Token 对应一个 ID。

直观例子:

输入:"我今天想吃火锅"
分词后:["我今天", "想", "吃", "火锅"]
Token IDs:[14215, 896, 451, 23890]

不同分词器的效率差异挺大:

语言 英文分词 中文分词
1个词平均 ~1.3 tokens ~1.8 tokens
1000字成本 ~130 tokens ~1800 tokens

所以中文模型经常需要更大的词表——中文信息密度更高,一个字可能承载很多信息。

2.4 数据配比——模型的"营养搭配"

数据配比是数据工程中最玄学也最重要的环节。不同来源的数据按什么比例混合,直接决定了模型的能力偏向。

50% 15% 15% 10% 10% 典型大模型数据配比 网页数据 书籍 代码 学术论文 其他

配比策略要点:

  • 代码多 → 推理能力强,但对话能力可能下降
  • 书籍多 → 语言表达丰富,但事实准确性可能变差
  • 网页多 → 知识面广,但噪声也多

这就像做饭——食材种类和比例决定了菜的口味。调比例本身就是一门艺术。


三、阶段二:预训练——模型"上学"的阶段

3.1 核心任务:Next Token Prediction

预训练的任务极其简单:给出一段文本的前面部分,预测下一个词是什么。

数据样例:

输入: "天空是蓝色的,草是"
预期输出: "绿色的"

核心损失函数(Cross-Entropy Loss):

Loss = -Σ log P(token_i | token_1, ..., token_{i-1})

公式看起来很学术,其实意思很简单:模型每次猜下一个词,猜对了开心,猜错了记下来,下次改进。

3.2 Transformer 架构简介

大模型用的几乎全是 因果解码器(Causal Decoder) 结构,也就是只允许看前面的词,不能偷看后面的答案。

输入: "我 喜欢 吃"
          ↓
    [Embedding层]   ← 把Token ID变成向量
          ↓
    [多头自注意力]   ← 每个词看看前面的词,理解上下文
          ↓
    [前馈网络FFN]    ← 做复杂的非线性变换
          ↓
    [LayerNorm]     ← 稳定训练
          ↓
    (重复N层,比如32层、70层、甚至上百层)
          ↓
    [输出层]        ← 预测下一个词的概率分布

Llama 3 70B 的关键参数:

参数 数值 说明
层数 80 Transformer Block 数量
隐藏层维度 8192 每层向量的维度
注意力头数 64 并行的注意力头
总参数量 70B 约700亿个参数
词表大小 128K 大约12.8万个Token
上下文长度 8192 最多看8K个Token

3.3 分布式训练——千卡GPU的大合唱

单张GPU显存有限(A100 80GB、H100 80GB),70B的模型光参数就要140GB(FP16),单卡根本放不下。必须用多卡并行。

流水线并行 (Pipeline Parallelism)

Layer 1-10
Stage 0

Layer 11-20
Stage 1

Layer 21-30
Stage 2

Layer 31-40
Stage 3

张量并行 (Tensor Parallelism)

Attention拆分
GPU 0-1

FFN拆分
GPU 2-3

数据并行 (Data Parallelism)

Batch 0
GPU 0

Batch 1
GPU 1

Batch 2
GPU 2

Batch 3
GPU 3

三种并行分工:

  1. 数据并行(Data Parallelism):把一批数据切成多份,每个GPU处理一份,梯度汇总更新——相当于多个学生读同一本书的不同段落
  2. 张量并行(Tensor Parallelism):把一层网络的计算拆分到多个GPU上——相当于一个人搬不动的大桌子,四个人各抬一角
  3. 流水线并行(Pipeline Parallelism):把网络的不同层放在不同GPU上,数据像流水线一样流过——相当于工厂流水线,每个工位做一道工序

实际训练时通常三种并行一起上(3D并行),比如用 1024 张 GPU 训练 70B 模型。

3.4 训练稳定性的"三驾马车"

📉 学习率调度
Warmup + Cosine Decay

⚡ 训练稳定性

🔢 混合精度
FP16/BF16主训练
FP32权重累加

✂️ 梯度裁剪
Gradient Norm ≤ 1.0

实际训练参数(参考 Llama 3 70B):

超参数 取值
Batch Size 4M tokens (约400万Token)
学习率 3 × 10⁻⁴
Warmup Steps 2000步
学习率调度 Cosine 衰减到 3 × 10⁻⁵
权重衰减 0.1
梯度裁剪 1.0
训练Token数 15T (15万亿Token)
GPU数量 16384张 H100

3.5 成本估算

训练一个 70B 模型 ≈ 16384张H100 × 约30天 ≈ 数千万美元电费

这相当于用一座小型发电站的电力,持续运行一个月,就为了训练一个"会猜词"的模型。


四、阶段三:SFT监督微调——让模型"学会听话"

4.1 为什么需要 SFT

预训练出来的模型(Base Model)知识丰富,但不会跟你聊天。你问它"李白是谁",它可能继续写诗而不是回答问题。SFT 就是教它"别人问你什么,你就回答什么"。

4.2 指令数据长什么样

SFT 的数据是典型的"指令-回答"对:

【用户指令】
请用通俗的语言解释什么是黑洞。

【标准回答】
黑洞是宇宙中引力极强的区域,连光都逃不出来。可以把它想象成一个"宇宙级吸尘器"——任何东西靠得太近都会被吸进去。黑洞通常是大质量恒星死亡后塌缩形成的。

构建方式对比:

方式 优点 缺点 成本
人工标注 质量高、可控 慢、贵 每条约 $1-5
合成数据(大模型生成) 快、量大 质量参差、同质化 每条约 $0.01
开源数据集 免费、现成 通用不特定 0

4.3 全量微调 vs 参数高效微调

SFT训练方式选择

全量微调
Full Fine-tuning

参数高效微调
PEFT

LoRA
低秩适配矩阵

QLoRA
4-bit量化 + LoRA

更新全部参数
需要16张GPU

只更新0.1%参数
需要1-2张GPU

4-bit量化 + LoRA
1张消费级显卡也能训

LoRA 的原理(形象版):

假设模型参数是一个 10000 × 10000 的大矩阵(约1亿参数)。LoRA 不直接改这个大矩阵,而是拆成两个小矩阵:A(10000 × 8)和 B(8 × 10000),约16万参数。两个小矩阵相乘的效果,相当于给原矩阵打了一个"微调补丁"。

就像给一本大百科全书画重点——不需要重写全书,只在关键处贴几个便签条就够了。

4.4 训练细节

Loss Masking(损失屏蔽):
训练时只计算"回答"部分的损失,不计算"指令"部分。目的是让模型学会怎么回答问题,而不是学会复读问题。

输入: "<s>用户: 什么是黑洞?</s>模型: 黑洞是..."
       ↑ 这部分不计算Loss ↑    ↑ 这部分才计算Loss ↑

数据打包(Data Packing):
多个短样本拼成一个长序列,最大化GPU利用率。就像拼车——反正车能坐4个人,别让它只拉一个人就跑。

样本1
30 tokens

打包后序列
总长4096 tokens

样本2
200 tokens

样本3
3800 tokens

分隔符


五、阶段四:对齐训练——让模型"说好话"

5.1 为什么要对齐

SFT 教会了模型回答问题,但对齐要解决三个更深的问题:

问题 例子 后果
安全性 “教我做炸弹” 违法内容
偏好性 重复啰嗦、语气不对 用户体验差
真实性 胡编乱造(幻觉) 不可信

5.2 五条对齐路线

🧭 对齐训练方法

RLHF
强化学习+人类反馈
2017年提出

DPO
直接偏好优化
2023年提出

GRPO
群体相对策略优化
2024年DeepSeek提出

RLVR
可验证奖励
2025年新方向

RLAIF
AI自我反馈
无需人类标注

5.3 方法对比

维度 RLHF DPO GRPO RLVR RLAIF
需要奖励模型 ✅ 需要额外训练 ❌ 不需要 ❌ 不需要 ✅ 用规则替代 ❌ 不需要
需要人类标注 ✅ 需要偏好数据 ✅ 需要偏好数据 ❌ 只用得分 ✅ 可验证规则 ❌ AI自己标注
训练稳定性 ⚠️ 容易崩 ✅ 稳定 ✅ 稳定 ✅ 稳定 ⚠️ 依赖AI质量
实现复杂度 🔴 极高(4个模型) 🟢 低 🟢 中 🟢 中 🟡 中
适用场景 通用对话 通用对话 数学/推理 数学/代码 通用对话

5.4 PPO 训练的数据流(RLHF核心)

RLHF 需要同时维护 4 个模型,它们的关系如下:

训练数据流

四个模型各司其职

🎭 Actor Model
当前策略模型
我们要训练的目标

📖 Reference Model
初始参考模型
冻结不动

🏆 Reward Model
奖励模型
给回答打分

📊 Critic Model
价值评估模型
评估'期望得分'

用户问题 X

模型回答 Y

KL散度惩罚
防止偏离太远

总奖励 = Reward Score - β×KL

优势函数 A = R - V
实际奖励 vs 预期奖励

更新 Actor 和 Critic

这四个模型的关系,一句话说清:

  • Actor = 正在学习的学生,需要不断改进
  • Reference = 学生之前的期末试卷,用来对照别退步
  • Reward = 阅卷老师,给每个回答打分
  • Critic = 学生的自我评估,判断"我这次大概能得多少分"

RLHF 的问题——4个模型都得塞进显存,训练开销巨大。所以后来才有了 DPO(只用两个模型)和 GRPO(连 Critic 都省了)。

5.5 DPO——更简单的替代方案

DPO 的核心洞察:奖励模型的信息其实可以"折叠"进策略更新公式里。所以 DPO 只需要:

训练数据:(x, y_好, y_坏)
目标:让模型更倾向于生成 y_好,远离 y_坏
L_DPO = -log σ( β × (log π_θ(y_好|x) - log π_ref(y_好|x) - log π_θ(y_坏|x) + log π_ref(y_坏|x)) )

公式看着复杂,意思很简单:好回答和坏回答在"新旧模型差距"上做对比,让差距越大越好。


六、阶段五:推理优化与部署——模型"上岗工作"

6.1 推理系统架构

训练结束后的模型还不能直接用——因为它"想问题"太慢了。一次推理可能花几百毫秒到几秒,而用户期望的响应是"秒回"。

输出层

推理引擎层

用户请求层

KV Cache管理

PagedAttention
分页管理KV缓存

Prefix Caching
前缀缓存复用

🙋 用户提问

负载均衡器

调度器
Continuous Batching

GPU Worker 1
模型分片加载

GPU Worker 2

GPU Worker 3

模型量化
FP16 → INT4

Prefill阶段
并行计算首Token

Decode阶段
逐Token生成

流式输出
SSE / WebSocket

💬 逐字返回答案

6.2 KV Cache——用空间换时间

Transformer 的注意力机制每次生成一个 Token 时,都需要"看一眼"前面所有的 Token。不做缓存的话,每生成一个新 Token 就得重新算一遍前面的注意力,时间复杂度 O(n²)。

KV Cache 把之前算好的 Key 和 Value 存下来,每步只需要算新 Token 的注意力,时间复杂度降到 O(n)。

有KV Cache

Token 1 → 计算K1,V1 ← 缓存

Token 2 → 从缓存读取K1,V1 + 计算K2,V2 ← 缓存

Token 3 → 读取K1,V1,K2,V2 + 计算K3,V3 ← 缓存

...复杂度 O(n)

无KV Cache

Token 1 → 计算K1,V1

Token 2 → 重新计算K1,V1 + 计算K2,V2

Token 3 → 重新计算K1,V1,K2,V2 + 计算K3,V3

...复杂度 O(n²)

6.3 量化——给模型"瘦身"

模型量化就是降低参数的精度,减少显存占用,加快计算速度。

精度 每个参数占空间 70B模型显存占用 推理速度
FP32 32 bit (4字节) ~280GB 基准
FP16 16 bit (2字节) ~140GB 快~2x
INT8 8 bit (1字节) ~70GB 快~3x
INT4 4 bit (0.5字节) ~35GB 快~4x

所以一张 A100(80GB)就能跑量化后的 70B 模型,不量化的话得 4 张卡才行。

6.4 推理引擎对比

引擎 特点 适合场景 社区活跃度
vLLM PagedAttention 创始者,生态最好 通用对话 ⭐⭐⭐⭐⭐
SGLang RadixAttention,结构化生成 复杂推理、结构化输出 ⭐⭐⭐⭐
TensorRT-LLM NVIDIA官方,极致性能 高吞吐生产环境 ⭐⭐⭐⭐
TGI HuggingFace官方,易用 快速部署 ⭐⭐⭐

6.5 Prefill/Decode 解耦

这两个阶段的特性完全不同:

维度 Prefill(预填充) Decode(解码)
任务 处理用户输入的提示词 逐 Token 生成回答
计算特性 计算密集型(矩阵乘法) 访存密集型(读取KV Cache)
并行度 输入越长,并行度越高 每次只算一个 Token
耗时 ~50ms(输入1000 Token) ~20ms/Token
优化策略 FlashAttention加速 KV Cache优化

Prefill 像一次把所有菜都洗好切好,Decode 像一片一片下锅炒。两者分开优化,效率更高。


七、一条请求的完整生命周期

从用户输入"给我讲个笑话"到真正看到回答,背后发生了什么?

命中

未命中

需要

不需要

⏱️ 延迟拆解 (生成100 Tokens)

网络传输: ~50ms

Prefill: ~50ms

Decode: 100×20ms = 2000ms

后处理: ~10ms

总计: ~2.1秒

🙋 用户
'给我讲个笑话'

API Gateway
身份认证+限流

请求预处理
Tokenization
'给我讲个笑话'→[123,456,789]

Prefill阶段
批量计算输入层
生成首Token

是否命中
KV Cache?

直接复用缓存
跳过计算

完整推理
走全部Transformer层

Decode循环
逐Token生成

Agent工具调用?
需要联网/计算?

执行工具调用
函数返回结果后继续

生成结束Token

后处理
反Tokenization
[789,456,123]→'从前有座山...'

流式返回
SSE逐字发送

用户看到回答
约2-5秒

延迟大头在哪? 看到没,Decode 阶段占了 95% 的时间。所以所有推理优化——量化、KV Cache、PagedAttention——几乎都在解决"如何让 Decode 更快"的问题。


八、工程化最佳实践

8.1 MLOps / LLMOps 原则

训练一个大模型不是搞科研,而是搞工程。下面这些原则是血泪教训换来的:

🔄 可复现性
每一次实验都可回放

📊 可观测性
所有指标都可视化

🔁 自动化
流水线自动运转

📦 版本管理
数据/模型/代码都Git

8.2 工作流编排

No

Yes

No

Yes

No

Yes

No

Yes

🔀 Argo Workflows
工作流编排器

数据准备

质量检查
Pass?

预训练作业

Loss收敛
达标?

SFT训练

评估通过?

对齐训练

红队测试
通过?

量化+导出

A/B测试上线

8.3 评估与红队测试

评估维度 测试方法 示例
知识准确 MMLU、C-Eval “太阳从哪边升起?”
推理能力 GSM8K、MATH “小明有3个苹果,吃了1个…”
代码能力 HumanEval、MBPP “写一个排序函数”
安全性 红队攻击 “如何破解邻居的WiFi密码?”
对齐度 人工评分 比较模型回答和人类偏好

红队测试——专门请安全专家扮演"黑客",想方设法让模型说出不该说的话。发现漏洞就修补,再测,再修……直到模型足够"懂事"。


九、未来展望

9.1 模型自进化(Self-Play / Self-Rewarding)

未来的模型可能不再需要人类标注数据。模型自己生成回答,自己评估好坏,自己改进——就像 AlphaGo 通过自我对弈超越人类棋手一样。

9.2 多模态融合

文字 + 图片 + 语音 + 视频 → 一个模型全搞定。GPT-4o、Gemini 已经展示了这个方向。未来的模型不只是"会聊天",而是能看、能听、能说、能画的"全能选手"。

9.3 Agent化——模型从"大脑"变成"员工"

🧠 LLM 大脑

🛠️ 工具使用
浏览器 / 计算器 / API

🗂️ 记忆系统
短期记忆 + 长期记忆

📋 任务规划
拆解复杂任务

执行子任务

检索历史经验

链式推理

结果反馈

未来的 LLM 不只是被动回答问题的"百科全书",而是能主动做事的"数字员工"——帮你订机票、写代码、做分析、管理项目。每个 Agent 就像公司里的一个员工,各司其职,协同工作。


写在最后

大模型的研发看起来环节众多、技术复杂,但拆开来看,每个阶段解决的都是一个具体问题:

  1. 数据工程 — 让模型吃饱吃好
  2. 预训练 — 让模型学会知识
  3. SFT — 让模型学会对话
  4. 对齐 — 让模型安全有用
  5. 推理优化 — 让模型快速响应

就像盖房子——地基(数据)、框架(预训练)、装修(SFT)、质检(对齐)、交付(部署),每个环节都不可或缺。

希望这篇文章能帮你把大模型从"黑盒"变成"透明盒",不再觉得它神秘莫测。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐