Skip to content

07 大模型基础(面试八股文) ​

面向零基础读者的系统梳理:每个知识点尽量包含「概念解释、原理详解、面试问答、追问应对、代码示例(如适用)」。本模块是 LLM / Agent 面试的高频核心,建议结合论文与开源实现(如 Hugging Face Transformers、vLLM)对照理解。

目录 ​

  1. Transformer 架构
  2. 注意力机制详解
  3. Tokenization
  4. 大模型推理
  5. 模型微调
  6. 对齐技术
  7. 模型量化
  8. 推理优化
  9. 前沿模型与选型
  10. 综合面试题库(20+ 题)

1. 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 ∈ R^{n×d_model},可学习矩阵 W_Q, W_K, W_V,则 Q = XW_Q, K = XW_K, V = XW_V。

缩放点积注意力输出:

Attention(Q, K, V) = softmax(QK^T / √d_k) V
Attention(Q, K, V) = softmax(QK^T / √d_k) 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 顺序若不加位置信息则结果不变),必须注入位置信息。

方法思路简述
正弦位置编码(Sinusoidal PE)固定函数,不同维度用不同频率的正弦/余弦;可外推到比训练更长的位置(但现代 LLM 仍常用可学习或 RoPE)。
RoPE(Rotary Position Embedding)在 Q、K 上施加与位置相关的旋转,相对位置以旋转角度差体现;广泛用于 LLaMA、ChatGLM 等,外推与相对位置性质较好。
ALiBi(Attention with Linear Biases)不在 embedding 加位置向量,而在注意力 logits 上按距离加线性负偏置,远处更负,实现简单且对长度外推有一定帮助。

1.2.5 Feed-Forward Network(FFN)

每层注意力子层后接一个位置独立的 FFN,通常形式为:

FFN(x) = Activation(xW_1 + b_1) W_2 + b_2
FFN(x) = Activation(xW_1 + b_1) W_2 + b_2

常见扩展比为 4(隐层维度 4 × d_model),激活函数常用 GELU/SwiGLU(SwiGLU 会用三个矩阵,等价于门控 FFN)。

1.2.6 Layer Normalization:Pre-Norm vs Post-Norm

  • Post-Norm(原始 Transformer):x ← x + Sublayer(x),再在子层输出上做 Norm。
  • Pre-Norm(现代 LLM 常见):先 Norm 再进子层:x ← x + Sublayer(LN(x))。

Pre-Norm 通常更稳定、更易训练深层网络;Post-Norm 在理论上与残差更「经典」,但深层时更难训。

1.2.7 Residual Connection(残差连接)

x_{l+1} = x_l + Sublayer(x_l)  (或 Pre-Norm 变体)
x_{l+1} = x_l + Sublayer(x_l)  (或 Pre-Norm 变体)

作用:缓解梯度消失、提供恒等映射捷径,使深层网络可优化。

1.3 面试问题(Q)与标准答案(A) ​

  • Q1:Transformer 和 RNN 相比,核心优势是什么?
    • A: 自注意力在单步内连接任意两位置,并行计算好、长距离依赖路径短(常数层数内);RNN 顺序计算且长序列梯度路径长。代价是 O(n²) 注意力内存与时间(相对序列长度)。
  • Q2: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 风格伪代码) ​

python
import torch
import torch.nn.functional as F
import math

def scaled_dot_product_attention(Q, K, V, attn_mask=None):
    # Q,K,V: (batch, heads, seq_len, d_k)
    scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(Q.size(-1))
    if attn_mask is not None:
        scores = scores.masked_fill(attn_mask == 0, float("-inf"))
    attn = F.softmax(scores, dim=-1)
    return torch.matmul(attn, V), attn
import torch
import torch.nn.functional as F
import math

def scaled_dot_product_attention(Q, K, V, attn_mask=None):
    # Q,K,V: (batch, heads, seq_len, d_k)
    scores = torch.matmul(Q, K.transpose(-2, -1)) / math.sqrt(Q.size(-1))
    if attn_mask is not None:
        scores = scores.masked_fill(attn_mask == 0, float("-inf"))
    attn = F.softmax(scores, dim=-1)
    return torch.matmul(attn, V), attn

