# 大模型常见面试题

这是一份适合手机文字转语音，也就是 TTS，连续收听的中文复习材料。每道题先给结论，再解释机制、权衡和常见追问。公式尽量改成可听懂的自然语言。

> 筛选说明：原 MiniMind 一百问中，只保留稳定、高频、能检验基础理解的内容。重复问题被合并，偏冷门技巧、单一框架细节和开放式预测题被删除。每个主题保留五道核心源题，再补充五道当前高频题，共七十道。

## 播客导读

整套内容沿着一条完整主线展开：文本先经过位置编码和分词，进入 Transformer；模型通过预训练获得基础能力，再通过监督微调和偏好优化学习如何回答；训练完成后，还要解决推理效率、知识检索、工具调用和可靠评测。理解这条主线，比孤立背诵七十个答案更重要。

内容分为七个相对独立的主题，适合制作成七期节目。每期都可以先解释“这个主题解决什么问题”，再讨论核心机制，最后比较工程权衡。英文缩写在第一次出现时会给出中文含义；后续再次出现时使用常见缩写。答案中的“补充高频题”代表原始题单之外、但现代岗位经常追问的内容。

收听时，可以在每个问题后暂停，先用自己的话回答，再继续听标准答案。复述时至少覆盖三点：它是什么，它为什么有效，它的代价或验证方法是什么。

## 一、Transformer 基础架构

#### 1. 自注意力怎样计算？物理含义是什么？

**回答：** 输入分别乘三个投影矩阵，得到查询 Q、键 K、值 V。Q 与 K 的转置相乘，得到每个位置对其他位置的相关性；分数除以根号下键维度，再做 Softmax，最后用权重对 V 加权求和。直观上，Q 表示“我在找什么”，K 表示“我能提供什么线索”，V 表示“真正传递的内容”。它让每个 token 根据上下文动态汇聚信息。

#### 2. 为什么需要多头注意力和缩放因子？

**回答：** 多头把隐藏维度拆成多个子空间，让不同头分别学习语法、指代、局部模式或长距离关系。头数太多会让每个头过窄，并非越多越好。点积随键维度增大而方差变大，所以要除以根号下 d k。否则 Softmax 容易饱和成接近零和一，梯度变小，训练不稳定。

#### 3. Pre-Norm、Post-Norm、残差连接分别解决什么问题？

**回答：** Post-Norm 先做子层和残差相加，再归一化；Pre-Norm 先归一化，再做子层并加回残差。Pre-Norm 保留更干净的恒等通路，深层训练通常更稳定。残差连接让每层只学习增量，同时让信息和梯度跨层传播。现代大模型多用 Pre-Norm，并常把 LayerNorm 换成计算更简单的 RMSNorm。

#### 4. BERT、GPT、T5 有什么区别？为什么通用大模型多用 Decoder-only？

**回答：** BERT 是 Encoder-only，双向读取上下文，适合理解和表征。GPT 是 Decoder-only，用因果掩码逐 token 预测，天然适合生成。T5 是 Encoder-Decoder，编码器读完整输入，解码器通过交叉注意力生成输出。Decoder-only 只有一种堆栈和训练目标，数据形式统一、扩展简单，还能把理解任务改写为生成任务，所以成为通用大模型的主流。

#### 5. KV Cache、GQA 和 MQA 如何改善推理？

**回答：** 生成新 token 时，历史 token 的 K 和 V 不会变化。KV Cache 保存每层历史 K、V，避免重复计算整个前缀，但显存随层数、长度、批量和 KV 头数增长。MHA 每个查询头有独立 K、V；MQA 让所有查询头共享一组 K、V，缓存最小；GQA 让一组查询头共享 K、V，是质量与速度之间的常见折中。

#### 6. 补充高频题：Prefill 和 Decode 有什么不同？

**回答：** Prefill 一次处理完整提示，可以并行做大矩阵运算，通常计算密集，显著影响首 token 延迟。Decode 每步只新增一个 token，却要读取全部历史 KV Cache，串行步数多，常受显存带宽和调度限制。Prefill 优化更关注并行计算与 FlashAttention；Decode 更关注缓存管理、批处理、量化和减少每步访存。

