首页 › 面试专攻 › AI Agent 面试八股文 -- 总目录 › 07 · 大模型基础(面试八股文)

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

​

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

​

​

​

目录​

Transformer 架构​

注意力机制详解​

Tokenization​

大模型推理​

模型微调​

对齐技术​

模型量化​

推理优化​

前沿模型与选型​

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

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 复杂管线或数据形态」。​

​

​

附录:速查公式与术语​

​

​

​