2. 注意力机制详解 ​

2.1 概念解释 ​

注意力本质上是一种软寻址机制:根据 Query 与各个 Key 的相似度得到权重,再对 Value 加权求和。Self-Attention 中 Q、K、V 都来自同一组输入(不同线性投影)。

2.2 原理详解 ​

2.2.1 数学公式

Attention(Q, K, V) = softmax(QK^T / √d_k) V
Attention(Q, K, V) = softmax(QK^T / √d_k) V

(若为多头,则对每个头分别计算再拼接。)

2.2.2 为什么要除以 √d_k

当 d_k 较大时,q · k 的点积方差约为 d_k(假设分量独立零均值单位方差),数值幅度大,softmax 会进入极陡区域,梯度不稳定。除以 √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 × n 注意力矩阵,显存占用大。

Flash Attention 利用 GPU SRAM 快、HBM 慢的层次结构,把 Q、K、V 分块(tiling),在块上融合矩阵乘、softmax 与对 V 的加权,避免或减少完整 n × n 矩阵写回 HBM;并可配合 recomputation 在反向时重算以省显存。

要点:IO-aware / 分块 softmax 数值稳定实现、减少 HBM 读写。后续 FlashAttention-2 等进一步优化并行与工作划分。

2.3 面试问题(Q)与标准答案(A) ​

  • Q3:简述 Flash Attention 为什么能快和省显存?
    • A: 通过分块在片上完成注意力计算,减少对慢速全局显存的读写;避免存储完整大注意力矩阵(或显著降低峰值),并融合算子提高吞吐。
  • Q4:GQA 相对 MHA 推理上主要省在哪里?
    • A: KV Cache 随层缓存的 K、V 体积减小(多组 Query 共享 KV),内存带宽与显存占用下降,decode 阶段受益明显。

2.4 追问应对 ​

追问应对要点
不用 softmax 可以吗?注意力需非负且归一的权重;softmax 是最常见选择,也有线性注意力、核方法等变体用于线性复杂度,但各有近似与实现代价。

2.5 代码示例:多头形状演示 ​

python
# batch=2, seq=128, heads=8, d_model=512 => d_k=64
# Q: (2, 8, 128, 64) # 注意力在最后一维 seq 上 softmax
# 合并多头: (2, 128, 512) @ W_o
# batch=2, seq=128, heads=8, d_model=512 => d_k=64
# Q: (2, 8, 128, 64) # 注意力在最后一维 seq 上 softmax
# 合并多头: (2, 128, 512) @ W_o

3. 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) ​

  • Q5:BPE 和 WordPiece 主要区别?
    • A: 都是子词合并思路;BPE 常用高频合并,WordPiece 更强调似然提升;具体实现因库而异,面试答「合并准则不同」即可。
  • Q6:为什么 LLM 常用子词而不是纯词?
    • A: 控制词表规模、处理 OOV、开放集词汇;纯词级词表巨大且稀疏。

3.4 追问应对 ​

追问应对要点
字节级 BPE 优缺点?词表小、任意字符可表示;缺点是同样文本 token 变长,算力与上下文窗口压力增大。

4. 大模型推理 ​

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):按概率从大到小累加,取最小集合使累积概率 ≥ 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) ​

  • Q7:Prefill 和 Decode 哪个更吃算力?哪个更吃带宽?
    • A: Prefill 并行度高,计算密集;Decode 每步批量小,常内存带宽受限(读大权重与 KV Cache)。实际与 batch、实现有关。
  • Q8:KV Cache 为什么能加速?
    • A: 避免对历史 token 重复计算各层 K、V,以空间换时间。

4.4 追问应对 ​

追问应对要点
KV Cache 显存如何估算?与层数、头数、每头维度、batch、序列长度、精度(FP16/BF16/INT8)成正比;可答「每层每 token 存 K、V 两份向量,总显存随长度线性增」。