#### 7. 补充高频题：怎样估算稠密 Transformer 参数量？

**回答：** 忽略偏置和归一化参数，一层标准注意力的 Q、K、V、O 四个投影约为四倍 D 平方；前馈网络约为八倍 D 平方，所以每层约十二倍 D 平方。L 层约为十二乘 L 乘 D 平方。再加词嵌入和输出头，权重共享时约为词表大小 V 乘 D。回答时要先说明是否使用 GQA、SwiGLU、MoE 和权重共享。

#### 8. 补充高频题：FlashAttention 改变了注意力数学吗？

**回答：** 没有。FlashAttention 计算的仍是精确注意力，只是把 Q、K、V 分块搬进更快的片上存储，使用在线 Softmax，避免把完整 N 乘 N 分数矩阵反复写入显存。它减少的是高带宽显存读写和中间激活，不是把二次计算复杂度变成线性。长序列时通常更快，也显著节省训练显存。

#### 9. 补充高频题：MoE 怎样工作？为什么要做负载均衡？

**回答：** MoE 用多个专家前馈网络替代一个普通前馈层，路由器为每个 token 选择 Top-k 专家。这样总参数量可以很大，但每个 token 只激活少数专家。若路由器把大多数 token 发给少数专家，会出现拥塞、丢 token 和其他专家训练不足。负载均衡损失与容量限制用于改善分配，系统瓶颈常是跨设备 All-to-All 通信。

#### 10. 补充高频题：Attention Mask 和 Loss Mask 有什么区别？

**回答：** Attention Mask 决定一个 token 能看到哪些输入。因果掩码屏蔽未来，Padding Mask 屏蔽补齐位置。Loss Mask 决定哪些位置参与训练目标，例如 assistant-only SFT 保留用户输入供注意力读取，却把用户位置标签设为负一百。两者混淆会导致信息泄漏、错误监督或真实 EOS 被误屏蔽。

## 二、位置编码与 Tokenizer

#### 1. 绝对位置编码、RoPE 和 ALiBi 有什么区别？

**回答：** 正弦或可学习绝对位置编码把位置向量加入 token 表示。RoPE 根据位置旋转 Q 和 K，使点积自然依赖相对距离。ALiBi 直接给远距离注意力分数加入线性负偏置。RoPE 局部表达强，是现代模型主流；ALiBi 外推简单。任何方法超出训练长度都不能假设无限可靠，必须在真实长文任务上验证。

#### 2. RoPE 怎样编码相对位置？为什么长文本需要缩放？

**回答：** RoPE 把每两个维度看成二维平面，根据 token 位置和频率旋转 Q、K。两个旋转向量的点积只依赖位置差，因此注意力获得相对位置信息。远超训练长度时，模型会看到未训练过的相位分布，所以常用位置插值、NTK-aware scaling 或 YaRN 调整频率。扩窗后要同时检查短文本能力和长文本检索。

#### 3. 常见 Tokenizer 算法怎样比较？

**回答：** 词级分词语义完整，但词表巨大且存在未登录词；字符级词表小，但序列很长。BPE 反复合并高频相邻单元；WordPiece 更关注合并后的似然增益；Unigram 从较大候选词表出发，按概率模型剪枝。SentencePiece 是可直接处理原始文本的实现框架，可训练 BPE 或 Unigram。比较重点是词表、序列长度、可逆性和多语言效率。

#### 4. BPE 的训练、编码和解码分别怎样做？

**回答：** 训练从字符或字节开始，统计相邻对，合并最高频的一对并分配新 ID，重复到目标词表大小。编码新文本不能重新按新文本频率合并，而要按训练时学到的规则优先级执行。解码把每个 token ID 还原为对应字节，连接后再按 UTF-8 解码。真正的训练产物是词表和有序合并表。

#### 5. 为什么现代 LLM 常用 Byte-level BPE？词表大小有什么影响？

