文章目录
- 大语言模型训练与推理流程
-
- 一、整体架构基础:Transformer
- 二、训练流程(三阶段)
-
- [阶段 1:预训练(Pre-training)](#阶段 1:预训练(Pre-training))
- [阶段 2:监督微调(SFT, Supervised Fine-Tuning)](#阶段 2:监督微调(SFT, Supervised Fine-Tuning))
- [阶段 3:RLHF(基于人类反馈的强化学习)](#阶段 3:RLHF(基于人类反馈的强化学习))
- 三、推理流程(Inference)
- 四、工程优化(面试加分项)
- 五、面试常见问题速答
- 六、一句话总结
大语言模型训练与推理流程
一、整体架构基础:Transformer
现代 LLM(如 GPT、LLaMA、Claude)均基于 Transformer 架构,核心是自注意力机制(Self-Attention)。
输入 Token → Embedding → N × (Attention + FFN) → 输出概率分布
关键概念:
- Token:文本的最小单元,一个汉字 ≈ 1-2 tokens
- Embedding:将 token 映射为高维向量(如 4096 维)
- Attention:每个 token 与其他所有 token 计算相关性权重
- FFN(前馈网络):对每个位置独立做非线性变换
二、训练流程(三阶段)
阶段 1:预训练(Pre-training)
目标:让模型学习语言的统计规律和世界知识
| 项目 | 说明 |
|---|---|
| 数据 | 互联网文本、书籍、代码,数TB级 |
| 任务 | 自回归语言建模:预测下一个 token |
| 损失函数 | 交叉熵:`Loss = -log P(token_t |
| 规模 | GPT-3:175B 参数,300B tokens;LLaMA-3:数十T tokens |
| 耗时 | 数千张 GPU 跑数月,成本百万到千万美元级别 |
输入: "大语言模型的核心是"
预测: "Transformer" ← 计算损失,反向传播更新参数
优化器:AdamW + 学习率 Warmup + Cosine 衰减
阶段 2:监督微调(SFT, Supervised Fine-Tuning)
目标:让模型学会"对话"和"遵循指令"
-
数据:人工标注的高质量问答对(指令-回答格式)
-
模型在预训练权重基础上继续训练
-
数据量小(万到十万级),但质量要求极高
指令: "帮我写一个冒泡排序"
回答: "以下是冒泡排序的实现..." ← 模型学习这种格式
阶段 3:RLHF(基于人类反馈的强化学习)
目标:让模型输出更符合人类偏好(有用、无害、诚实)
三步流程:
① 人类对同一问题的多个回答进行排序
↓
② 训练奖励模型(Reward Model)学习人类偏好
↓
③ 用 PPO 算法优化 LLM,最大化奖励模型打分
现代替代方案:DPO(Direct Preference Optimization) --- 无需单独训练奖励模型,更简洁稳定
三、推理流程(Inference)
自回归生成
LLM 推理是逐 token 串行生成的过程:
输入: [你好] → 输出词表上的概率分布 → 采样得到 [,]
输入: [你好,] → 输出概率分布 → 采样得到 [我]
输入: [你好,我] → ... 直到生成 <EOS>
每步都要过一遍整个模型,计算量大、延迟高。
KV Cache(推理核心优化)
问题:每次生成新 token,历史 token 的 K/V 矩阵都要重新计算,浪费严重
方案:将历史 token 的 Key、Value 矩阵缓存起来,新 token 只计算自己的 KV 并追加
无 Cache:第 N 步计算量 = O(N²)
有 Cache:第 N 步计算量 = O(N) ← 每步只增量计算
代价:显存占用大,长上下文时 KV Cache 可占用数 GB 显存
采样策略
模型输出的是词表上的概率分布,如何选 token?
| 策略 | 说明 | 效果 |
|---|---|---|
| Greedy | 每步取概率最大的 | 确定但死板 |
| Temperature | 调整概率分布的"平坦度" | 控制创意度 |
| Top-k | 只从概率最高的 k 个中采样 | 避免低概率噪声 |
| Top-p (nucleus) | 从累积概率 ≥ p 的最小集合中采样 | 更自然,常用 |
四、工程优化(面试加分项)
训练侧
- 混合精度训练(FP16/BF16):减少显存,加快计算
- 梯度检查点(Gradient Checkpointing):用时间换显存,重算前向代替存储中间激活
- 分布式训练 :
- 数据并行(DDP):每卡一份模型,数据切片
- 流水线并行:模型按层切分到不同卡
- 张量并行:单层矩阵切分到多卡(Megatron-LM)
推理侧
- 量化(Quantization):FP16 → INT8/INT4,显存减半,速度提升
- FlashAttention:重写 Attention 的 CUDA kernel,减少 HBM 读写,提速 2-4x
- 连续批处理(Continuous Batching):动态合并请求,提高 GPU 利用率(vLLM 的核心)
- PagedAttention(vLLM):像操作系统管理内存一样管理 KV Cache,解决显存碎片问题
五、面试常见问题速答
Q:LLM 为什么不能修改已生成的内容?
自回归生成,每个 token 只依赖之前的,无法回头修改
Q:上下文窗口变长为什么难?
Attention 计算复杂度是 O(N²),长度翻倍,计算量翻 4 倍;KV Cache 显存线性增长
Q:训练和推理对硬件要求有何不同?
训练需要存储梯度和优化器状态(参数量 × ~16 字节),显存需求是推理的 3-4 倍;推理侧重低延迟、高吞吐
Q:为什么 LLM 会幻觉(Hallucination)?
模型本质是预测概率最高的 token,没有真正的"知识库"查询机制,当训练数据不足或问题超出分布时,就会生成听起来合理但错误的内容
Q:RAG 是什么,解决什么问题?
检索增强生成:推理时先从外部知识库检索相关文档,拼入上下文,弥补模型知识截止日期和幻觉问题
六、一句话总结
LLM 训练 = 海量文本自监督预训练 + 指令微调 + 人类偏好对齐;推理 = 自回归逐 token 生成 + KV Cache 加速;核心挑战是算力、显存和延迟的工程权衡。