4.5 代码示例:简单 Greedy + 温度(概念) ​

python
import torch
import torch.nn.functional as F

def sample_next_token(logits, temperature=1.0, top_k=50):
    logits = logits / temperature
    if top_k > 0:
        v, _ = torch.topk(logits, min(top_k, logits.size(-1)))
        logits[logits < v[:, [-1]]] = float("-inf")
    probs = F.softmax(logits, dim=-1)
    return torch.multinomial(probs, num_samples=1)
import torch
import torch.nn.functional as F

def sample_next_token(logits, temperature=1.0, top_k=50):
    logits = logits / temperature
    if top_k > 0:
        v, _ = torch.topk(logits, min(top_k, logits.size(-1)))
        logits[logits < v[:, [-1]]] = float("-inf")
    probs = F.softmax(logits, dim=-1)
    return torch.multinomial(probs, num_samples=1)

5. 模型微调 ​

5.1 概念解释 ​

微调在预训练模型上用下游数据继续训练,使模型适配任务或领域。全量微调更新全部参数;**参数高效微调(PEFT)**只训练少量附加参数或低秩增量,降低显存与存储。

5.2 原理详解 ​

5.2.1 全量微调(Full Fine-tuning)

更新 θ 的全部分量。效果最好潜力大,但需要大显存、易过拟合小数据,部署时每任务一份完整权重。

5.2.2 LoRA(Low-Rank Adaptation)

对某线性层 W ∈ R^{d×k},冻结 W,训练低秩分解:

W' = W + BA,  B ∈ R^{d×r},  A ∈ R^{r×k},  r ≪ min(d, k)
W' = W + BA,  B ∈ R^{d×r},  A ∈ R^{r×k},  r ≪ 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)流程(典型)

  1. 数据:高质量指令–回答对(可含思维链、拒答、工具格式)。
  2. 格式:Chat 模板(system/user/assistant)与 tokenizer 对齐。
  3. 训练:交叉熵损失,通常只监督 assistant 段 token。
  4. 评估:验证集 loss、人工/模型裁判、任务基准。
  5. 对齐:常与 DPO/RLHF 等衔接。

5.3 面试问题(Q)与标准答案(A) ​

  • Q9:LoRA 秩 r 怎么选?
    • A: 经验值 8–64 常见;越大容量越大但易过拟合、显存略增;需验证集折中。
  • Q10:QLoRA 和 LoRA 主要差在哪?
    • A: 基座权重 4-bit 量化 + LoRA;大幅降低显存,略有精度损失风险,需配合 NF4 与调参。

5.4 追问应对 ​

追问应对要点
LoRA 一般接在哪些层?常对 Attention 的 q,v(及有时 k,o)和/或 FFN 注入;实践有默认配置(如 r、alpha、target_modules)。

5.5 代码示例:LoRA 形式(数学) ​

python
# 前向:h = W x + (B A) x = (W + B A) x
# 训练参数:B (d×r), A (r×k),远小于 W (d×k) 当 r 小时
# 前向:h = W x + (B A) x = (W + B A) x
# 训练参数:B (d×r), A (r×k),远小于 W (d×k) 当 r 小时

6. 对齐技术 ​

6.1 概念解释 ​

对齐指使模型行为符合人类意图与安全规范。RLHF 用人类偏好训练奖励模型再用强化学习;DPO 等直接用偏好数据优化策略,无需显式奖励模型与 RL 循环。

6.2 原理详解 ​

6.2.1 RLHF 完整流程(经典三阶段)

  1. SFT:监督微调,学会基本指令跟随与格式。
  2. 奖励模型(RM):对人类标注的「好坏排序」数据,训练 r(x, y) 给回答打分。
  3. 强化学习:以 RM 为奖励信号,用 PPO 等算法更新策略 π_θ,并常加 KL 惩罚约束与参考模型 π_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 对比