**回答：** 任意有效文本都能表示成零到二百五十五的 UTF-8 字节，因此基础字节词表能覆盖任何语言、Emoji 和罕见符号，基本消除 OOV。BPE 再合并常见字节序列。大词表缩短序列，却增大嵌入和输出头，并让低频 token 难以充分训练；小词表参数少，却增加序列长度。必须按语言、代码和数字分别评估。

#### 6. 补充高频题：特殊 token 为什么必须原子化？

**回答：** EOS、消息边界、工具调用等特殊 token 是协议控制符，必须映射为一个保留 ID。如果按普通文本拆开，模型无法稳定识别边界。Tokenizer 应先保护被系统允许的特殊字符串，再处理普通文本。安全上必须区分系统插入的控制 token 与用户输入的同形字符串，避免用户伪造结束标记或角色边界。

#### 7. 补充高频题：Normalization 和 Pre-tokenization 分别做什么？

**回答：** Normalization 在分词前统一 Unicode、大小写或空白，但过度处理可能破坏代码和可逆性。Pre-tokenization 用规则先切分字母、数字、标点和空白块，再在块内做子词合并，防止不合理的跨类别合并。训练、推理和评测必须使用完全一致的规范化与预切分规则。

#### 8. 补充高频题：什么是 token fertility？

**回答：** Token fertility 表示一个词、字符或固定长度文本需要多少 token。数值越高，训练和推理越贵，可用上下文越少。英文高效的词表可能让中文、阿拉伯语或代码产生更多 token。评估 tokenizer 时，应按语言与领域报告 token 比率，而不是只看总词表大小。

#### 9. 补充高频题：Chat Template 与 Tokenizer 不一致会怎样？

**回答：** 模型实际看到的是模板序列化后的 token 序列，而不是消息对象。模板若漏掉角色边界、重复 BOS，或使用错误的特殊 token ID，模型会续写用户文本、无法停止或误解工具结果。SFT、推理和评测应共享同一模板，并测试多轮、工具调用、空回答和截断边界。

#### 10. 补充高频题：Tokenizer 为什么会影响数学、代码和安全？

**回答：** 数字若被不一致地切成不同片段，模型更难学习统一位值。代码中的空格和换行若 token 效率低，会浪费上下文并增加缩进错误。特殊 token 若未隔离，可能造成协议注入。Tokenizer 还决定不同语言的成本，所以它是模型能力、效率和攻击面的组成部分，不只是预处理。

## 三、预训练与训练系统

#### 1. Scaling Laws 的核心结论是什么？

**回答：** Scaling Laws 描述参数量、训练 token 数和计算量与损失之间的幂律关系。早期结果更强调增大模型，Chinchilla 发现许多模型训练 token 不足，固定计算下应更均衡地增加模型和数据。不要死背单一比例，因为数据质量、重复训练、架构和推理成本都会改变最优点。核心是给定预算时联合优化参数、数据和训练步数。

#### 2. 预训练数据为什么要去重和质量过滤？

**回答：** 重复内容浪费计算、放大热门来源、增加记忆和评测泄漏。精确去重可用哈希，近似去重常用 n-gram、MinHash 与局部敏感哈希。质量过滤删除乱码、模板页和低信息文本，但过度过滤会损失语言与领域多样性。应结合规则、分类器、人工抽检和小规模消融，保留簇内质量最高版本。

#### 3. Loss Spike 的原因和处理顺序是什么？

**回答：** 损失尖峰可能来自异常批次、过高学习率、梯度爆炸、数值溢出、通信错误或数据管道损坏。先保存批次与状态，检查梯度范数、激活范围、学习率和各 rank 一致性，再定位样本。缓解方法包括梯度裁剪、降低学习率、BF16、跳过已确认坏批次和从稳定检查点恢复。不要只把尖峰平均掉而不找根因。

#### 4. FP16、BF16 和混合精度有什么区别？

