大语言模型LLM原理

生活化类比:把 LLM 想象成一位”读了海量书籍的助理”——预训练是它通读整个图书馆积累常识,SFT 是岗前培训教它按指令办事,RLHF/DPO 对齐则是老员工带教,让它说话更合人意。

大语言模型(Large Language Model, LLM)是基于 Transformer 架构、在海量文本上预训练的神经网络模型。理解 LLM 的训练流程和推理优化是 AI 岗位的核心考点。

LLM 生命周期总览


graph LR

    RT[原始文本] --> TK[Tokenization 分词]

    TK --> PT[Pre-training 预训练<br/>学会语言能力]

    PT --> SF[SFT 监督微调<br/>学会遵循指令]

    SF --> AL[RLHF / DPO 对齐<br/>学会人类偏好]

    AL --> DP[部署推理]

一句话串联:预训练(Pre-training)让模型”懂语言”,SFT(Supervised Fine-Tuning 监督微调)让模型”听指令”,RLHF(Reinforcement Learning from Human Feedback 基于人类反馈的强化学习)/ DPO(Direct Preference Optimization 直接偏好优化)让模型”合人意”。三者逐级收窄能力目标。

Tokenization 分词

LLM 不直接处理原始文本,而是先将文本拆分为 Token(子词单元)。

BPE(Byte-Pair Encoding)算法

BPE 是当前主流的分词算法,GPT 系列和 LLaMA 均使用。

核心思想: 从字符级别开始,反复合并出现频率最高的相邻 token 对,直到达到目标词表大小。

 
初始:所有单个字符都在词表中
 
第1轮:统计所有相邻字符对频率,合并最高频的(如 "t" + "h" → "th")
 
第2轮:在合并后的序列上继续统计,合并最高频的(如 "th" + "e" → "the")
 
...重复直到词表达到预设大小
 

为什么不用词级别分词?

方式优点缺点
词级别语义清晰词表巨大(几十万),OOV 问题严重
字符级别词表小,无 OV 问题序列太长,难以捕获语义
子词(BPE)平衡词表大小和序列长度需要训练分词器

主流模型的词表大小

模型词表大小分词算法
GPT-250,257BPE
GPT-3/4100,256BPE
LLaMA32,000SentencePiece BPE
LLaMA 3128,256Tiktoken BPE
Qwen151,936Tiktoken BPE
BERT30,522WordPiece

Pre-training 预训练

预训练阶段让模型学习语言的基本能力。

训练目标

目标说明代表模型
Causal LM(自回归)预测下一个 token:P(x_tx_1, …, x_{t-1})
Masked LM(掩码)预测被 mask 的 tokenBERT, RoBERTa
Prefix LM前缀双向编码 + 后缀自回归T5, PaLM

为什么 Decoder-Only + Causal LM 成为主流?

  • 自然适配生成任务

  • Scaling Law 表明在大参数量下效果最好

  • 训练效率高(每个 token 都贡献一次梯度)

训练数据

数据来源规模特点
Common Crawl数 TB网页数据,质量参差不齐
Wikipedia~20GB高质量百科知识
Books~100GB长文本,叙事结构
Code (GitHub)数 TB增强逻辑推理能力
StackExchange~50GB问答格式,有助于指令理解

要点:数据质量比数据量更重要。LLaMA 2 使用了经过精心筛选的 2 万亿 token 数据集,效果优于使用 4 倍以上数据但质量较差的模型。

Scaling Laws 缩放定律

Kaplan et al. (2020) 和 Chinchilla (Hoffmann et al., 2022) 发现了 LLM 的缩放规律:

 
性能(Loss)≈ f(参数量 N, 数据量 D, 计算量 C)
 
Chinchilla 最优分配:
 
C ≈ 6 × N × D(计算量固定时)
 
最优比例:N ∝ D(参数量和数据量应同步增长)
 
模型参数量训练 Token 数是否符合 Chinchilla
GPT-3175B300B数据不足(过参数化)
LLaMA7B-65B1T-1.4T接近最优
Chinchilla70B1.4T最优比例
LLaMA 38B-405B15T过度训练(为了推理效率)

Supervised Fine-Tuning (SFT)

SFT 使用高质量的「指令-回复」数据对模型进行微调,让模型学会遵循人类指令。

训练数据格式

 
{
 
  "instruction": "请解释什么是机器学习",
 
  "input": "",
 
  "output": "机器学习是人工智能的一个分支,它让计算机能够从数据中学习规律,而不是被显式编程..."
 
}
 

SFT 的关键技巧

技巧说明
数据质量 > 数量1000 条高质量数据可能超过 10 万条低质量数据
多样性覆盖多种任务类型(问答、翻译、代码、数学等)
对话模板使用 ChatML 等标准模板,区分 system/user/assistant
Loss Masking只在 assistant 回复部分计算 loss,不计算 user 输入部分

RLHF 人类反馈强化学习

RLHF 的目标是让模型的输出更符合人类偏好。

三阶段流程

 
阶段1: Reward Model 训练
 
  收集人类偏好数据(给同一 prompt 的两个回复排序)
 
  训练奖励模型:R(prompt, response) → 奖励分数
 
阶段2: PPO 强化学习
 
  使用 PPO 算法优化策略模型,最大化奖励同时用 KL 散度约束不要偏离原始模型太远
 
  目标:max R(x,y) - β·KL(π_θ || π_ref)
 

DPO 直接偏好优化

DPO 是 RLHF 的简化替代方案,无需训练单独的 Reward Model:

特性RLHF (PPO)DPO
需要 Reward Model
训练稳定性较差(超参敏感)更好
计算开销大(需要多个模型)
效果上限更高接近 RLHF

DPO 的核心公式:L_DPO = -log σ(β(log π_θ(y_w|x)/π_ref(y_w|x) - log π_θ(y_l|x)/π_ref(y_l|x)))

其中 y_w 是人类偏好的回复(winner),y_l 是不偏好的回复(loser)。

Inference 推理优化

Temperature / Top-p / Top-k 采样

参数范围作用
Temperature0-2控制随机性。=1 原始分布;→0 趋近 greedy;→∞ 趋近均匀
Top-k1-100只从概率最高的 k 个 token 中采样
Top-p (Nucleus)0-1只从累积概率达到 p 的最小 token 集合中采样

组合策略:

  • 代码生成:temperature=0, top_p=1(确定性输出)

  • 创意写作:temperature=0.7~1.0, top_p=0.9

  • 通用对话:temperature=0.7, top_p=0.9

KV Cache

参见 03-自注意力机制与Transformer基础 中的 KV Cache 章节。

Speculative Decoding 推测解码

用一个小模型(draft model)快速生成多个候选 token,然后用大模型并行验证。

 
Draft Model: 快速生成 K 个 token → [t1, t2, t3, t4, t5]
 
Target Model: 并行验证这 K 个 token → 接受前 3 个,拒绝第 4 个
 
速度提升:2-3x(大模型只做一次前向传播,而非 5 次)
 

量化 (Quantization)

将模型权重从 FP16 压缩到 INT8 或 INT4,减少显存占用和推理延迟。

精度每参数字节7B 模型显存效果损失
FP162 bytes~14 GB
INT81 byte~7 GB极小
INT40.5 bytes~3.5 GB可接受

主流量化方法: GPTQ(训练后量化)、AWQ(激活感知量化)、GGUF(llama.cpp 格式)


▶ 对应实操:01-Token计费原理-Temperature控制-SystemPrompt层级

▶ 对应实操:02-LLM本质-API调用封装

速记卡(面试闪卡)

Q1:一句话讲清「大语言模型LLM原理」到底是什么?

A:大语言模型(LLM)是基于 Transformer、在海量文本上预训练的神经网络:预训练让它懂语言,SFT 让它听指令,RLHF/DPO 让它合人意。

Q2:生命周期:培养助理三阶段 —— 怎么理解?

A:LLM 训练像培养读了海量书的助理:预训练(通读图书馆积累常识)→ SFT(岗前培训教按指令办事)→ RLHF/DPO(老员工带教让说话合人意),能力目标逐级收窄。

Q3:Tokenization:BPE 子词 —— 怎么理解?

A:LLM 先把文本拆成 Token(子词),BPE 从字符级反复合并最高频相邻对直到词表达标(GPT/LLaMA 都用);子词平衡了词表大小和序列长度,避开词级 OOV 和字符级语义弱。

Q4:Pre-training:训练目标与 Scaling —— 怎么理解?

A:预训练学语言基本功:Causal LM(GPT 自回归预测下一 token)、Masked LM(BERT 掩码)、Prefix LM(T5)。Decoder-Only+Causal LM 因适配生成、Scaling Law、训练效率成主流;Chinchilla 主张参数量与数据量同步增长。

Q5:SFT 与 RLHF/DPO 对齐 —— 怎么理解?

A:SFT 用「指令-回复」对微调让模型听指令(数据质量>数量、Loss Masking 只在回复算 loss);RLHF 三阶段(Reward Model→PPO+KL 约束)对齐偏好,DPO 免单独 Reward Model、更稳、效果接近。

Q6:核心速记主线有哪些?

  • 生命周期:预训练→SFT→RLHF/DPO→部署

  • 分词:BPE 子词,平衡词表与序列

  • 预训练:Causal/Masked/Prefix LM,Decoder-Only 主流

  • Scaling:Chinchilla 参数量与数据量同步增长

  • 推理优化:Temperature/Top-p/投机解码/量化/KV Cache

口诀

A:预训练懂语言,SFT 听指令;

RLHF DPO 合人意,三级递收窄路径;

Decoder 成主流,Scaling 定律定输赢;

推理控温度量化跑,显存压下半斤轻。

相关链接


快速问答

问题参考答案
GPT 和 BERT 的核心区别?GPT 是 Decoder-Only,自回归生成;BERT 是 Encoder-Only,双向编码。GPT 适合生成任务,BERT 适合理解任务
为什么现在都用 Decoder-Only?① Scaling Law 表明大参数下效果好 ② 统一了理解和生成 ③ 训练效率高
预训练和微调的区别?预训练在海量无标注数据上学习语言能力(自监督);微调在特定任务数据上调整模型行为(监督)
RLHF 解决了什么问题?SFT 模型可能生成有害/不准确/冗长的内容,RLHF 通过人类偏好数据让模型输出更符合人类期望
什么是幻觉(Hallucination)?模型自信地生成看似合理但实际错误的内容。原因:训练数据噪声、解码策略、知识边界模糊
如何减少幻觉?① RAG 引入外部知识 ② RLHF 对齐训练 ③ 低 temperature ④ 后处理验证 ⑤ 思维链推理
LoRA 的核心思想是什么?冻结原始权重,只训练低秩分解的增量矩阵 ΔW = A×B,A(d×r), B(r×d),r<<d,参数量大幅减少
如何评估 LLM?基准测试(MMLU、HumanEval、GSM8K)、人工评估(Chatbot Arena)、特定任务评估

相关链接