维度RLHFDPO
奖励模型需要不需要显式 RM
训练复杂度高(RL + 参考模型)相对较低
稳定性依赖 PPO 调参通常更简洁
数据排序/打分偏好对

6.3 面试问题(Q)与标准答案(A) ​

  • Q11:RLHF 为什么要 KL 惩罚?
    • A: 防止策略为刷高 RM 分数而产生分布外投机行为(reward hacking),保持语言质量与多样性。
  • Q12:DPO 相对 RLHF 的主要工程优势?
    • A: 无需单独训练 RM 与 RL 采样循环,静态数据上直接优化,pipeline 更简单。

6.4 追问应对 ​

追问应对要点
偏好数据噪声大怎么办?数据清洗、多裁判一致性、对比学习过滤、鲁棒损失与正则;工业界常强调标注指南与质检。

7. 模型量化 ​

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) ​

  • Q13:INT4 比 INT8 主要风险是什么?
    • A: 表示粒度更粗,误差更大;需 group-wise 缩放、混合精度或与更高比特关键层结合。
  • Q14:GPTQ 大致在优化什么?
    • A: 给定量化约束,最小化权重重构误差(常利用二阶近似信息),逐块贪心求解。

8. 推理优化 ​

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) ​

  • Q15:vLLM 的 PagedAttention 解决什么问题?
    • A: KV Cache 显存碎片化与浪费(变长序列),通过分页块管理与复用提高吞吐。
  • Q16:MoE 为什么「参数多算力少」?
    • A: 每 token 只激活部分专家,计算量随激活专家数增长,而总参数量包含所有专家。

9. 前沿模型与选型 ​

9.1 概念解释 ​

闭源(API)与开源(可自托管)在能力、成本、合规、迭代速度上权衡;各系列有长上下文、多模态、代码、价格等差异。

9.2 原理详解 ​

9.2.1 DeepSeek 系列特点(概括)

强调工程与训练效率(如公开技术报告中的架构与训练细节)、长思维链与推理场景、开源权重降低使用门槛;具体能力随版本迭代需以官方 benchmark 为准。部分版本采用 MoE 等提高参数效率。

9.2.2 GPT-4o / Claude / Gemini 对比(面试话术)

维度可答要点
生态OpenAI / Anthropic / Google 各自 API、工具链、多模态进度不同。
多模态GPT-4o 强调语音图像端到端;Gemini 原生多模态与谷歌生态;Claude 长文与代码体验常被提及。
定位面试答「需看具体版本与评测任务」;商业上关注价格、速率限制、合规区域。

避免编造具体 benchmark 数字,强调任务相关评测与 A/B。

9.2.3 开源 vs 闭源选型

  • 开源:数据自主、可微调、离线可部署;需自备算力与运维。
  • 闭源:上手快、持续升级;依赖供应商、成本与合规需评估。
  • 混合:敏感数据本地开源模型,通用能力调用 API。

9.3 面试问题(Q)与标准答案(A) ​

  • Q17:选开源 70B 还是闭源 API?
    • A: 看隐私、延迟、成本、定制需求与团队运维能力;高合规本地优先,快速验证可用 API。

10. 综合面试题库(20+ 题) ​