**回答：** FP16 尾数较多但指数范围小，容易溢出，常需 Loss Scaling。BF16 与 FP32 的指数范围相同，大模型训练通常更稳定，但有效精度较低。混合精度不代表所有数据都用低精度：矩阵乘法可用 BF16，累加、归一化、主权重和优化器状态常保留 FP32。具体内存账本取决于实现。

#### 5. ZeRO、DP、TP 和 PP 怎样配合？

**回答：** 数据并行 DP 复制模型、切分样本。ZeRO 一阶段切优化器状态，二阶段再切梯度，三阶段连参数也切。张量并行 TP 切分单层大矩阵，层内通信频繁。流水线并行 PP 把不同层放在不同设备，用微批量减少气泡。大型训练常组合它们，并把高频通信映射到最快的互联拓扑。

#### 6. 补充高频题：为什么需要学习率 Warmup 和衰减？

**回答：** 训练初期参数、激活和优化器矩估计都不稳定，直接使用峰值学习率容易发散。Warmup 从小学习率逐步升高，让训练状态平稳建立。之后使用余弦或线性衰减，降低后期更新噪声。调度应按有效 token 或优化器更新计算，恢复训练时不能错误重置。

#### 7. 补充高频题：全局 Batch Size 和梯度累积怎样计算？

**回答：** 全局 Batch Size 等于每卡微批量乘数据并行卡数，再乘梯度累积步数。梯度累积让显存较小的设备模拟大批量，但会增加一次参数更新的等待时间。批量增大通常降低梯度噪声、提高吞吐，却可能需要调整学习率。比较实验应同时对齐处理 token 数和优化器更新数。

#### 8. 补充高频题：怎样设计数据混合比例？

**回答：** 不能只按原始数据量采样，否则网页会淹没代码、数学和低资源语言。常给各领域设权重、温度或采样上限，再用小模型和短程退火实验比较边际收益。还要监控过滤与打包后的真实 token 占比，因为它可能偏离配置比例。

#### 9. 补充高频题：怎样防止评测集污染？

**回答：** 训练前收集评测题、答案和改写，对文档做精确匹配、n-gram 重叠与近似检测，并记录时间边界。只搜索完整题目不够，网页可能包含答案解析。训练后可做提示扰动、异常记忆和时间切片分析。污染很难被完全证明不存在，因此要报告检测方法，并优先使用受控或私有评测。

#### 10. 补充高频题：完整检查点应保存什么？

**回答：** 除模型参数外，还要保存优化器、学习率调度器、混合精度状态、随机数状态、数据迭代位置和配置。分布式保存要保证所有分片属于同一步，并用完成标记避免读取半写入检查点。恢复后应验证下一批数据、损失和学习率连续，否则只是加载权重，不是真正恢复训练。

## 四、SFT 与参数高效微调

#### 1. SFT 与预训练的目标有什么区别？

**回答：** 预训练在海量原始文本上做下一 token 预测，学习语言和知识分布。SFT 使用指令、上下文和高质量回答，教模型遵循任务和输出格式。两者可用交叉熵，但 SFT 常只监督 assistant 回答。SFT 数据少得多、学习率更低、质量要求更高，以避免破坏预训练能力。

#### 2. LoRA 的原理是什么？为什么少量参数有效？

**回答：** LoRA 冻结原权重 W，只学习低秩更新 B 乘 A。若 rank 很小，新增参数从输入维度乘输出维度，降为 rank 乘两维之和。许多任务适配所需的权重变化具有较低内在维度，所以低秩更新能捕捉主要方向。Rank 决定容量，Alpha 与 rank 的比值控制缩放，部署时可以合并回原权重。

#### 3. QLoRA 相比 LoRA 改进了什么？

**回答：** QLoRA 把冻结的基础权重量化到四比特，LoRA 适配器与必要计算保留较高精度。经典方法使用 NF4、Double Quantization 和 Paged Optimizer。量化权重不直接更新，梯度只训练适配器。它显著降低显存门槛，但量化反量化有开销，所以吞吐不一定比 BF16 LoRA 更快。

#### 4. 多轮对话怎样做 Loss Masking？

