从训练到部署:LLM 生命周期¶
面试高频考点¶
- 一个 LLM 从数据到上线要经过哪些阶段?
- 预训练、SFT、DPO/RLHF、评估、部署如何衔接?
- 为什么训练完成不等于产品可用?
- 商业项目里如何持续迭代模型?
总览¶
LLM 生命周期可以拆成 7 个阶段:
flowchart LR
A["数据收集"] --> B["预训练"]
B --> C["后训练 SFT/DPO/RLHF"]
C --> D["评估"]
D --> E["推理部署"]
E --> F["线上监控"]
F --> G["反馈迭代"]
G --> A
1. 数据阶段¶
细化理解: 数据阶段决定了模型能力上限和风险下限。真实流程通常包括来源筛选、去重、质量打分、敏感信息过滤、版权与合规审查、语言和领域配比控制。去重不仅是为了省算力,还能减少 benchmark 泄漏和训练集记忆;质量过滤也不是越严格越好,因为过度过滤可能损失长尾知识、口语表达和代码边界案例。
数据来源包括:
- Web 文本
- 代码
- 书籍
- 论文
- 对话
- 企业文档
- 用户反馈
- 工具调用轨迹
关键工作:
| 工作 | 目的 |
|---|---|
| 清洗 | 去噪、去广告、去乱码 |
| 去重 | 防止重复样本放大 |
| 过滤 | 去低质量、有害、违规内容 |
| 配比 | 控制代码、数学、中文、英文比例 |
| 去污染 | 避免评测集泄漏 |
2. 预训练¶
预训练目标通常是 next-token prediction。
产物是 base model。
Base model 的特点:
- 知识和语言能力强
- 能续写
- 不一定会稳定遵循指令
- 安全边界弱
- 输出格式不可控
面试里要说清:
Base model 是能力底座,不等于可直接上线的助手。
3. 后训练¶
后训练让 base model 变成 assistant model。
SFT¶
学习指令格式和任务行为。
适合:
- 格式遵循
- 领域问答
- 工具调用格式
- 多轮对话样式
DPO / RLHF¶
学习偏好排序。
适合:
- 更有帮助
- 更自然
- 更安全
- 更少废话
- 更符合业务风格
4. 评估¶
细化理解: 评估要分层做:基础能力看通用 benchmark,业务能力看真实任务集,安全能力看红队与越权测试,稳定性看多轮回归。只看平均分会掩盖严重问题,例如某些高风险类别失败率很高、长上下文后半段遗忘、工具调用参数稳定性差。生产上线前更重要的是建立可复现的 eval set 和失败样本归因流程。
评估不能只看一个 benchmark。
要分层:
| 层 | 指标 |
|---|---|
| 通用能力 | MMLU、CMMLU、C-Eval |
| 代码 | HumanEval、MBPP |
| 数学 | GSM8K、MATH |
| 指令遵循 | IFEval、人工集 |
| 安全 | jailbreak、拒答准确率 |
| RAG | Recall、Faithfulness、Citation Accuracy |
| 业务 | 解决率、采纳率、成本、延迟 |
商业上线前必须有回归集,防止新版本在旧任务上退化。
5. 推理部署¶
工程细节: 推理部署关注吞吐、延迟、显存和稳定性。Prefill 阶段吃计算,decode 阶段吃显存带宽和 KV Cache;在线服务还要处理 batch 合并、流式输出、超时取消、重试、限流和多模型路由。一个常见面试回答是:部署不是把模型加载起来就结束,而是把请求调度、缓存、监控、降级和成本治理一起纳入系统设计。
部署要考虑:
- 模型大小
- 并发
- 延迟
- 上下文长度
- KV Cache
- 量化
- batching
- 成本
常见技术:
| 技术 | 解决什么 |
|---|---|
| vLLM / SGLang | 高吞吐 serving |
| Quantization | 降显存和成本 |
| FlashAttention | 提升 attention IO 效率 |
| Prefix Cache | 复用公共前缀 |
| Speculative Decoding | 降低生成延迟 |
| Router | 简单问题走小模型 |
6. 线上监控¶
LLM 产品要监控的不只是服务可用性。
系统指标¶
- QPS
- TTFT
- TPOT
- GPU 利用率
- KV Cache 使用率
- 错误率
质量指标¶
- 用户点赞/点踩
- 人工接管率
- 幻觉率
- 拒答率
- 引用正确率
- 工具调用成功率
成本指标¶
- input token 成本
- output token 成本
- cache hit rate
- 单次请求平均成本
- 每个业务场景的成本
7. 反馈迭代¶
线上反馈可以进入不同链路:
| 反馈类型 | 处理方式 |
|---|---|
| 知识缺失 | 更新知识库 / RAG |
| 格式不好 | SFT 数据补充 |
| 偏好不好 | DPO 偏好对 |
| 工具失败 | 修工具 schema 和流程 |
| 安全问题 | 安全数据和规则 |
| 成本太高 | 缓存、路由、量化 |
重点:
不是所有问题都靠微调解决。很多生产问题应该先看检索、prompt、工具、权限和产品流程。
常见误区¶
误区 1:训练好模型就能上线¶
上线还需要评估、部署、监控、安全、回滚和反馈闭环。
误区 2:线上效果差就微调¶
可能是知识库没召回、prompt 不清楚、工具失败或权限过滤错了。
误区 3:只看 benchmark¶
业务系统必须看真实任务指标,比如解决率、采纳率、成本和延迟。
误区 4:大模型越强越适合所有请求¶
简单请求用小模型或缓存更划算,复杂请求再路由到强模型。
面试延伸¶
Q:你怎么设计一个 LLM 产品的迭代闭环?
我会把日志、反馈、评估集和线上指标打通。知识缺失进 RAG 知识库,行为问题进 SFT,偏好问题进 DPO,工具失败修 workflow,安全问题进规则和安全数据。
Q:为什么评估要分层?
因为总分无法定位问题。RAG 出错要拆检索和生成,Agent 出错要拆规划和工具调用,部署问题要拆 TTFT、TPOT 和吞吐。
Q:如何降低 LLM 产品成本?
优先做缓存、模型路由、上下文压缩、检索增强、量化和 batching,而不是一上来换更小模型牺牲质量。
生命周期决策树¶
线上问题不要一律回答“微调”。可以用这个决策树:
答案缺事实?
-> 知识库是否有?没有:补知识库 / 数据接入
-> 有但没召回:调 RAG
-> 召回了但没用:调 prompt / 上下文
格式不稳定?
-> 先加输出 schema / parser / few-shot
-> 仍不稳定:SFT 格式样本
偏好不符合?
-> 收集 preference pairs
-> DPO / RLHF
延迟高?
-> 看 TTFT / TPOT / queue time
-> prefix cache / batching / 量化 / 路由
成本高?
-> token 归因
-> 缓存 / 压缩 / 小模型路由 / 限额
面试里这比背概念更有区分度,因为它体现你知道不同问题应该进不同工程链路。
训练数据到反馈数据¶
LLM 生命周期里有几类数据,不要混:
| 数据 | 来源 | 用途 |
|---|---|---|
| Pretraining Corpus | 网页、书籍、代码、论文 | 学语言和世界知识 |
| Instruction Data | 人工/合成指令 | 学会按任务回答 |
| Preference Data | A/B 答案偏好 | 学偏好和安全边界 |
| RAG Knowledge | 企业文档、FAQ、工单 | 提供事实和最新知识 |
| Eval Set | 黄金问答、红队样本 | 回归测试和上线门禁 |
| Feedback Logs | 用户反馈、失败 trace | 迭代 prompt、RAG、数据 |
项目里可以说:
我不会把线上日志直接拿去训练,而是先脱敏、聚类、标注、分流:知识缺口进知识库,格式问题进 SFT,偏好问题进 DPO,安全问题进红队集。
上线门禁¶
一个模型或 prompt 版本上线前至少过这些检查:
- 黄金集准确率不下降。
- 引用准确率不下降。
- 拒答率在合理范围。
- 安全红队样本不回退。
- P95 延迟和单次成本在预算内。
- 工具调用成功率不下降。
- 出错时能降级或回滚。
如果面试官问“怎么保证改 prompt 不把线上搞坏”,这就是答案。
原始论文¶
| 论文 | 链接 |
|---|---|
| InstructGPT / Training language models to follow instructions with human feedback (Ouyang et al., 2022) | arxiv.org/abs/2203.02155 |
| Direct Preference Optimization (Rafailov et al., 2023) | arxiv.org/abs/2305.18290 |
| PagedAttention / vLLM (Kwon et al., 2023) | arxiv.org/abs/2309.06180 |
| FlashAttention (Dao et al., 2022) | arxiv.org/abs/2205.14135 |
| LoRA (Hu et al., 2021) | arxiv.org/abs/2106.09685 |
延伸阅读与视频¶
| 平台 | 标题 | 说明 |
|---|---|---|
| 📖 OpenAI Cookbook | Getting started with OpenAI Evals | 学如何把模型升级和 prompt 改动放进评估闭环 |
| 📖 vLLM Docs | vLLM documentation | 推理部署、continuous batching、PagedAttention 实践入口 |
| 📖 Hugging Face TRL | TRL documentation | SFT、DPO、PPO 等后训练工具链 |
| 📺 B站 | 跟李沐学 AI - InstructGPT 论文精读 | 理解从 SFT 到 RLHF 的后训练范式 |