07 · 大模型基础(面试八股文)
面向零基础读者的系统梳理:每个知识点尽量包含「概念解释、原理详解、面试问答、追问应对、代码示例(如适用)」。本模块是 LLM / Agent 面试的高频核心,建议结合论文与开源实现(如 Hugging FaceTransformers、vLLM)对照理解。
目录
模型微调
对齐技术
模型量化
推理优化
Transformer 架构
1.1 概念解释
Transformer 是一种完全基于自注意力(Self-Attention)的神经网络结构,用于序列建模。与 RNN/CNN 不同,它不依赖逐步递归或局部卷积,而是通过注意力在任意两个位置之间直接建立依赖关系,因而并行度高,且更容易捕捉长距离依赖。
经典论文 Attention Is All You Need 提出了两种用法:
•
Encoder:把输入序列编码成一组上下文相关的表示(适合理解、分类、双向信息)。
•
Decoder:自回归地生成下一个 token(适合生成);Decoder 还可通过 Cross-Attention 读 Encoder 的输出(机器翻译等 Encoder–Decoder 任务)。
纯 Decoder 堆叠(如 GPT 系列)已成为当前大语言模型(LLM)的主流形态。
1.2 原理详解
1.2.1 Encoder–Decoder 结构
•
Encoder(多层堆叠):每层包含 Self-Attention(双向,每个位置能看到整句)+ FFN。输出是一组向量 (H),编码了源序列信息。
•
Decoder(多层堆叠):每层包含 Masked Self-Attention(只能看到当前位置及之前,保证自回归)+ Encoder–Decoder Attention(Cross-Attention)(Query 来自 Decoder,Key/Value 来自 Encoder)+ FFN。
•
用途:Seq2Seq(翻译、摘要等)。纯 Decoder LLM 往往只有 Decoder 块,用「前缀」当条件做生成,不再单独训练 Encoder。
1.2.2 Self-Attention 的计算过程(Q、K、V 与缩放点积注意力)
对输入序列的每个位置 (i),先把隐向量变成三个向量:
•
Query (Q):「我要查什么」
•
Key (K):「我有什么可被匹配的标签」
•
Value (V):「匹配成功后取出什么内容」
实现上:(X \in \mathbb{R}^{n \times d_{model}}),可学习矩阵 (W_Q, W_K, W_V),则
(Q = XW_Q,\ K = XW_K,\ V = XW_V)。
缩放点积注意力输出:
[ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) V ]
其中 (d_k) 为每个头的维度。对第 (i) 个位置,注意力权重是它对各个位置 (j) 的分布,再对 (V) 做加权求和。
1.2.3 Multi-Head Attention(MHA)
将 (d_{model}) 拆成 (h) 个头,每个头在 (d_k = d_{model}/h) 维子空间上独立做注意力,最后 Concat 再乘 (W_O) 投回 (d_{model})。
直觉:不同头可以关注不同模式(语法、指代、局部搭配等),表达能力更强。
1.2.4 Position Encoding
注意力本身置换不变(打乱 token 顺序若不加位置信息则结果不变),必须注入位置信息。
#yiPQBiCCuISF text { white-space: pre; }#yiPQBiCCuISF .fb0 { stroke: var(--N900-FG, 0.15); }#yiPQBiCCuISF .fb0 {stroke: rgba(31,35,41, 0.15)}#yiPQBiCCuISF .fx0 { stroke-miterlimit: 10; }#yiPQBiCCuISF .fx0 {stroke-miterlimit: 10}#yiPQBiCCuISF .fa1 { fill: rgb(187, 191, 196); }#yiPQBiCCuISF .fa1 {fill: rgb(187, 191, 196)}#yiPQBiCCuISF .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#yiPQBiCCuISF .fx1 {font-style: normal}#yiPQBiCCuISF .fx2 { text-anchor: middle; }#yiPQBiCCuISF .fx2 {text-anchor: middle}#yiPQBiCCuISF .fx3 { dominant-baseline: central; }#yiPQBiCCuISF .fx3 {dominant-baseline: central}#yiPQBiCCuISF .fx4 { stroke: none; }#yiPQBiCCuISF .fx4 {stroke: none}#yiPQBiCCuISF .fc0 { fill: var(--text-caption); }#yiPQBiCCuISF .fc0 {fill: #646a73}#yiPQBiCCuISF .fa2 { fill: var(--text-link-disabled); }#yiPQBiCCuISF .fa2 {fill: rgb(187, 191, 196)}#yiPQBiCCuISF .fx5 { font: 400 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#yiPQBiCCuISF .fx5 {font-style: normal}#yiPQBiCCuISF .fx6 { text-anchor: start; }#yiPQBiCCuISF .fx6 {text-anchor: start}#yiPQBiCCuISF .fx7 { dominant-baseline: alphabetic; }#yiPQBiCCuISF .fx7 {dominant-baseline: alphabetic}#yiPQBiCCuISF .fc1 { fill: rgb(31, 35, 40); }#yiPQBiCCuISF .fc1 {fill: rgb(31, 35, 40)}#yiPQBiCCuISF .fb1 { fill: var(--N900-FG, 0.15); }#yiPQBiCCuISF .fb1 {fill: rgba(31,35,41, 0.15)}#yiPQBiCCuISF .fb2 { fill: rgb(209, 217, 224); }#yiPQBiCCuISF .fb2 {fill: rgb(209, 217, 224)}#yiPQBiCCuISF .fa3 { fill: var(--bg-body); }#yiPQBiCCuISF .fa3 {fill: #fff}AB1234方法正弦位置编码(Sinusoidal PE)RoPE(Rotary Position Embedding)ALiBi(Attention with Linear Biases)思路简述固定函数,不同维度用不同频率的正弦/余弦;可外推到比训练更长的位置(但现代 LLM 仍常用可学习或 RoPE)。在 Q、K 上施加与位置相关的旋转,相对位置以旋转角度差体现;广泛用于 LLaMA、ChatGLM 等,外推与相对位置性质较好。不在 embedding 加位置向量,而在注意力 logits 上按距离加线性负偏置,远处更负,实现简单且对长度外推有一定帮助。
1.2.5 Feed-Forward Network(FFN)
每层注意力子层后接一个位置独立的 FFN,通常形式为:
[ \text{FFN}(x) = \text{Activation}(xW_1 + b_1) W_2 + b_2 ]
常见 扩展比 为 4(隐层维度 (4 \times d_{model})),激活函数常用 GELU/SwiGLU(SwiGLU 会用三个矩阵,等价于门控 FFN)。
1.2.6 Layer Normalization:Pre-Norm vs Post-Norm
•
Post-Norm(原始 Transformer):(x \leftarrow x + \text{Sublayer}(x)),再在子层输出上做 Norm。
•
Pre-Norm(现代 LLM 常见):先 Norm 再进子层:(x \leftarrow x + \text{Sublayer}(\text{LN}(x)))。
Pre-Norm 通常更稳定、更易训练深层网络;Post-Norm 在理论上与残差更「经典」,但深层时更难训。
1.2.7 Residual Connection(残差连接)
[ x_{l+1} = x_l + \text{Sublayer}(x_l) \quad (\text{或 Pre-Norm 变体}) ]
作用:缓解梯度消失、提供恒等映射捷径,使深层网络可优化。
1.3 面试问题(Q)与标准答案(A)
Q:Transformer 和 RNN 相比,核心优势是什么?
A: 自注意力在单步内连接任意两位置,并行计算好、长距离依赖路径短(常数层数内);RNN 顺序计算且长序列梯度路径长。代价是 (O(n^2)) 注意力内存与时间(相对序列长度)。
Q:Decoder 里的 Masked Self-Attention 为什么要 mask?
A: 训练时一次看到整句,若不 mask,位置 (i) 会看到「未来」token,造成信息泄漏;mask 保证训练和推理(自回归)一致。
1.4 追问应对
•
追问:为什么大模型多是 Decoder-only?
应对: 生成式预训练目标(下一词预测)与架构一致;工程上堆叠简单、扩展性好;Encoder-only(如 BERT)更偏理解,需另做生成适配。
•
追问:Pre-Norm 和 Post-Norm 训练稳定性差异原因?
应对: Pre-Norm 让子层输入分布更稳定,梯度在残差路径上更平滑;可提一嘴深层 Transformer 实践中 Pre-Norm 更常见。
1.5 代码示例:缩放点积注意力(PyTorch 风格伪代码)
注意力机制详解
2.1 概念解释
注意力本质上是一种软寻址机制:根据 Query 与各个 Key 的相似度得到权重,再对 Value 加权求和。Self-Attention 中 Q、K、V 都来自同一组输入(不同线性投影)。
2.2 原理详解
2.2.1 数学公式
[ \text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) V ]
(若为多头,则对每个头分别计算再拼接。)
2.2.2 为什么要除以 (\sqrt{d_k})
当 (d_k) 较大时,(q \cdot k) 的点积方差约为 (d_k)(假设分量独立零均值单位方差),数值幅度大,softmax 会进入极陡区域,梯度不稳定。除以 (\sqrt{d_k}) 将方差缩放到约 1,使 softmax 更平滑,训练更稳定。
2.2.3 Multi-Head 的作用
•
多头 = 多个并行子空间的注意力,每头可学习不同关系。
•
单头表达能力有限;多头类似 CNN 多通道,提高表示丰富度。
2.2.4 Grouped Query Attention(GQA)
在 MHA 中,每头有独立 K、V。在 MQA 中,所有头共享一套 K、V。
GQA 介于两者之间:多组 Query 共享同一组 K、V(例如 8 个 Q 组对应 2 组 KV),在推理显存与带宽(KV Cache 更小)和质量之间折中。Llama 3、Mistral 等采用 GQA。
2.2.5 Multi-Query Attention(MQA)
所有注意力头共享同一份 K、V,大幅减少 KV Cache 体积与内存带宽需求,推理加速明显;但可能略损质量,故后来流行 GQA 折中。
2.2.6 Flash Attention 原理(核心思想)
标准实现需物化完整 (n \times n) 注意力矩阵,显存占用大。
Flash Attention 利用 GPU SRAM 快、HBM 慢 的层次结构,把 Q、K、V 分块(tiling),在块上融合矩阵乘、softmax 与对 V 的加权,避免或减少完整 (n \times n) 矩阵写回 HBM;并可配合 recomputation 在反向时重算以省显存。
要点:IO-aware / 分块 softmax 数值稳定实现、减少 HBM 读写。后续 FlashAttention-2 等进一步优化并行与工作划分。
2.3 面试问题(Q)与标准答案(A)
Q:简述 Flash Attention 为什么能快和省显存?
A: 通过分块在片上完成注意力计算,减少对慢速全局显存的读写;避免存储完整大注意力矩阵(或显著降低峰值),并融合算子提高吞吐。
Q:GQA 相对 MHA 推理上主要省在哪里?
A: KV Cache 随层缓存的 K、V 体积减小(多组 Query 共享 KV),内存带宽与显存占用下降,decode 阶段受益明显。
2.4 追问应对
•
追问:不用 softmax 可以吗?
应对: 注意力需非负且归一的权重;softmax 是最常见选择,也有线性注意力、核方法等变体用于线性复杂度,但各有近似与实现代价。
2.5 代码示例:多头形状演示
代码块
Plain Text
# batch=2, seq=128, heads=8, d_model=512 -> d_k=64
# Q: (2, 8, 128, 64) # 注意力在最后一维 seq 上 softmax
# 合并多头: (2, 128, 512) @ W_o
Tokenization
3.1 概念解释
Tokenization 把原始文本切成模型可处理的 token 序列;每个 token 对应词表中的 id,再经 embedding 变为向量。切分方式直接影响序列长度、OOV 处理、多语言与符号表现。
3.2 原理详解
3.2.1 BPE(Byte Pair Encoding)
从字符或字节开始,统计相邻符号对频率,合并最高频对为新符号,迭代直到词表达目标规模。
特点:平衡词级与字符级,可表示未登录词(由子词拼出);广泛用于 GPT-2、RoBERTa 等。
3.2.2 WordPiece(BERT)
与 BPE 类似,但合并准则常基于最大化语言模型似然(选择使训练数据概率提升最大的合并),而非单纯最高频。
3.2.3 SentencePiece
把整句当作输入,不依赖预分词空格;在原始字符串上学习子词(可处理无空格语言如日文)。支持 BPE 与 Unigram 等算法。Unigram 从大批子词出发,迭代删除使损失最小的词表,适合多语言。
3.2.4 中文 Tokenization 的特殊处理
•
中文无天然空格,需在字符、子词、词级之间选择;子词级(字 + 常见片段)较常见。
•
字符级:词表大、序列长;子词可压缩长度。
•
中英混合、数字、emoji 常统一用 字节级 BPE(如 UTF-8 字节)避免 OOV,但序列可能变长。
•
实践上多用 SentencePiece + 大词表 或 字节 BPE,并对领域语料再训练词表/适配。
3.2.5 Tokenizer 对模型效果的影响
•
序列长度:同样文本 token 数少则同样上下文窗口能容纳更多内容。
•
稀有词:拆成子词比 UNK 更好。
•
噪声:错误分词会导致语义碎片化,影响生成与理解。
•
与预训练一致性:微调与推理必须用同一套 tokenizer 与规则。
3.3 面试问题(Q)与标准答案(A)
Q:BPE 和 WordPiece 主要区别?
A: 都是子词合并思路;BPE 常用高频合并,WordPiece 更强调似然提升;具体实现因库而异,面试答「合并准则不同」即可。
Q:为什么 LLM 常用子词而不是纯词?
A: 控制词表规模、处理 OOV、开放集词汇;纯词级词表巨大且稀疏。
3.4 追问应对
•
追问:字节级 BPE 优缺点?
应对: 词表小、任意字符可表示;缺点是同样文本 token 变长,算力与上下文窗口压力增大。
大模型推理
4.1 概念解释
推理指模型前向计算生成输出。自回归 LM 逐 token 生成,分为 Prefill(处理提示词)与 Decode(逐个生成新 token)。
4.2 原理详解
4.2.1 Prefill vs Decode
•
Prefill:一次性并行计算 prompt 各 token 的表示,得到第一个生成位置的 logits;计算形态类似「整段并行注意力」。
•
Decode:每步只新增一个 token,但需用历史 KV Cache 避免重复计算过去 token 的 K、V;算力小、内存带宽敏感。
4.2.2 KV Cache 原理与实现
对每一层、每个注意力头,对已生成(及 prompt)位置缓存 Key 和 Value。
新一步只计算当前 token 的 Q,与缓存的 K、V 做注意力,无需再算历史位置的 K、V。
代价:序列越长、层数越多、模型越大,KV Cache 显存线性增长,是长上下文推理的主要瓶颈之一。
4.2.3 采样策略
•
Temperature (T):logits 除以 (T) 再 softmax。(T>1) 分布更平(更随机),(T<1) 更尖(更确定)。
•
Top-k:只保留概率最高的 k 个 token,其余置零再归一化,减少长尾胡编。
•
Top-p(Nucleus):按概率从大到小累加,取最小集合使累积概率 (\ge p),动态截断候选集。
4.2.4 Beam Search vs Greedy
•
Greedy:每步取 argmax,快但易局部最优。
•
Beam Search:维护 top-(b) 条部分假设,适合机器翻译、摘要等可度量任务;对开放域对话常显得重复、不自然,对话场景更常用采样。
4.2.5 推理延迟优化(概览)
量化、算子融合、批处理、KV Cache 压缩/分页、投机解码、模型并行、更好的注意力实现(FlashAttention)等(见第 8 节)。
4.3 面试问题(Q)与标准答案(A)
Q:Prefill 和 Decode 哪个更吃算力?哪个更吃带宽?
A: Prefill 并行度高,计算密集;Decode 每步批量小,常内存带宽受限(读大权重与 KV Cache)。实际与 batch、实现有关。
Q:KV Cache 为什么能加速?
A: 避免对历史 token 重复计算各层 K、V,以空间换时间。
4.4 追问应对
•
追问:KV Cache 显存如何估算?
应对: 与层数、头数、每头维度、batch、序列长度、精度(FP16/BF16/INT8)成正比;可答「每层每 token 存 K、V 两份向量,总显存随长度线性增」。
4.5 代码示例:简单 Greedy + 温度(概念)
代码块
Python
模型微调
5.1 概念解释
微调在预训练模型上用下游数据继续训练,使模型适配任务或领域。全量微调更新全部参数;**参数高效微调(PEFT)**只训练少量附加参数或低秩增量,降低显存与存储。
5.2 原理详解
5.2.1 全量微调(Full Fine-tuning)
更新 (\theta) 的全部分量。效果最好潜力大,但需要大显存、易过拟合小数据,部署时每任务一份完整权重。
5.2.2 LoRA(Low-Rank Adaptation)
对某线性层 (W \in \mathbb{R}^{d \times k}),冻结 (W),训练低秩分解:
[ W' = W + BA,\quad B \in \mathbb{R}^{d \times r},\ A \in \mathbb{R}^{r \times k},\ r \ll \min(d,k) ]
直觉:大矩阵更新往往低秩即可近似任务有效子空间。训练只存 (A,B),推理可合并 (W' = W + BA) 或保持分开。
5.2.3 QLoRA
在 4-bit 量化的基座权重(如 NF4)上叠加 LoRA,用 paged optimizer 等技巧减少显存峰值。使单卡微调大模型成为可能。
5.2.4 Adapter Tuning
在 Transformer 层中插入小瓶颈层(如 down-project → 激活 → up-project),只训练 adapter 参数。
5.2.5 Prefix Tuning
在输入前可学习的前缀向量(虚拟 token),不改变原词表 embedding,通过前缀影响注意力。
5.2.6 P-Tuning v2
将 prompt tokens 扩展到每一层的可学习前缀,而不仅是输入层,提升小模型与难任务表现。
5.2.7 SFT(Supervised Fine-Tuning)流程(典型)
数据:高质量指令–回答对(可含思维链、拒答、工具格式)。
格式:Chat 模板(system/user/assistant)与 tokenizer 对齐。
训练:交叉熵损失,通常只监督 assistant 段 token。
评估:验证集 loss、人工/模型裁判、任务基准。
对齐:常与 DPO/RLHF 等衔接。
5.3 面试问题(Q)与标准答案(A)
Q:LoRA 秩 r 怎么选?
A: 经验值 8–64 常见;越大容量越大但易过拟合、显存略增;需验证集折中。
Q:QLoRA 和 LoRA 主要差在哪?
A: 基座权重 4-bit 量化 + LoRA;大幅降低显存,略有精度损失风险,需配合 NF4 与调参。
5.4 追问应对
•
追问:LoRA 一般接在哪些层?
应对: 常对 Attention 的 q,v(及有时 k,o)和/或 FFN 注入;实践有默认配置(如 r、alpha、target_modules)。
5.5 代码示例:LoRA 形式(数学)
代码块
Plain Text
# 前向:h = W x + (B A) x = (W + B A) x
# 训练参数:B (d×r), A (r×k),远小于 W (d×k) 当 r 小时
对齐技术
6.1 概念解释
对齐指使模型行为符合人类意图与安全规范。RLHF 用人类偏好训练奖励模型再用强化学习;DPO 等直接用偏好数据优化策略,无需显式奖励模型与 RL 循环。
6.2 原理详解
6.2.1 RLHF 完整流程(经典三阶段)
SFT:监督微调,学会基本指令跟随与格式。
奖励模型(RM):对人类标注的「好坏排序」数据,训练 (r(x,y)) 给回答打分。
强化学习:以 RM 为奖励信号,用 PPO 等算法更新策略 (\pi_\theta),并常加 KL 惩罚 约束与参考模型 (\pi_{\text{ref}})(常为 SFT 模型)不要偏离太远。
6.2.2 PPO 在 RLHF 中的应用
PPO(Proximal Policy Optimization) 通过 clipped surrogate objective 限制策略更新幅度,训练稳定。RLHF 中:
•
策略:当前 LM。
•
奖励:RM 分数 + KL 项。
•
价值函数:常需 critic 估计优势函数。
挑战:训练链路长、调参难、奖励黑客(reward hacking)。
6.2.3 DPO(Direct Preference Optimization)
从偏好对 ((y_w, y_l)) 出发,推导出仅用策略与参考模型、无需显式 RM 的分类式损失,直接优化策略满足偏好。简化工程、去掉 RL 采样环,但数据质量要求高。
6.2.4 GRPO(Group Relative Policy Optimization)
DeepSeek 等工作中强调:对同一 prompt 一组输出内做相对奖励归一化,减 critic、适应组内比较,适合特定训练基础设施与算法设计。
6.2.5 KTO(Kahneman-Tversky Optimization)
从二元反馈(好/坏)出发,用前景理论风格损失做对齐,不必成对偏好,数据收集更灵活。
6.2.6 RLHF vs DPO 对比
6.3 面试问题(Q)与标准答案(A)
Q:RLHF 为什么要 KL 惩罚?
A: 防止策略为刷高 RM 分数而产生分布外投机行为(reward hacking),保持语言质量与多样性。
Q:DPO 相对 RLHF 的主要工程优势?
A: 无需单独训练 RM 与 RL 采样循环,静态数据上直接优化,pipeline 更简单。
6.4 追问应对
•
追问:偏好数据噪声大怎么办?
应对: 数据清洗、多裁判一致性、对比学习过滤、鲁棒损失与正则;工业界常强调标注指南与质检。
模型量化
7.1 概念解释
量化把浮点权重/激活用低比特整数近似,减少显存与带宽,加速推理。训练后量化(PTQ)常见;QAT(量化感知训练)精度更好但成本高。
7.2 原理详解
7.2.1 INT8 / INT4
•
INT8:每权重 8 bit,常配合 per-tensor 或 per-channel scale/zero-point。
•
INT4:4 bit,容量减半,精度风险更高,常与 group-wise 缩放配合。
7.2.2 GPTQ
逐列(或块)量化权重,用 Hessian 相关信息最小化量化误差,适合 GPU 上 PTQ,广泛用于开源 LLM 的 4-bit 权重。
7.2.3 AWQ(Activation-aware Weight Quantization)
强调保留对 激活幅度大 的「显著」权重通道,按激活统计决定保护权重,小模型推理上常与硬件内核结合。
7.2.4 GGUF / GGML
文件格式与生态(llama.cpp 等),便于 CPU/多端部署与多种量化类型(Q4_K、Q5_K 等),不是单一算法名,而是推理栈与格式代表。
7.2.5 量化对性能的影响
•
正面:显存降、吞吐升、边缘部署可行。
•
负面:perplexity 上升、复杂推理/代码任务可能掉点;KV Cache 量化可进一步省显存但需小心误差累积。
7.3 面试问题(Q)与标准答案(A)
Q:INT4 比 INT8 主要风险是什么?
A: 表示粒度更粗,误差更大;需 group-wise 缩放、混合精度或与更高比特关键层结合。
Q:GPTQ 大致在优化什么?
A: 给定量化约束,最小化权重重构误差(常利用二阶近似信息),逐块贪心求解。
推理优化
8.1 概念解释
大模型推理瓶颈来自 算力、显存带宽、KV Cache、批调度 等,工程上从模型分片、内核、缓存管理、批处理、投机解码等多方面优化。
8.2 原理详解
8.2.1 模型并行
•
张量并行(TP):单层内矩阵分块到多 GPU(如列切分 (A)、行切分 (B)),需 all-reduce 通信。
•
流水线并行(PP):不同层放在不同 GPU,micro-batch 流水,减少气泡。
大集群还可 数据并行 + TP + PP 组合。
8.2.2 KV Cache 优化:PagedAttention / vLLM
PagedAttention 将 KV Cache 存成非连续块(类似 OS 分页),按请求动态分配,减少 padding 浪费,提高 batch 利用率,是 vLLM 的核心思想之一。
8.2.3 Continuous Batching(动态批处理)
请求长度不一,传统静态 batch 浪费严重;连续批处理在迭代中动态增删请求,提高 GPU 利用率。
8.2.4 Speculative Decoding(投机采样)
用小模型(draft)多步预测,大模型(target)并行验证;接受则一次前进多 token,降低每 token 延迟(理想情况),需 draft 与 target 兼容。
8.2.5 MoE(Mixture of Experts)
每层含多个 FFN 专家,门控只对少数专家计算(如 top-2),总参数大但每 token 激活参数少,提高容量与效率比;挑战是 负载均衡与通信(如 DeepSeek-MoE、Mixtral)。
8.3 面试问题(Q)与标准答案(A)
Q:vLLM 的 PagedAttention 解决什么问题?
A: KV Cache 显存碎片化与浪费(变长序列),通过分页块管理与复用提高吞吐。
Q:MoE 为什么「参数多算力少」?
A: 每 token 只激活部分专家,计算量随激活专家数增长,而总参数量包含所有专家。
前沿模型与选型
9.1 概念解释
闭源(API)与开源(可自托管)在能力、成本、合规、迭代速度上权衡;各系列有长上下文、多模态、代码、价格等差异。
9.2 原理详解
9.2.1 DeepSeek 系列特点(概括)
•
强调工程与训练效率(如公开技术报告中的架构与训练细节)、长思维链与推理场景、开源权重降低使用门槛;具体能力随版本迭代需以官方 benchmark 为准。
•
部分版本采用 MoE 等提高参数效率。
9.2.2 GPT-4o / Claude / Gemini 对比(面试话术)
避免编造具体 benchmark 数字,强调任务相关评测与 A/B。
9.2.3 开源 vs 闭源选型
•
开源:数据自主、可微调、离线可部署;需自备算力与运维。
•
闭源:上手快、持续升级;依赖供应商、成本与合规需评估。
•
混合:敏感数据本地开源模型,通用能力调用 API。
9.3 面试问题(Q)与标准答案(A)
Q:选开源 70B 还是闭源 API?
A: 看隐私、延迟、成本、定制需求与团队运维能力;高合规本地优先,快速验证可用 API。
综合面试题库(20+ 题)
下列题目均附标准答案要点,可与前文章节交叉复习。
Q1:写出缩放点积注意力的公式,并解释 (\sqrt{d_k})。
A: (\text{softmax}(QK^\top/\sqrt{d_k})V)。除 (\sqrt{d_k}) 使点积方差稳定在约 1,避免 softmax 饱和与梯度问题。
Q2:多头注意力为什么比单头好?
A: 多子空间并行关注不同依赖关系,表达力更强,类似多通道特征。
Q3:Encoder 和 Decoder 的自注意力有何不同?
A: Encoder 一般为双向;Decoder 用 causal mask 保证自回归;Seq2Seq 中 Decoder 还有 Cross-Attention 读 Encoder。
Q4:RoPE 与正弦绝对位置编码各有什么特点?
A: RoPE 通过旋转编码相对位置,常用于 Decoder LLM;正弦为固定绝对位置,可外推性讨论较多但现代架构更常选 RoPE/ALiBi。
Q5:Pre-Norm 和 Post-Norm 区别?
A: Pre-Norm:LN 在子层前;Post-Norm:LN 在子层后。深层网络 Pre-Norm 通常更稳定。
Q6:解释 MQA 与 GQA 的动机。
A: 减少 KV Cache 与带宽;MQA 共享全部 KV,GQA 分组共享以平衡质量。
Q7:Flash Attention 核心优化思想?
A: 分块、减少 HBM 访问、融合算子;降低注意力显存峰值并提速。
Q8:BPE 如何构建词表?
A: 从基础符号迭代合并最高频相邻对(或类似准则),直到目标规模。
Q9:SentencePiece 适合中文的原因?
A: 不依赖空格分词,可学习子词;适合无空格语言与多语言统一。
Q10:Tokenizer 不一致会导致什么问题?
A: id 错位、性能异常;微调与推理必须与基座一致。
Q11:Prefill 和 Decode 阶段特点?
A: Prefill 并行处理 prompt;Decode 逐步生成,常受带宽与 KV Cache 影响。
Q12:KV Cache 是什么?为什么能加速?
A: 缓存历史 K、V;避免重复计算过去 token 的注意力键值。
Q13:Temperature、Top-k、Top-p 各影响什么?
A: 随机性/确定性;截断长尾候选;动态 nucleus 截断。
Q14:对话生成为什么少用 Beam Search?
A: 易重复、不自然;开放域更常用采样类方法。
Q15:LoRA 的低秩假设直觉?
A: 任务适配更新近似落在低秩子空间,用 (BA) 参数高效逼近。
Q16:QLoRA 为什么省显存?
A: 基座 4-bit 存权重 + LoRA 训练少量参数;降低显存占用。
Q17:SFT 损失通常怎么算?
A: 常对 assistant token 做交叉熵,忽略 user 与 mask。
Q18:RLHF 三阶段是什么?
A: SFT → 奖励模型 → PPO(带 KL)强化学习。
Q19:DPO 相对 RLHF 最大简化是什么?
A: 不显式训练奖励模型与 RL 循环,用偏好直接优化策略。
Q20:PPO 中 KL 惩罚目的?
A: 限制偏离参考策略,减轻 reward hacking 与模式崩塌。
Q21:INT4 量化主要风险?
A: 精度损失;需分组缩放、混合精度或算法(GPTQ/AWQ)缓解。
Q22:GPTQ 大致做什么?
A: 训练后量化权重,按层/块最小化误差,常用 Hessian 近似。
Q23:张量并行与流水线并行区别?
A: TP 切分单层张量;PP 切分不同层到不同设备。
Q24:PagedAttention 解决什么?
A: KV Cache 变长导致的浪费与碎片化,提高批处理效率。
Q25:投机解码如何加速?
A: 小模型提议多 token,大模型并行验证,减少串行步数。
Q26:MoE 训练难点?
A: 负载均衡、通信、路由稳定性;避免专家坍塌。
Q27:开源模型相对闭源 API 的核心优势场景?
A: 数据不出域、可深度定制、长期成本可控(有算力前提)。
Q28:GRPO / KTO 你了解到什么程度?
A: 诚实答:GRPO 强调组内相对优化、可与特定 RL 基础设施配合;KTO 用二元反馈与前景式损失;细节以论文与最新报告为准,面试可说明「用于改进 RLHF 复杂管线或数据形态」。
附录:速查公式与术语