**回答：** 先用与推理一致的 Chat Template 序列化对话。System、user、tool 和历史 assistant token 都保留在输入里供注意力读取；assistant-only SFT 则把不监督位置的标签设为负一百，只训练目标回答和通常的回合结束 token。不能按 token 值盲目屏蔽，因为 EOS 可能同时被当作 PAD。

#### 5. 微调中的灾难性遗忘和过拟合怎样缓解？

**回答：** 灾难性遗忘是新任务提升但通用能力下降；过拟合表现为训练损失下降而验证质量变差或输出模板化。可降低学习率与 epoch、使用 LoRA、混入通用保留数据、扩大任务多样性并早停。训练期间要同时评估目标任务、通用能力、安全和格式，不能只看训练损失。

#### 6. 补充高频题：Chat Template 为什么属于训练协议？

**回答：** 模型看到的是角色标记、换行、工具结果和内容组成的 token 序列，而不是消息对象。SFT 与线上模板不同会造成分布偏移，模型可能误认角色或结束位置。模板还决定 assistant mask 的边界。模型、tokenizer 和模板应一起版本化，并用多轮、工具和截断样本测试。

#### 7. 补充高频题：Packing 和 Padding 有什么区别？

**回答：** Padding 把批次样本补到相同长度，简单但浪费计算。Packing 把多个短样本拼到固定长度，提高 token 利用率。Packing 必须正确处理位置、因果边界和损失掩码，避免后一个样本读取前一个无关样本。是否值得使用取决于长度分布和框架对 block-diagonal attention 的支持。

#### 8. 补充高频题：LoRA 目标模块怎样选择？

**回答：** 常从注意力 Q、V 投影开始，复杂任务可覆盖 Q、K、V、O 与前馈层。覆盖更多模块增加容量和成本，也可能过拟合。应通过验证集、梯度或消融选择，而不是机械复制配置。若领域变化很大，还要考虑嵌入、输出头或全量微调。

#### 9. 补充高频题：怎样评估 SFT 是否真正有效？

**回答：** 数据侧看正确率、重复、长度、领域、语言与格式分布，并人工抽检。模型侧同时评估目标任务、通用能力、安全、格式遵循和长短回答切片。自动指标用于回归，关键样本用人工或校准过的 Judge 复核。最好通过消融回答“哪类数据带来了哪项提升”。

#### 10. 补充高频题：LoRA 合并部署有哪些风险？

**回答：** 合并前必须确认基础模型版本、目标模块、缩放和精度一致。多个适配器不能假设可直接相加。量化模型常先在较高精度合并，再重新量化。合并后应检查权重差异、困惑度、目标任务和生成一致性，并保留未合并适配器以便回滚。

## 五、对齐、偏好优化与强化学习

#### 1. 经典 RLHF 有哪三个阶段？

**回答：** 第一阶段用高质量示范做 SFT。第二阶段收集同一提示下多个回答的人类偏好，训练奖励模型。第三阶段用 PPO 等方法优化策略，使奖励升高，同时用 KL 约束避免偏离参考模型。真实系统还包含采样、数据质检、安全过滤与独立评测，这些常比算法名称更决定最终效果。

#### 2. 奖励模型怎样训练？

**回答：** 模型为提示和回答输出标量分数。对偏好回答与非偏好回答，使用 Bradley-Terry 形式，让前者分数更高。损失关注分数差，不保证不同提示的绝对分数可比。必须控制长度、位置、格式和风格偏差，并在留出提示、困难样本和不同模型候选上评估泛化。

#### 3. PPO 中 KL、价值模型和裁剪分别做什么？

**回答：** 价值模型提供基线，用 GAE 估计优势，降低策略梯度方差。新旧策略概率比用于衡量更新，PPO 裁剪限制一次变化过大。KL 惩罚让当前策略不要远离参考策略，避免利用奖励漏洞。PPO 能用在线样本，但需要策略、参考、奖励和价值模型，系统复杂且对超参数敏感。

#### 4. DPO 的核心思想和局限是什么？

