1. Transformer
- 核心架构 Encoder-Decoder:Encoder 理解输入转高维语义表示(BERT);Decoder 生成输出,据上下文预测下一 Token(GPT)。
- 灵魂机制 Self-Attention 自注意力:每个词与句中所有词算相关性,用 Q/K/V——Query"我要找什么"、Key"我有什么特征"、Value"我的具体内容"。例:"动物太累因为它没过马路",注意力让"它"高度指向"动物"(指代消解)。
- 工作流程:位置编码(打位置标签,因非顺序读)→ 自注意力(每词勾搭相关词补全含义)→ 多头注意力(不同专家看语法/情感/逻辑最后汇总)。
- 一句话:不再死读顺序,通过全视角扫视精准捕捉文字背后逻辑。
Transformer 与大模型关系:Transformer 是技术基石,大模型是它在数据和算力推到极致后的产物。
1b. Transformer 结构细节
- 层数:原始 Transformer Encoder/Decoder 各堆叠 N=6 层。Encoder 每层 2 子层(多头自注意力 + FFN);Decoder 每层 3 子层(Masked 自注意力 + Cross-Attention + FFN)。
- Cross-Attention 数据流:Decoder 第二个注意力子层的 Q 来自上一 Decoder 层,K/V 来自 Encoder 输出——Encoder-Decoder 交互的核心。
- FFN:两层全连接夹一个激活(
W2·激活(W1·x+b1)),给注意力输出加非线性,中间维度通常放大 4 倍。 - 残差连接:解决深层梯度消失/爆炸、缓解退化,让网络学残差而非完整映射,更易优化。
- Q/K 为什么用不同权重矩阵:不同投影提升拟合能力;attention 除以 √d 防内积过大导致 softmax 梯度过小(数值稳定的缩放因子)。
GPT vs BERT:
- BERT:双向 Encoder,双预训练任务——MLM(掩码语言模型,预测被遮词,学词间关联)+ NSP(下一句预测,学句间逻辑)。擅长理解。
- GPT:单向自回归 Decoder(Causal,只看左文预测下一词)。擅长生成。
- decoder-only 为何成主流:① 方便多轮对话 ② zero-shot 更强 ③ 参数/算力更省 ④ decoder 的下三角 attention 是满秩矩阵,表达力强于 encoder 的低秩 attention。
2. 什么是大模型
基于海量数据压缩产生的"世界模型"。工作原理是"预测下一个字",据学到的语言规律逐字接龙。数据量巨大使接龙效果好到能写文章/代码/翻译/答专业问题。
常见毛病与成因:复读机问题(成因:训练数据重复模式、长序列注意力失效、过度依赖历史);SFT 后"变傻"(成因:数据偏移=微调集分布与预训练不同、过拟合=微调集小/模型容量大)。缓解见 §9 微调经验。
3. 三种架构
- Causal Decoder(因果解码器):从左到右单向注意力,只能看前文。代表 LLaMA 系/GPT。训练效率高(所有 token 都算 loss)、zero-shot 和涌现能力最强。
- Prefix Decoder(前缀解码器):输入部分双向注意力、输出部分单向。代表 ChatGLM/U-PaLM。是前两者折中。
- Encoder-Decoder:输入双向、输出单向。代表 T5/BART。偏理解类 NLP 任务好,长文本生成弱、训练效率低。
💡 深入理解 · 为什么主流大模型都是 Decoder-only? ① zero-shot 表现最好、能直接吃海量无标注语料 ② 双向注意力有低秩问题会削弱表达力 ③ 同参数量下 Decoder-only 最优。区别核心在 attention mask:Causal 严格只看前文,Prefix 让 prompt 部分 token 互相可见。
4. 归一化 LayerNorm / RMSNorm(对比题)
- LayerNorm:按单个样本自己的特征维度归一化(含可训练 γ 缩放、β 偏移),不依赖 batch,适合变长序列——这是它替代 BatchNorm 进 Transformer 的原因。
- RMSNorm:简化版 LayerNorm,去掉减均值/平移,只用均方根缩放,更快、效果相当或略升。LLaMA/Baichuan 用。
- Pre-LN vs Post-LN:Pre-LN(norm 在残差内)深层梯度稳定、好训但效果略差;Post-LN(norm 在残差后)深层梯度增大、训练不稳。现代大模型多用 Pre-LN。
- 速查:GPT3/Bloom/Falcon=Pre-LN,LLaMA/Baichuan=Pre-RMSNorm,ChatGLM-6B=Post-DeepNorm。
5. 激活函数
SwiGLU = Swish(xW)⊗xV 门控结构,用 3 个权重矩阵、中间维度取 4h×2/3 保参数量,LLaMA/LLaMA2/Baichuan/ChatGLM2 都用;GPT3/Bloom 用 GeLU(tanh 近似的高斯误差线性单元)。GLU 类(GeGLU/SwiGLU)靠门控比普通 FFN 效果好,是现代大模型标配。
6. 位置编码(RoPE 必考)
- 绝对位置编码:位置向量直接加到输入。训练式(BERT/GPT,无外推)或 Sinusoidal(正弦,有周期性+远程衰减)。
- 相对位置编码:改 Attention 矩阵注入相对距离。代表 T5 式(加可学习偏置)。
- RoPE 旋转位置编码:在 Q/K 算完后用旋转矩阵作用,用绝对位置的形式实现相对位置编码;正交矩阵不改模长、外推性好。LLaMA/GLM-130B/PaLM 都用。
- ALiBi:算完 attention score 后直接加一个按 q-k 相对距离的惩罚偏置(越远惩罚越大),外推性好,BLOOM 用。
💡 深入理解 · 长度外推问题 = 训练/推理长度不一致(位置没见过 + attention span 变大熵增)。解法:PI 线性插值、NTK-RoPE(最强、免 finetune)、ALiBi。
7. Attention 升级 MHA/MQA/GQA/Flash(热词密集)
- MHA→MQA→GQA 演进:MQA 所有头共享一份 K/V(PaLM/Falcon/ChatGLM2);GQA 分组共享 K/V,介于 MHA 和 MQA 之间(LLaMA2-34B/70B)。
- 为什么要 MQA/GQA:MHA 推理时反复加载巨大 KV Cache 导致内存受限、性能瓶颈;MQA/GQA 本质是缩小 KV Cache 省显存提速,且几乎不损训练效果。
- Flash Attention:分块 softmax 等价替代传统 softmax,靠高效利用 SRAM + 重计算 + Kernel 融合,省 HBM 显存、提速。LLaMA/Falcon 用。
8. MoE 混合专家(当前大热)
把某一层扩展成多个结构相同的专家网络,用门控 gate 网络 + TopK 只激活 k 个(通常 1~2 个)专家,输出是选中专家的加权和——稀疏激活省算力。
优势:同参数推理成本低、可扩到万亿参数、多任务强;缺点:训练不稳定、专家路由通信成本高、微调易过拟合。代表 Mixtral/DeepSeek-MoE。
💡 深入理解 · 工程难点解法:训练稳定用 Router z-loss + 更小初始化 + 混合精度;微调过拟合用更大 dropout + 更大学习率 + 更小 batch。两种并行:数据并行(专家复制,受单卡显存限)vs 专家并行(专家分散各卡,可训更多但引入通信)。
9. 微调总览(SFT / PEFT / RLHF)
在预训练 Base Model 基础上用特定领域数据二次训练。
- SFT 监督微调:用"指令-回答"对教特定风格/任务。逻辑和预训练一致(预测下一 token),但只算答句 response 的 loss、忽略问句 loss。
- PEFT 高效微调:只训极少参数降算力(LoRA/Adapter/Prefix/Prompt-tuning)。
- RLHF 强化学习:让模型更符人类价值观(对齐)。
微调经验:① 数据质量比数量重要、要干净有代表性、prompt 多样 ② 灾难性遗忘(学新忘旧)缓解:学习率别太高(2e-5 或更小、不超预训练 lr)+ 领域数据混通用数据(约 1:5~1:10)+ 用 PEFT ③ 数据 <10k 用 Chat 模型微调,~100k 在 Base 模型微调。
10. LoRA / PEFT 家族
LoRA 核心逻辑:预训练权重 W 旁增两个低秩矩阵 A、B(W + ΔW = W + BA),冻结原参数只更新 A、B。特点:参数少(1% 甚至更少)、速度快、模块化(插件可加载卸载、多任务切换)。
LoRA 调参要点:
- 秩 r:一般 4-8 最好,指令微调因分布广建议 8 以上再测。
- alpha:缩放参数,本质≈learning rate;常令 alpha=r 简化超参。
- 作用层:把可训练参数分散到多种权重矩阵(如 Wq+Wv 平均分配)优于堆在单一矩阵用大秩。
- 初始化:A 用高斯(kaiming)、B 初始化全 0,保证开始时 BA=0 维持原输出。
- 推理:可把 BA 合入 W0 消除延迟;换一套 BA 实现任务切换。
- 防过拟合:减小 r、增大数据、加权重衰减、给 LoRA 层加 dropout。
PEFT 三大类 + 对比:
| 方法 | 做法 | 推理延迟 | 特点 |
|---|---|---|---|
| LoRA/AdaLoRA/QLoRA | 重参数化低秩旁路 | 无(可合并) | 主流首选 |
| Adapter-tuning | 层内插"降维→非线性→升维+残差" | 有(串行 FFN) | 有推理时延 |
| Prefix-tuning | 每层输入前加可训练前缀 token | 占序列长度 | 只服务 NLG |
| Prompt-tuning | 只在输入层加连续 prompt 向量 | 轻 | 模型越大越接近全参微调 |
| P-tuning v2 | 每层加 prompt + 传统分类头 | 轻 | 解决小模型/序列标注失效 |
QLoRA:先把模型量化到 4bit,再加小组可学习低秩适配器,梯度通过量化权重反传。显著降显存(能在单卡微调大模型),但训练比 LoRA 慢。AdaLoRA:按重要性动态分配秩预算(重要矩阵高秩)。
💡 深入理解 · 全参微调 vs LoRA 取舍:LoRA 是低秩的,只改风格难改知识;全参微调才能真正注入/改变知识(BELLE 实验 FT 略优于 LoRA)。有 ≥10k 数据和算力时建议全参微调;显存有限选 QLoRA;简单任务 Prompt/P-tuning 即可。
训练超参速记:
- lr:典型 1e-4~2e-4(LoRA);warmup_ratio:学习率预热比例(开头逐步升 lr,常 0.03~0.3);lr_scheduler_type:cosine/constant。
- gradient_accumulation_steps:显存不足时累积梯度模拟大 batch;group_by_length:同长度序列分组省显存加速。
- max_grad_norm:梯度裁剪防爆炸(常 0.3);weight_decay:AdamW 的 L2 正则防过拟合。
- QLoRA 关键超参:bits=4、double_quant=True(双重量化压缩量化统计量)、quant_type="nf4"、compute_dtype=float16;lora_r 常见 16~64、lora_alpha 16、lora_dropout 0.05。
- 量化类型区分:nf4=4 位、fp16=16 位半精度、int8=8 位整数;INT8 同内存存更多、FP16 小范围计算,相对 FP32 加速但精度降。
11. RLHF 三阶段与变种
RLHF 完整三阶段:① SFT 有监督微调 → ② 训 RM 奖励模型(SFT 输出接回归层输出标量分数,让标注员对 4-9 个回复排序训练)→ ③ 用 PPO 基于 RM 微调 SFT 模型。
RLHF 的痛点:偏好数据人工标注贵、三阶段流程长迭代慢、PPO 训练同时要 4 个模型(Actor/Critic/RM/Ref,2 训 2 推)算力高。
DPO:用二元交叉熵目标直接优化 LLM 替代 PPO,跳过显式奖励模型和 RL,简化对齐、效果常优于 PPO——"你的语言模型本身就是奖励模型"。
其他变种一句话:RLAIF(用 AI 而非人打偏好分)、RRHF(排序损失、免 RL)、RAFT/拒绝采样(选最高奖励输出更新)、LIMA(浅层对齐假说,少量优质数据即可对齐)。
💡 深入理解 · PPO 的 Actor-Critic:Actor=要训练的模型(初始 SFT),输出下一 token 概率分布;Critic=评论家,输出下一 token 的"收益"(从该 token 起总奖励)。三步循环:采样→打分→学习。
12. 模型部署优化(了解)
量化(INT8/FP8/4bit 降显存)、推理引擎(TensorRT-LLM、vLLM 的 PagedAttention)、高并发(Ray 服务化 + 动态 Batching/Continuous Batching)。KV Cache / PagedAttention 原理详见 → 08 大模型调用。
13. 高频追问速答
❓ 常见追问 · 稠密向量怎么来的? → Transformer Encoder(BERT)多头注意力提取固定长度稠密向量,做语义特征压缩,与 Decoder 预测下一 token 是两回事。(详见 向量库与Embedding)
❓ 常见追问 · 为什么要微调不直接 RAG? → RAG 补知识,微调改能力/风格;固定领域风格适合微调,频繁更新的知识适合 RAG。
❓ 常见追问 · SFT 到底在学什么? → 逻辑同预训练(预测下一 token),但只算答句 loss,用高质量问答语料教问答技巧。
评论