下列题目均附标准答案要点,可与前文章节交叉复习。

  • Q18:写出缩放点积注意力的公式,并解释 √d_k。
    • A: softmax(QK^T/√d_k)V。除 √d_k 使点积方差稳定在约 1,避免 softmax 饱和与梯度问题。
  • Q19:多头注意力为什么比单头好?
    • A: 多子空间并行关注不同依赖关系,表达力更强,类似多通道特征。
  • Q20:Encoder 和 Decoder 的自注意力有何不同?
    • A: Encoder 一般为双向;Decoder 用 causal mask 保证自回归;Seq2Seq 中 Decoder 还有 Cross-Attention 读 Encoder。
  • Q21:RoPE 与正弦绝对位置编码各有什么特点?
    • A: RoPE 通过旋转编码相对位置,常用于 Decoder LLM;正弦为固定绝对位置,可外推性讨论较多但现代架构更常选 RoPE/ALiBi。
  • Q22:Pre-Norm 和 Post-Norm 区别?
    • A: Pre-Norm:LN 在子层前;Post-Norm:LN 在子层后。深层网络 Pre-Norm 通常更稳定。
  • Q23:解释 MQA 与 GQA 的动机。
    • A: 减少 KV Cache 与带宽;MQA 共享全部 KV,GQA 分组共享以平衡质量。
  • Q24:Flash Attention 核心优化思想?
    • A: 分块、减少 HBM 访问、融合算子;降低注意力显存峰值并提速。
  • Q25:BPE 如何构建词表?
    • A: 从基础符号迭代合并最高频相邻对(或类似准则),直到目标规模。
  • Q26:SentencePiece 适合中文的原因?
    • A: 不依赖空格分词,可学习子词;适合无空格语言与多语言统一。
  • Q27:Tokenizer 不一致会导致什么问题?
    • A: id 错位、性能异常;微调与推理必须与基座一致。
  • Q28:Prefill 和 Decode 阶段特点?
    • A: Prefill 并行处理 prompt;Decode 逐步生成,常受带宽与 KV Cache 影响。
  • Q29:KV Cache 是什么?为什么能加速?
    • A: 缓存历史 K、V;避免重复计算过去 token 的注意力键值。
  • Q30:Temperature、Top-k、Top-p 各影响什么?
    • A: 随机性/确定性;截断长尾候选;动态 nucleus 截断。
  • Q31:对话生成为什么少用 Beam Search?
    • A: 易重复、不自然;开放域更常用采样类方法。
  • Q32:LoRA 的低秩假设直觉?
    • A: 任务适配更新近似落在低秩子空间,用 BA 参数高效逼近。
  • Q33:QLoRA 为什么省显存?
    • A: 基座 4-bit 存权重 + LoRA 训练少量参数;降低显存占用。
  • Q34:SFT 损失通常怎么算?
    • A: 常对 assistant token 做交叉熵,忽略 user 与 mask。
  • Q35:RLHF 三阶段是什么?
    • A: SFT → 奖励模型 → PPO(带 KL)强化学习。
  • Q36:DPO 相对 RLHF 最大简化是什么?
    • A: 不显式训练奖励模型与 RL 循环,用偏好直接优化策略。
  • Q37:PPO 中 KL 惩罚目的?
    • A: 限制偏离参考策略,减轻 reward hacking 与模式崩塌。
  • Q38:INT4 量化主要风险?
    • A: 精度损失;需分组缩放、混合精度或算法(GPTQ/AWQ)缓解。
  • Q39:GPTQ 大致做什么?
    • A: 训练后量化权重,按层/块最小化误差,常用 Hessian 近似。
  • Q40:张量并行与流水线并行区别?
    • A: TP 切分单层张量;PP 切分不同层到不同设备。
  • Q41:PagedAttention 解决什么?
    • A: KV Cache 变长导致的浪费与碎片化,提高批处理效率。
  • Q42:投机解码如何加速?
    • A: 小模型提议多 token,大模型并行验证,减少串行步数。
  • Q43:MoE 训练难点?
    • A: 负载均衡、通信、路由稳定性;避免专家坍塌。
  • Q44:开源模型相对闭源 API 的核心优势场景?
    • A: 数据不出域、可深度定制、长期成本可控(有算力前提)。
  • Q45:GRPO / KTO 你了解到什么程度?
    • A: 诚实答:GRPO 强调组内相对优化、可与特定 RL 基础设施配合;KTO 用二元反馈与前景式损失;细节以论文与最新报告为准,面试可说明「用于改进 RLHF 复杂管线或数据形态」。

附录:速查公式与术语 ​

符号/术语含义
d_model模型隐藏维度
d_k每头 Key/Query 维度
KV Cache缓存每步 K、V 以加速自回归
PEFT参数高效微调总称(LoRA、Adapter 等)
PTQ训练后量化
TP / PP张量并行 / 流水线并行