**回答：** DPO 直接训练策略相对参考模型提高偏好回答概率、降低非偏好回答概率，不需要显式奖励模型、价值模型或在线 rollout，流程稳定便宜。参考模型提供隐式 KL 锚点。局限是数据通常离线，覆盖不到当前策略的新错误，并受偏好噪声、长度偏差和参考模型质量影响。

#### 5. 怎样识别和缓解 Reward Hacking？

**回答：** Reward Hacking 表现为代理奖励升高，但真实质量下降，例如输出更长、更讨好或利用验证器漏洞。应使用独立评测器和人工盲评，按长度、风格和领域切片，检查奖励与真实质量的相关性。缓解包括对抗样本、多奖励、KL 约束、规则验证和持续刷新数据。训练奖励不能同时是唯一最终裁判。

#### 6. 补充高频题：GRPO 与 PPO 的主要区别是什么？

**回答：** GRPO 对同一提示采样一组回答，用组内相对奖励构造优势，通常不训练单独价值模型，因此显存和系统复杂度较低。策略更新仍使用概率比、裁剪和 KL。它适合数学、代码等可验证任务，但若组内奖励都相同，就几乎没有学习信号；组大小和奖励方差很关键。

#### 7. 补充高频题：什么是 RLVR？

**回答：** RLVR 使用程序、单元测试、数学答案检查器或环境最终状态产生可验证奖励。它比主观奖励模型更少受风格偏差影响，适合数学、代码和工具任务。难点是验证器覆盖有限，模型可能钻解析或规则漏洞。设计时必须检查格式、超时、副作用和作弊路径，并保留验证器外评测。

#### 8. 补充高频题：离线偏好优化和在线优化怎样选择？

**回答：** DPO 等离线方法使用固定数据，稳定便宜，但分布由旧策略决定。在线方法从当前策略采样，能覆盖模型现在真正犯的错，却需要实时奖励或教师，成本高且更不稳定。常见方案是先 SFT 或 DPO 冷启动，再做有限在线迭代。选择取决于奖励可靠性、采样预算和环境能力。

#### 9. 补充高频题：结果奖励和过程奖励有什么区别？

**回答：** 结果奖励只判断最终答案，验证简单，但对长推理的信用分配稀疏。过程奖励给中间步骤反馈，更容易定位错误，却需要昂贵标注或可靠步骤验证器，也可能约束新颖路径。实践中可用结果奖励保证最终正确，再用过程监督改善效率，同时警惕模型为过程分写冗长步骤。

#### 10. 补充高频题：怎样评估奖励模型而不只看偏好准确率？

**回答：** 除总体成对准确率，还要看长度、语言、领域、安全和候选模型切片，测平局与标注一致性。做 Best-of-N 时，若 N 增大、奖励继续升高但人工质量下降，说明模型在利用奖励漏洞。还要看校准、分布外表现以及与人工盲评的相关性。

## 六、推理优化与量化

#### 1. Greedy、Beam、Top-k、Top-p 和 Temperature 怎样比较？

**回答：** Greedy 每步选最高概率 token，稳定但可能重复。Beam 保留多个累计高分序列，适合翻译等目标确定任务。Top-k 只在概率最高的 k 个候选中采样；Top-p 选择累计概率达到 p 的最小集合。Temperature 缩放 logits，越低越确定，越高越多样。评测时必须固定解码参数和随机种子。

#### 2. Speculative Decoding 怎样加速并保持目标分布？

**回答：** 小草稿模型先提出多个 token，大目标模型一次并行验证。接受拒绝规则保证接受结果与目标模型分布一致；被拒位置从校正分布采样。加速取决于草稿模型足够便宜且接受率高。若两模型差异大、候选过短或调度开销高，收益可能消失。

#### 3. PagedAttention 和 Continuous Batching 分别解决什么？

**回答：** PagedAttention 把 KV Cache 分成固定块，用页表映射逻辑序列，减少连续预留造成的碎片，并支持前缀共享。Continuous Batching 在每个解码步加入新请求、移除完成请求，避免等待整批最慢样本。前者提高显存利用率，后者提高 GPU 占用；两者都不改变模型数学。

