第四章 训练与优化¶
本章概览¶
本章覆盖 LLM 从基座模型到可用 Agent 的训练全链路, 以及推理部署优化。从预训练到 SFT, 从 RLHF/DPO/GRPO 对齐到 PEFT 高效微调, 再到 Agentic-RL 与推理加速、模型服务化, 理解"模型如何被造出来、如何被高效部署"。
小节目录¶
4.1 训练阶段全景¶
定义¶
LLM 训练分四阶段 — 预训练 (Pre-training) → 监督微调 (SFT) → 对齐 (Alignment) → 后训练 (Post-training)。四阶段递进展开, 把一个只会"预测下一个 token"的统计模型逐步塑造成可用、可控、专门化的智能体大脑。该划分是当前主流 LLM (GPT/Claude/Llama/Qwen/DeepSeek) 训练的标准范式。
原理¶
预训练阶段在海量无标注文本上自监督学习, 习得语言规律与世界知识; SFT 阶段用"指令-响应"对监督学习, 让模型学会遵循指令与对话格式; 对齐阶段通过 RLHF/DPO 等技术让模型符合人类偏好 (安全/有用/诚实); 后训练是面向特定能力 (如 Agent/推理) 的额外训练, 例如 DeepSeek-R1 的推理强化、CodeLlama 的代码专精。各阶段数据量与成本递减但精细化递增, 形成从"广覆盖"到"精调优"的漏斗。
关键点¶
预训练最贵 (千万美元级算力投入), 决定模型能力上限; SFT 与对齐成本可控 (万到百万美元级), 决定模型可用性; 后训练是新趋势, 推理模型与 Agent 专用模型都依赖此阶段; 各阶段数据质量比数据量更重要, 高质量小数据常胜过低质量大数据。
应用·对比¶
| 阶段 | 目标 | 数据规模 | 成本量级 | 产出模型形态 |
|---|---|---|---|---|
| 预训练 | 语言规律与世界知识 | 万亿 token | 千万美元级 | 基座模型 (Base) |
| SFT | 指令遵循与对话格式 | 万到百万条 | 万到十万美元级 | 指令模型 (Chat) |
| 对齐 | 符合人类偏好 | 数万到数百万偏好对 | 十万到百万美元级 | 对齐模型 (Aligned) |
| 后训练 | 特定能力强化 (推理/Agent) | 任务相关 | 万到百万美元级 | 专用模型 (Specialized) |
4.2 预训练¶
定义¶
预训练 (Pre-training) 是在海量无标注文本上自监督学习, 让模型习得语言规律与世界知识的过程。它是 LLM 训练四阶段中最昂贵、最基础、也最具决定性的一环, 决定模型的"原生能力上限"。所有现代 LLM (GPT/Claude/Llama/Qwen/DeepSeek) 的起点都是预训练。
原理¶
数据来源包括网页爬虫 (Common Crawl)、书籍 (Books)、代码 (GitHub)、学术论文 (arXiv) 等, 需经过去重、过滤、质量筛选等清洗流程。Scaling Law (Kaplan 2020) 描述 loss 与参数量、数据量、算力之间的幂律关系 (loss ∝ 参数量^-α + 数据量^-β + 算力^-γ); Chinchilla 定律 (DeepMind 2022) 进一步指出数据量与参数量应等比例增长, 最优比例约 20 token/参数。分布式训练是预训练的工程难点, 主流策略包括数据并行 (DP)、张量并行 (TP)、流水线并行 (PP) 与 ZeRO 优化, 实际系统常混合多种策略以适配万卡集群。
关键点¶
数据质量决定模型上限, 高质量数据 (代码/论文/精选网页) 比单纯堆数据量更有效; Chinchilla 最优比例约 20 token/参数, 但现代 LLM 常过度训练 (over-training) 以降低推理成本; 分布式训练是工程难点, 通信开销与显存效率是核心权衡; 预训练成本高昂, 万亿参数模型单次训练成本可达千万美元级。
应用·对比¶
| 并行策略 | 通信开销 | 显存效率 | 适用规模 | 典型实现 |
|---|---|---|---|---|
| 数据并行 (DP) | 高 (梯度同步) | 低 (每卡完整模型) | 中小模型 | DDP/FSDP |
| 张量并行 (TP) | 中 (层内通信) | 高 (切分权重) | 大模型层内 | Megatron-LM |
| 流水线并行 (PP) | 低 (气泡开销) | 高 (切分层) | 超大模型层间 | PipeDream |
| ZeRO | 中 (状态切分) | 极高 (优化器/梯度/参数切分) | 各规模 | DeepSpeed ZeRO-3 |
4.3 监督微调 SFT¶
定义¶
SFT (Supervised Fine-Tuning) 用"指令-响应"对监督学习, 让模型学会遵循指令与对话格式, 完成从"会接话"到"会听话"的转变。SFT 是预训练后的第一个精细化阶段, 让基座模型 (Base) 升级为指令模型 (Chat/Instruct), 具备多轮对话与任务执行能力。
原理¶
指令数据通常为 (instruction, input, output) 三元组, 来源包括人工标注、强模型蒸馏 (如用 GPT-4 生成响应)、开源数据集 (Alpaca/ShareGPT/WizardLM)。对话模板 (Chat Template) 决定如何把三元组编码为模型输入, 主流格式包括 ChatML (OpenAI 系)、Vicuna (Llama 系)、Qwen-Chat 等, 注入 system/user/assistant 角色标记。过拟合风险是 SFT 的主要挑战 — 数据量小易过拟合, 需控制 epoch (通常 2-3) 与学习率 (常用 1e-5 到 5e-5 量级), 并配合正则化与早停策略。
关键点¶
数据质量远胜数据量, LIMA 论证 1k 高质量数据可胜过 52k 低质量数据; 对话模板影响下游推理与部署, 不同模板不可混用; SFT 后模型才具备真正的对话能力, 之前的基座模型只是"续写机器"; SFT 也可针对特定领域 (代码/数学/医学) 做专精微调。
应用·对比¶
| 维度 | 预训练 | SFT |
|---|---|---|
| 数据格式 | 无标注纯文本 | 指令-响应三元组 |
| 损失函数 | 全 token CLM loss | 仅响应部分 CLM loss |
| 数据规模 | 万亿 token | 万到百万条 |
| 学习率 | 1e-4 量级 | 1e-5 到 5e-5 量级 |
| 训练成本 | 千万美元级 | 万到十万美元级 |
| 产出能力 | 语言规律与世界知识 | 指令遵循与对话能力 |
4.4 对齐技术¶
定义¶
对齐 (Alignment) 让模型输出符合人类偏好 (有用 helpful / 诚实 honest / 安全 harmless, 简称 HHH), 是 SFT 后的关键阶段。对齐技术解决"模型会说话但说得不对、不安全、不诚实"的问题, 是 LLM 从"能聊"到"可用可信"的必经之路。
原理¶
三种主流方法各有侧重。RLHF (Reinforcement Learning from Human Feedback) 先用人类偏好数据训练奖励模型 (Reward Model), 再用 PPO 算法优化策略模型最大化奖励, 流程复杂但效果好, 是 InstructGPT/ChatGPT 的核心方法。DPO (Direct Preference Optimization) 直接用偏好对 (chosen, rejected) 优化策略模型, 绕过显式奖励模型与 RL 训练, 流程大幅简化, Zephyr 与 Llama 3 部分采用。GRPO (Group Relative Policy Optimization, DeepSeek 提出) 用组内 baseline 替代独立 critic 模型, 显著降低训练成本, 在 DeepSeek-Math 与 DeepSeek-R1 的训练中表现突出, 成为推理模型训练的新趋势。
关键点¶
RLHF 最成熟但工程最复杂, 需训练奖励模型并维护 PPO 的稳定性; DPO 简单稳定但效果略逊于 RLHF, 适合资源受限场景; GRPO 是新趋势, 在推理模型训练中表现突出, 降低了对独立 critic 的依赖; 三者并非互斥, 现代 LLM 常组合使用 (如先 DPO 再 RLHF 微调)。
应用·对比¶
| 方法 | 是否需奖励模型 | 训练稳定性 | 计算成本 | 代表模型 |
|---|---|---|---|---|
| RLHF-PPO | 是 (独立 RM) | 较差 (PPO 易震荡) | 高 (4 个模型并存) | InstructGPT/ChatGPT |
| DPO | 否 (隐式偏好) | 好 | 中 (2 个模型) | Zephyr/Llama 3 |
| GRPO | 否 (组内 baseline) | 好 | 中低 (无 critic) | DeepSeek-Math/R1 |
4.5 PEFT 参数高效微调¶
定义¶
PEFT (Parameter-Efficient Fine-Tuning) 只训练少量额外参数即可微调大模型, 大幅降低显存与存储成本, 让消费级硬件也能微调数十亿参数模型。PEFT 是大模型时代"人人可微调"的关键技术, 也是垂直领域定制化的主流方案。
原理¶
四种代表方法各有思路。LoRA (Low-Rank Adaptation) 冻结原权重, 在权重旁路训练低秩分解矩阵 A·B (秩远小于原权重秩), 推理时可将 A·B 合并回原权重, 实现零推理开销。QLoRA 在 LoRA 基础上对基座模型做 4bit 量化 (NF4), 让单张消费级 GPU 即可微调 65B 模型, 是平民化微调的标杆。Adapter 在 Transformer 层间插入小 MLP 模块, 训练时只更新 Adapter 参数, 推理时有额外计算开销。Prefix Tuning 在每层注意力前拼接可学习 prefix 向量, 不改动原模型结构但需修改注意力计算。
关键点¶
LoRA 是当前主流, 效果接近全参数微调且实现简单; QLoRA 让消费级 GPU (如 RTX 4090) 可微调大模型, 推动平民化微调浪潮; 秩 (rank) 选择影响效果, 常用 8/16/64, 越大表达能力越强但参数越多; PEFT 适合垂直领域定制, 但若任务与预训练分布差异大, 全参数微调可能更优。
应用·对比¶
| 方法 | 可训练参数量 | 显存占用 | 推理开销 | 效果 | 适用场景 |
|---|---|---|---|---|---|
| LoRA | 0.1%-1% | 中 (基座 fp16) | 零 (可合并) | 接近全参 | 通用微调 |
| QLoRA | 0.1%-1% | 极低 (基座 4bit) | 零 (可合并) | 略低于 LoRA | 消费级 GPU |
| Adapter | 1%-5% | 中 | 有 (额外层) | 良好 | 多任务切换 |
| Prefix Tuning | 0.1%-1% | 低 | 有 (注意力) | 略低于 LoRA | 生成任务 |
4.6 Agentic-RL¶
定义¶
Agentic-RL 是 Agent 场景下的强化学习, 让模型在与环境交互中优化 Agent 能力 (工具调用、任务规划、长程执行)。区别于传统 RLHF 关注"对话偏好", Agentic-RL 关注"任务完成", 是 Agent 专用模型的关键训练范式。
原理¶
区别于传统 RLHF (人类偏好驱动, 奖励来自 RM), Agentic-RL 用环境奖励训练模型, 奖励来源更客观可验证。奖励来源分三类: 环境奖励 (代码执行通过/测试通过/任务成功信号, 最可信但需可验证任务)、模型反馈 (LLM-as-Judge 评判 Agent 轨迹质量, 易规模化但有偏见)、人类反馈 (稀疏标注, 质量高但成本高)。代表工作包括 DeepSeek-R1 的 RL 训练 (用可验证数学/代码奖励 + GRPO)、SWE-agent 的环境驱动训练 (用 GitHub PR 是否合并作为奖励)。
关键点¶
环境奖励最可信但需任务可验证 (代码/数学适合, 开放对话难); 模型反馈易规模化但 LLM-as-Judge 有偏见与自我偏好; Agentic-RL 是 Agent 专用模型的关键训练范式, 推动了 o1/R1 等推理模型与 SWE-agent 等 Coding Agent 的突破; 该方向仍在快速演进, 奖励设计与训练稳定性是核心挑战。
应用·对比¶
| 维度 | 传统 RLHF | Agentic-RL |
|---|---|---|
| 奖励来源 | 人类偏好 (RM) | 环境/模型/人类反馈 |
| 任务类型 | 开放对话/通用偏好 | 可验证任务 (代码/数学/工具调用) |
| 奖励客观性 | 主观 (偏好) | 客观 (可验证) |
| 训练成本 | 高 (RM + PPO) | 中到高 (环境模拟) |
| 代表模型 | ChatGPT/Claude | DeepSeek-R1/SWE-agent |
4.7 推理加速¶
定义¶
推理加速 (Inference Acceleration) 降低 LLM 推理的时延 (latency) 与成本, 是模型服务化的关键。随着模型规模扩大与上下文增长, 推理算力与显存压力急剧上升, 推理加速直接决定 LLM 服务的经济可行性与用户体验。
原理¶
四类核心技术各有侧重。KV Cache 缓存历史 token 的 Key/Value 避免重复计算, 是注意力推理加速的基石, 后续技术多依赖它。量化 (Quantization) 用 INT8/INT4 等低比特表示降低显存与带宽, 主流算法包括 GPTQ (训练后二阶量化)、AWQ (激活感知量化)、SmoothQuant (平滑激活异常值)。投机解码 (Speculative Decoding) 用小模型生成草稿、大模型并行验证, 可加速 2-3 倍。Continuous Batching 动态拼 batch 提升吞吐, 是 vLLM 的核心技术; 蒸馏 (Distillation) 用大模型教小模型, 从源头降低推理成本。
关键点¶
KV Cache 是其他加速技术的基础, 没有它注意力推理开销会爆炸; 量化是性价比最高的手段, INT4 可让 70B 模型塞进单卡; Continuous Batching 决定服务吞吐, 是高并发场景必备; 投机解码对长生成任务加速显著, 但对短输出收益有限; 蒸馏从源头降低成本, 但需训练资源。
应用·对比¶
| 量化方案 | 精度损失 | 显存节省 | 加速比 | 实现复杂度 |
|---|---|---|---|---|
| INT8 (朴素) | 小 | 2x | 1.5-2x | 低 |
| INT4 (朴素) | 中 | 4x | 2-3x | 低 |
| GPTQ | 小到中 | 4x (INT4) | 2-3x | 中 |
| AWQ | 小 | 4x (INT4) | 2-3x | 中 |
| SmoothQuant | 小 | 2x (INT8) | 1.5-2x | 中 |
4.8 模型服务化¶
定义¶
模型服务化 (Model Serving) 框架封装推理引擎, 对外提供 HTTP/gRPC API, 是 LLM 部署的最后一公里。服务化框架屏蔽底层推理优化细节 (KV Cache/量化/批处理), 让开发者聚焦业务逻辑, 是 LLM 从"研究模型"到"生产服务"的关键桥梁。
原理¶
主流方案各有定位。vLLM 以 PagedAttention 与 Continuous Batching 为核心, 吞吐量是业界标杆, 适合生产高并发场景。TGI (Text Generation Inference, HuggingFace 出品) 易用性好, 与 HF 生态深度集成, 适合快速部署。TensorRT-LLM (NVIDIA) 追求极致性能, 充分利用 GPU 张量核心, 但工程复杂度高、调试困难。Ollama 主打本地一键部署, 模型库丰富, 适合个人与开发调试。llama.cpp 用 C++ 实现, 跨平台且对 CPU/边缘端友好, 是端侧与资源受限场景的首选。
关键点¶
生产环境选 vLLM 或 TensorRT-LLM, 吞吐与延迟最优; 个人与开发场景选 Ollama, 易用性最好; 边缘端与 CPU 场景选 llama.cpp, 跨平台支持最广; 选型需综合考量吞吐、延迟、易用性、硬件支持与社区生态; 部分场景可组合使用 (如生产 vLLM + 本地 Ollama 调试)。
应用·对比¶
| 方案 | 吞吐 | 延迟 | 易用性 | 硬件支持 | 适用场景 |
|---|---|---|---|---|---|
| vLLM | 极高 | 低 | 中 | GPU (CUDA) | 生产高并发 |
| TGI | 高 | 低 | 高 | GPU (CUDA) | 快速部署 |
| TensorRT-LLM | 极高 | 极低 | 低 | NVIDIA only | 极致性能 |
| Ollama | 中 | 中 | 极高 | CPU/GPU | 个人/开发 |
| llama.cpp | 中 | 中 | 高 | CPU/GPU/多平台 | 端侧/边缘 |
延伸阅读¶
- AI 知识库目录 - 系统教程与课程 - Hello-Agents 教程第十一章 Agentic-RL
- AI 知识库目录 - 论文与文档 - LoRA / DPO / GRPO / PagedAttention 论文
- AI 知识库目录 - 工具与平台 - vLLM / Ollama / llama.cpp 等