#### 4. PTQ、QAT、GPTQ 和 AWQ 怎样区分？

**回答：** PTQ 在训练后用校准数据量化，成本低；QAT 在训练中模拟量化误差，精度通常更好但成本高。GPTQ 近似利用二阶信息，逐步量化并补偿误差。AWQ 根据激活统计保护少数重要权重通道。比较时还要说明是权重、激活还是 KV 量化，以及分组大小和推理内核。

#### 5. TTFT、TPOT、吞吐和七 B 模型显存怎样理解？

**回答：** TTFT 是首 token 延迟，主要受排队和 Prefill 影响；TPOT 是首 token 后每个 token 时间，反映 Decode。吞吐用每秒请求或 token 表示，增大批量可能提高吞吐却恶化延迟。七十亿参数用 FP16 权重约十四 GB，四比特约三点五 GB，但实际还要加 KV Cache、激活、workspace 与框架开销。

#### 6. 补充高频题：KV Cache 显存怎样估算？

**回答：** 元素数约为二乘层数、序列长度、批量、KV 头数和头维度；二来自 K 与 V。再乘每元素字节数就是缓存大小。GQA 通过减少 KV 头数直接降低缓存。实际还要考虑不同请求长度、分页碎片、Beam 数和张量并行分片。这是服务容量规划的高频手算题。

#### 7. 补充高频题：为什么 Decode 常受显存带宽限制？

**回答：** Decode 每步只有少量新 token，却要读取大量权重和历史 KV，算术强度低，GPU 计算单元可能在等数据。增大批量让一次权重读取服务更多 token，量化减少读取字节，算子融合减少中间访存。判断瓶颈要结合带宽、批量和 GPU 利用率，而不只看理论 FLOPs。

#### 8. 补充高频题：KV Cache Quantization 的风险是什么？

**回答：** KV 量化能显著降低长上下文和高并发显存，但历史 K、V 误差会在后续每一步重复使用，长序列和少数敏感头可能累积质量损失。常按 token、头或通道选缩放，并对最近窗口或异常值保留高精度。评测必须覆盖真实长上下文，不能只看短文本困惑度。

#### 9. 补充高频题：Tensor Parallel 在推理中何时有用？

**回答：** TP 把每层矩阵切到多张 GPU，使单卡放不下的模型能够运行，并聚合算力。代价是几乎每层都要通信，低延迟 Decode 尤其敏感。高速 NVLink 内适合 TP，跨节点代价更高。模型能放单卡时，增加 TP 度数不一定更快，数据并行副本可能获得更好吞吐。

#### 10. 补充高频题：怎样系统优化线上 LLM 服务？

**回答：** 先记录提示长度、输出长度、并发和延迟分位数，判断是排队、Prefill、Decode、通信还是内存瓶颈。再选择连续批处理、分页 KV、量化、FlashAttention、投机解码或前缀缓存。每次对齐质量并同时测 TTFT、TPOT、吞吐和成本。目标是单位成本满足服务等级，而不是单个离线速度最高。

## 七、RAG、Agent 与评测

#### 1. RAG 的标准流程是什么？

**回答：** 离线先清洗文档、切块、生成向量或关键词索引，并保存来源元数据。在线把问题改写或编码，检索候选块，做混合检索与重排序，再把最相关证据交给模型生成带引用答案。最后分别评估检索召回、答案正确、证据忠实和线上反馈。关键是端到端定位失败发生在哪一步。

#### 2. Chunking、Lost in the Middle 和 HNSW 分别是什么？

**回答：** Chunking 可按固定窗口、标题、段落或语义边界切分；太小缺上下文，太大降低精度。Lost in the Middle 指模型容易忽略长提示中间证据，可通过减少噪声、重排位置和先提取再综合缓解。HNSW 是多层小世界图，高层快速跳转，底层精细搜索，用内存和建库时间换取近似最近邻低延迟。

#### 3. CoT 和 ReAct 有什么区别？

**回答：** CoT 让模型生成中间推理步骤，把复杂问题拆成局部预测，但步骤不保证是真实因果解释。ReAct 在推理、动作和环境观察之间交替，使模型能搜索、运行代码和调用 API。稳定 Agent 还需要工具 schema、超时、重试、最大步数、状态记录与错误恢复，不能只依赖提示词。

#### 4. 常见 Benchmark 和 Needle in a Haystack 能测什么？

**回答：** MMLU 测多学科知识，GSM8K 测数学文字题，HumanEval 用单元测试测代码，C-Eval 测中文多学科。Needle 测试把目标信息放在不同长度和位置，诊断长上下文检索退化，但不能代表多跳推理、矛盾信息和长文理解。任何 benchmark 都要考虑提示、采样、污染和评分脚本。

#### 5. 幻觉为什么产生？Function Calling 怎样降低风险？

**回答：** 模型优化的是下一个 token 概率，不是真值；训练数据可能缺失、冲突或过时，检索也可能错误。Function Calling 让模型输出结构化工具名和参数，由宿主程序校验、执行，再把结果返回模型。它能接入权威数据与计算，但必须做权限、参数、超时、幂等和审计，不能给模型无限系统权限。

#### 6. 补充高频题：稀疏、稠密和混合检索怎样选择？

**回答：** BM25 等稀疏检索擅长精确关键词、编号和罕见实体；稠密检索擅长语义改写，但可能漏精确字符串。混合检索分别取候选，再用分数融合合并，通常更稳，之后可用 Cross-Encoder 或 LLM 重排序。选择应按查询类型切片测 Recall at k、延迟和成本。

#### 7. 补充高频题：怎样分别评估 RAG 的检索和生成？

**回答：** 检索侧看标准证据是否进入 Top-k，常用 Recall at k、MRR 和 nDCG。生成侧看答案正确、证据忠实、引用准确和拒答。端到端错误要归因到未检到、重排错、提示截断、模型忽略证据或证据不足。测试集应保存问题、答案和支持证据。

#### 8. 补充高频题：LLM-as-Judge 有哪些偏差？

**回答：** Judge 可能偏好更长、更有格式、与自身风格相似或排在特定位置的答案。应随机交换顺序、隐藏模型身份、使用明确 rubric、允许平局，并用人工标注校准。重要结论要看多个评审或重复采样。Judge 适合扩展评测，但不应同时是训练奖励和唯一裁判。

#### 9. 补充高频题：Agent 常见失败模式是什么？

**回答：** 常见问题包括选错工具、参数无效、循环调用、忘记约束、把工具错误当事实，以及生成了漂亮回答却没完成环境任务。系统应限制步数和预算，验证动作，保存结构化状态，支持重试和回滚。评测要同时看任务成功、轨迹、成本和副作用。

#### 10. 补充高频题：怎样防御 RAG 和 Agent 的 Prompt Injection？

**回答：** 检索文档与网页是不可信数据，其中的指令不能获得系统权限。应分离指令和数据通道，对工具使用最小权限与 allowlist，高风险动作需确认，外部内容要标记来源。输出过滤不够，因为攻击可能在工具调用前发生。还要用包含恶意文档的测试集持续红队评测。

## 参考与听读建议

- 题目主线来自 [MiniMind：大模型八股 100 问](https://github.com/Tongyun1/from-minimind-to-more/blob/main/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%85%AB%E8%82%A1100%E9%97%AE.md)。本页合并或删除了重复与低频问题，并重新撰写全部答案。
- 补充题集中在当前岗位持续重视的预训练、后训练、强化学习、推理性能、评测与安全能力。
- 建议每次只听一个主题。听到问题后先暂停，口述自己的答案，再继续播放；第二遍重点复述机制、权衡和验证方法。
- 如果制作系列播客，推荐按本文七个一级主题拆成七期；如果制作单集长节目，可把“架构到训练”“后训练到推理”“应用与评测”分成三个章节，并在章节之间重复一次贯穿主线。
