跳转至

26年大模型高频面试60道

image.png

目录

  1. 基础与架构
  2. 1.1 介绍一下Transformer模型的结构。
  3. 1.2 为什么Transformer需要位置编码?有哪些常见的位置编码方式?
  4. 1.3 解释一下LayerNorm和BatchNorm的区别,为什么LLM多用LayerNorm?
  5. 1.4 什么是自注意力机制?其计算复杂度是多少?
  6. 1.5 LLM中常用的激活函数有哪些?(如GELU、SwiGLU)
  7. 1.6 什么是RoPE(旋转位置编码)?它有什么优点?
  8. 1.7 解释一下“缩放点积注意力”中为什么要除以√(d_k)?

  9. 预训练与数据

  10. 2.1 预训练数据的处理流程是怎样的?如何保证数据质量?
  11. 2.2 什么是Tokenization?常见的Tokenizer有哪些?(BPE, WordPiece)
  12. 2.3 什么是“涌现能力”?通常出现在多大参数规模的模型中?
  13. 2.4 预训练阶段通常使用什么损失函数?
  14. 2.5 什么是Scaling Law?它对模型训练有什么指导意义?

  15. 微调与参数高效微调

  16. 3.1 什么是SFT(监督微调)?它与预训练有何不同?
  17. 3.2 什么是LoRA?它是如何工作的?
  18. 3.3 QLoRA与LoRA的区别是什么?
  19. 3.4 什么是P-tuning v2和Prefix Tuning?
  20. 3.5 全量微调和LoRA微调在效果和资源上有什么区别?

  21. 对齐与RLHF

  22. 4.1 什么是RLHF(基于人类反馈的强化学习)?包含哪几个阶段?
  23. 4.2 解释一下奖励模型是如何训练的?
  24. 4.3 什么是PPO算法?在LLM中如何使用?
  25. 4.4 DPO(直接偏好优化)与PPO相比有什么优势?
  26. 4.5 如何解决LLM中的“幻觉”问题?

  27. 推理优化与部署

  28. 5.1 什么是KV Cache?它是如何加速推理的?
  29. 5.2 介绍一下大模型量化的方法(GPTQ, AWQ, GGUF)。
  30. 5.3 什么是FlashAttention?它解决了什么问题?
  31. 5.4 什么是投机采样(Speculative Decoding)?
  32. 5.5 介绍一下vLLM的PagedAttention技术。

  33. 检索增强生成与Agent

  34. 6.1 什么是RAG?它解决了什么问题?
  35. 6.2 RAG中常见的检索优化策略有哪些?(如HyDE, 重排序)
  36. 6.3 什么是Agent?ReAct模式是什么?
  37. 6.4 什么是Function Calling(工具调用)?它是如何实现的?
  38. 6.5 如何评估RAG系统的效果?

  39. 评估与安全

  40. 7.1 如何评估大模型的能力?常用的Benchmark有哪些?(MMLU, HumanEval)
  41. 7.2 什么是“越狱攻击”?如何防御?
  42. 7.3 什么是“遗忘学习”(Machine Unlearning)?在LLM中有什么用?

  43. 多模态与前沿

  44. 8.1 介绍一下CLIP模型及其原理。
  45. 8.2 什么是视觉-语言模型?常见的架构有哪些?(如LLaVA, Flamingo)
  46. 8.3 什么是MoE(混合专家模型)?它有什么优缺点?
  47. 8.4 介绍一下长文本技术(如NTK-aware scaling, YaRN)。

  48. 工程实践与杂项

  49. 9.1 训练LLM时,如果遇到Loss不下降,可能的原因有哪些?
  50. 9.2 分布式训练中,数据并行、张量并行、流水线并行的区别是什么?
  51. 9.3 什么是ZeRO(零冗余优化器)?分为哪几个阶段?
  52. 9.4 如何解决显存不足(OOM)的问题?
  53. 9.5 大模型的上下文长度扩展有哪些方法?
  54. 9.6 解释一下“灾难性遗忘”是什么?
  55. 9.7 什么是“思维链”?
  56. 9.8 介绍一下常见的开源大模型系列(如LLaMA, Qwen, Mistral)。
  57. 9.9 如何选择一个合适的基础模型进行微调?
  58. 9.10 介绍一个你熟悉的LLM应用框架(如LangChain, LlamaIndex)。

1 基础与架构

1.1 介绍一下Transformer模型的结构。

Transformer由Encoder和Decoder两部分组成(纯Decoder架构如GPT只保留了Decoder)。

  • Encoder:由N个相同层堆叠,每层包含多头自注意力和前馈神经网络,均配有残差连接和层归一化。

  • Decoder:在Encoder基础上,中间插入交叉注意力层,用于关注Encoder输出,并使用因果掩码确保自回归生成时看不到未来token。

  • 核心创新:完全依赖注意力机制,摒弃了RNN的序列依赖,实现了高度并行化。

1.2 为什么Transformer需要位置编码?有哪些常见的位置编码方式?

因为自注意力机制是“置换不变”的(即打乱输入顺序,输出结果不变),无法捕捉序列的顺序信息。

  • 绝对位置编码:
  • Sinusoidal(正弦余弦):原始Transformer使用,不同频率的正余弦函数,无需训练。
  • 可学习位置编码:如BERT,将位置ID映射为向量参与训练。

  • 相对位置编码:

  • RoPE(旋转位置编码):Llama、Qwen等主流模型使用,通过旋转矩阵将相对位置信息融入向量内积中。
  • ALiBi:通过给注意力分数添加与距离成正比的惩罚偏置。

1.3 解释一下LayerNorm和BatchNorm的区别,为什么LLM多用LayerNorm?

  • BatchNorm:在批次维度上归一化,依赖batch size大小,且对序列长度敏感(不同长度的样本难以统计)。

  • LayerNorm:在特征维度上归一化,与batch size和序列长度无关。

  • LLM选用原因:Transformer通常使用大batch且序列长度不一;LayerNorm稳定训练,且在自回归生成时(推理阶段)统计量恒定。现代LLM多使用RMSNorm(LayerNorm的变体,去掉了均值中心化,计算更高效)。

1.4 什么是自注意力机制?其计算复杂度是多少?

自注意力机制通过Query、Key、Value矩阵计算序列中每个token与其他所有token的相关性,并加权求和。 公式:Attention(Q,K,V) = softmax(QK^T / √(d_k)) V

  • 复杂度:O(L^2 * d),其中L是序列长度,d是特征维度。平方复杂度是长文本处理的主要瓶颈。

1.5 LLM中常用的激活函数有哪些?

  • ReLU:早期常用,但存在神经元“坏死”问题。

  • GELU(高斯误差线性单元):BERT、GPT-2使用,比ReLU平滑。

  • SwiGLU(Swish Gated Linear Unit):LLaMA、PaLM等主流模型采用。它结合了门控线性单元和Swish激活,相比ReLU能显著提升模型性能,但参数量略增(因为引入了门控矩阵)。

1.6 什么是RoPE(旋转位置编码)?它有什么优点?

RoPE(Rotary Position Embedding)是目前最主流的位置编码(LLaMA、Qwen、ChatGLM等均使用)。

  • 原理:将token的Query和Key向量通过旋转矩阵进行变换,使得内积结果天然包含相对位置信息。

  • 优点:

  • 具备相对位置编码的特性,长文本外推能力好。
  • 结合了绝对位置和相对位置的优点,数学性质优美。
  • 可以配合NTK-aware等方法进行上下文长度扩展。

1.7 解释一下“缩放点积注意力”中为什么要除以√(d_k)?

为了防止点积结果过大,导致softmax进入梯度极小的饱和区。

  • d_k较大时,点积的方差较大(方差为d_k)。除以√(d_k)可以将方差控制为1,使softmax梯度保持在合理范围,避免梯度消失。

2 预训练与数据

2.1 预训练数据的处理流程是怎样的?如何保证数据质量?

  • 流程:
  • 数据采集:爬取互联网(Common Crawl)、书籍、代码、论文等。
  • 过滤:去重(MinHash)、去除低质量文本(基于启发式规则或分类器)、去除有害内容。
  • 隐私脱敏:去除个人身份信息(PII)。
  • 分词:转换为token IDs。

  • 质量保证:通常采用“数据配比”实验,寻找高质量数据(如教科书、代码)与通用数据的黄金比例。

2.2 什么是Tokenization?常见的Tokenizer有哪些?

将文本切分为模型可以处理的最小单元(Token)的过程。

  • BPE(Byte Pair Encoding):GPT系列使用,基于频率合并字符对,能处理未知词(OOV),常用cl100k_base(GPT-4)。

  • WordPiece:BERT使用,基于似然概率选择合并。

  • SentencePiece:LLaMA、Qwen使用,直接处理原始文本(包括空格),无需预分词,支持多语言。

2.3 什么是“涌现能力”?通常出现在多大参数规模的模型中?

“涌现能力”指在小型模型中不存在,仅在模型规模超过某个阈值(如10B-100B)后突然出现的能力。

  • 典型能力:思维链(Chain-of-Thought)、代码生成、指令遵循等。

  • 注:近期研究认为,涌现能力可能与评估指标的非线性有关,但大规模参数确实是复杂任务泛化的基础。

2.4 预训练阶段通常使用什么损失函数?

自回归语言建模损失(Next Token Prediction):

  • 即交叉熵损失。模型预测下一个token的概率分布,与真实token计算交叉熵。Loss = -Σ log P(token_i | token_<i)

2.5 什么是Scaling Law?它对模型训练有什么指导意义?

由OpenAI提出,描述模型性能(Loss)与计算量(C)、参数量(N)、数据量(D)之间的幂律关系。

  • 指导意义:
  • 要想提升性能,模型大小和数据量需要等比例缩放(Chinchilla定律:最优训练时,N ∝ D)。
  • 对于给定算力预算,存在最优的模型大小与数据量配比,盲目增大模型而不增加数据是浪费算力的。

3 微调与参数高效微调

3.1 什么是SFT?它与预训练有何不同?

  • SFT:在有监督的指令-回答数据上微调模型,让模型学会遵循指令。

  • 区别:

  • 预训练:在海量非结构化文本上学习“知识”(预测下一个词),数据量大,算力消耗巨大。
  • SFT:在高质量、结构化数据上学习“交互方式”(对话格式),通常只需要少量(几千到几万)条数据。

3.2 什么是LoRA?它是如何工作的?

LoRA(Low-Rank Adaptation)是目前最主流的参数高效微调方法。

  • 原理:冻结原模型权重W_0,在Transformer的注意力层(Q/K/V/O)旁路注入两个低秩矩阵ABB*A)。

  • 前向:h = W_0 x + B A x

  • 优势:参数量极少(通常只占原模型的0.1%-1%),显存占用低,且可切换多个任务(只需更换Adapter权重)。

3.3 QLoRA与LoRA的区别是什么?

QLoRA = 量化 + LoRA。

  • 核心:将预训练模型4-bit量化(如NF4格式)加载,在计算梯度时,将权重反量化回BF16进行计算,但更新梯度只更新LoRA参数。

  • 意义:极大降低了微调的显存门槛(例如在单张24GB显存显卡上微调33B模型)。

3.4 什么是P-tuning v2和Prefix Tuning?

  • Prefix Tuning:在Transformer每层的Key和Value前添加可训练的“虚拟Token”(前缀),冻结原模型。

  • P-tuning v2:优化版,在多层添加连续的“提示向量”,效果接近于全量微调,且仅引入极少参数。

3.5 全量微调和LoRA微调在效果和资源上有什么区别?

查看内嵌表格

4 对齐与RLHF

4.1 什么是RLHF?包含哪几个阶段?

RLHF(Reinforcement Learning from Human Feedback)旨在让模型输出符合人类价值观。

  • 三个阶段:
  • SFT:用人工撰写的指令数据微调基座模型。
  • RM(奖励模型):训练模型对多个回复进行偏好排序(学习人类偏好)。
  • RL(强化学习):使用PPO算法,根据奖励模型的打分,微调SFT模型。

4.2 解释一下奖励模型是如何训练的?

  • 数据:收集比较数据。给定prompt,人工标注者给多个回答排序(例如A > B > C)。

  • 训练:采用Pairwise Ranking Loss(对比损失)。输入同一个prompt下的两个回答,奖励模型预测哪个更好。目标是让“好回答”的得分显著高于“坏回答”。

4.3 什么是PPO算法?在LLM中如何使用?

PPO(Proximal Policy Optimization)是一种强化学习算法,用于更新策略时避免步子迈得太大(防止模型坍塌)。

  • 在LLM中的应用:
  • Actor:当前待训练的LLM(策略)。
  • Critic:价值网络(预估状态价值)。
  • KL惩罚:在奖励中加入与原始SFT模型的KL散度,防止模型为了追求高分而“跑偏”。

4.4 DPO(直接偏好优化)与PPO相比有什么优势?

DPO通过数学推导,将RLHF中的奖励函数直接转化为最优策略的闭式解,从而绕过了显式训练奖励模型和复杂的强化学习过程。

  • 优势:
  • 实现简单,训练稳定,不依赖PPO复杂的超参数调优。
  • 计算效率高,显存占用更低。

4.5 如何解决LLM中的“幻觉”问题?

  • RAG:引入外部知识库检索,让回答有据可依。

  • 提示工程:要求模型“一步步思考”或“如果你不知道,请说不知道”。

  • 增强数据:在微调中加入“我不知道”类的拒答样本。

  • 解码策略:使用对比解码(Contrastive Decoding),鼓励模型选择与“噪音模型”差异大的输出。

  • 事后验证:使用外部工具(如搜索引擎)对生成内容进行事实核查。

5 推理优化与部署

5.1 什么是KV Cache?它是如何加速推理的?

在自回归生成时,当前token只能“看到”之前的token。

  • 原理:缓存之前token的Key和Value向量,避免在生成每个新token时重复计算历史序列的注意力。

  • 效果:将计算复杂度从O(n^3)降低到O(n^2),是推理加速最基础的手段。

5.2 介绍一下大模型量化的方法(GPTQ, AWQ, GGUF)。

  • GPTQ:基于近似二阶信息(Hessian)的权重量化方法,主要针对GPU推理,支持4-bit量化,精度损失极小。

  • AWQ:激活感知量化,根据激活值的重要性保护重要权重不量化,常用于高吞吐量GPU服务。

  • GGUF:llama.cpp使用的格式,针对CPU和Apple Silicon优化,支持混合量化(不同层不同精度)。

5.3 什么是FlashAttention?它解决了什么问题?

FlashAttention通过IO感知和分块计算,解决了标准Attention在GPU显存带宽上的瓶颈(HBM与SRAM之间的数据搬运频繁)。

  • 效果:在不损失精度的前提下,大幅提升注意力计算速度,降低显存占用(从O(n^2)O(n))。

5.4 什么是投机采样?

为了解决大模型自回归生成“一次一个token”速度慢的问题。

  • 原理:使用一个小而快的草稿模型(Draft Model)预测接下来k个token,然后用大模型并行验证。如果验证通过,一次性生成k个token;如果不通过,修正后重试。

5.5 介绍一下vLLM的PagedAttention技术。

  • 问题:KV Cache在显存中存在大量碎片,且通常预分配导致浪费(比如预分配4096长度,实际只用了500)。

  • 方案:借鉴操作系统虚拟内存分页思想,将KV Cache分割成固定大小的“块”,物理上不连续,逻辑上连续。

  • 优势:显存利用率接近100%,支持高并发下的连续批处理。

6 检索增强生成与Agent

6.1 什么是RAG?它解决了什么问题?

RAG(Retrieval-Augmented Generation)在生成回答前,先从外部知识库中检索相关信息,作为上下文输入给LLM。

  • 解决的问题:缓解幻觉、知识截止日期限制、私有数据/长尾数据难以融入训练的问题。

6.2 RAG中常见的检索优化策略有哪些?

  • HyDE:先让LLM生成一个假设性的回答,再用这个假设去检索(缩小语义Gap)。

  • 重排序:检索Top-k后,使用交叉编码器(Cross-Encoder)重新打分,筛选出最相关的Top-n。

  • 多路检索:结合稀疏检索(BM25)和稠密检索(向量)的结果。

6.3 什么是Agent?ReAct模式是什么?

Agent(智能体)是利用LLM作为核心决策大脑,能够调用工具、观察环境并执行复杂任务。

  • ReAct:将推理(Reasoning)和行动(Acting)结合。
  • 模式:Thought -> Act -> Observation -> Thought...
  • 即模型先思考(Thought),决定采取什么动作(Act,如调用API),根据环境返回的观察(Observation)继续思考,直到任务完成。

6.4 什么是Function Calling(工具调用)?它是如何实现的?

Function Calling允许LLM在需要时,决定调用外部函数(如查天气、发邮件)并生成符合函数签名的结构化参数(JSON)。

  • 实现方式:在微调阶段,将工具的描述(函数名、参数列表)作为系统提示,训练模型在特定时机输出<tool_call>或特定的JSON格式,而不是直接输出自然语言。

6.5 如何评估RAG系统的效果?

通常拆分为两个维度评估:

  1. 检索质量:命中率、准确率、召回率、MRR。

  2. 生成质量:

  3. 无标注:利用LLM-as-a-Judge(如Ragas框架)评估忠实度、相关性。
  4. 有标注:人工评估或对比Golden Answer计算ROUGE、BLEU(不够准确,仅参考)。

7 评估与安全

7.1 如何评估大模型的能力?常用的Benchmark有哪些?

  • 知识能力:MMLU(多任务语言理解,57个学科)、C-Eval(中文)。

  • 推理能力:GSM8K(数学推理)、MATH(竞赛数学)。

  • 代码能力:HumanEval(编程)、MBPP。

  • 长文本:LongBench、LV-Eval。

  • 中文:CMMLU、AGIEval。

7.2 什么是“越狱攻击”?如何防御?

  • 越狱攻击:通过精心设计的提示词(如DAN提示),绕过模型的安全对齐机制,诱导模型输出有害内容。

  • 防御:

  • 输入/输出检测:使用分类器过滤。
  • 对抗性训练:在微调中加入大量越狱样本,教会模型拒绝。
  • 提示词防御:添加系统级前缀,如“你必须遵守伦理规范”。

7.3 什么是“遗忘学习”?在LLM中有什么用?

Machine Unlearning指从已训练好的模型中移除特定数据(如隐私数据、版权数据)的影响,而不必重新训练。

  • 应用:满足GDPR“被遗忘权”,或移除训练集中包含的有害/侵权内容。

8 多模态与前沿

8.1 介绍一下CLIP模型及其原理。

CLIP(Contrastive Language-Image Pre-training)通过对比学习,将图像和文本映射到同一语义空间。

  • 原理:计算图像编码器和文本编码器输出的余弦相似度矩阵,对角线(匹配的图像-文本对)为正样本,非对角线为负样本,最大化正样本相似度,最小化负样本相似度。

  • 应用:图文检索、多模态大模型中的视觉编码器。

8.2 什么是视觉-语言模型?常见的架构有哪些?

VLM(Vision-Language Model)能够处理图像和文本输入。

  • 常见架构:
  • LLaVA:使用MLP将视觉特征(CLIP)映射到LLM的输入空间,训练简单高效。
  • Flamingo:在LLM层间插入Perceiver Resampler和交叉注意力层,处理图像序列。
  • Qwen-VL / CogVLM:高性能开源多模态模型。

8.3 什么是MoE(混合专家模型)?它有什么优缺点?

MoE(Mixture of Experts)将模型中的FFN层替换为多个“专家”,通过路由网络(Gate)选择激活哪些专家。

  • 优点:在保持推理计算量基本不变的前提下,大幅增加模型总参数量,提升模型容量(如Mixtral 8x7B,总参数47B,推理仅用13B)。

  • 缺点:训练时显存占用高,路由负载均衡难以控制(容易出现部分专家过载,部分闲置),通信开销大。

8.4 介绍一下长文本技术(如NTK-aware scaling, YaRN)。

用于扩展预训练模型(如4k上下文)的窗口长度。

  • NTK-aware scaling:基于神经正切核理论,调整RoPE的旋转角度,使得高频维度外推能力增强。

  • YaRN(Yet another RoPE extensioN):结合NTK-aware和窗口缩放,是目前最有效的RoPE外推方法之一,可以无损扩展到32k甚至128k。

9 工程实践与杂项

9.1 训练LLM时,如果遇到Loss不下降,可能的原因有哪些?

  1. 数据问题:数据质量差、标签噪声高、数据量不足。

  2. 模型配置:学习率过大(Loss爆炸)或过小(不收敛)、优化器参数(AdamW的beta值)不合适。

  3. 数值稳定性:存在NaN或Inf,需检查梯度裁剪。

  4. Tokenizer对齐:特殊token(如<pad>)在模型和损失计算中未正确忽略。

9.2 分布式训练中,数据并行、张量并行、流水线并行的区别是什么?

  • 数据并行:每张卡存一份完整模型,数据分片,梯度同步(最常用)。

  • 张量并行:将单个算子(如矩阵乘法)切分到多卡上计算,适用于单卡放不下模型。

  • 流水线并行:按层切分模型,不同卡负责不同层,解决深层模型显存问题。

9.3 什么是ZeRO?分为哪几个阶段?

ZeRO(Zero Redundancy Optimizer)是DeepSpeed提出的显存优化策略,消除优化器状态的冗余。

  • Stage 1:分割优化器状态(如Adam动量)。

  • Stage 2:分割优化器状态 + 梯度。

  • Stage 3:分割优化器状态 + 梯度 + 模型参数(参数仅在需要时从各卡收集)。

9.4 如何解决显存不足(OOM)的问题?

  1. 减少batch size(或使用梯度累积)。

  2. 开启梯度检查点(以时间换空间,重计算而非存储中间激活值)。

  3. 使用混合精度(BF16/FP16)。

  4. 使用LoRA等PEFT方法。

  5. 使用DeepSpeed ZeRO-3。

9.5 大模型的上下文长度扩展有哪些方法?

  1. 位置编码插值(PI):线性缩放位置索引。

  2. NTK-aware / YaRN:基于RoPE的频域调整。

  3. 长文本微调:在超长文本数据上进行少量步数的微调(通常几千步)。

9.6 解释一下“灾难性遗忘”是什么?

在连续学习中,当模型在新任务上微调时,对旧任务的性能急剧下降。

  • LLM中:指令微调可能削弱模型的通用能力。缓解方法包括:数据重放(混合预训练数据)、LoRA(冻结主干)、EWC(弹性权重巩固)。

9.7 什么是“思维链”?

思维链(Chain-of-Thought, CoT)是一种提示技术,通过要求模型在给出最终答案前,输出中间的推理步骤,能显著提升复杂逻辑、数学问题的准确率。

9.8 介绍一下常见的开源大模型系列。

  • LLaMA系列:Meta发布,开源生态基石(LLaMA, LLaMA-2, LLaMA-3)。

  • Qwen系列:阿里通义千问,支持多语言,长文本,工具调用能力强。

  • Mistral系列:欧洲Mistral AI,高效架构(Sliding Window Attention, MoE)。

  • DeepSeek系列:深度求索,以MoE架构和极高性价比著称。

  • ChatGLM系列:智谱AI,针对中文优化。

9.9 如何选择一个合适的基础模型进行微调?

  1. 语言:优先选择在多语言(尤其是中文)上预训练充足的模型(如Qwen)。

  2. 许可:商用需关注开源协议(LLaMA-2允许商用,LLaMA-1不允许)。

  3. 结构:是否支持长文本(如RoPE结构),是否有现成的量化/微调生态。

  4. 基座 vs 对话版:微调特定任务通常用基座模型(Base),若做角色扮演可用对话版(Chat)继续微调。

9.10 介绍一个你熟悉的LLM应用框架。

  • LangChain:组件化框架,包含Chain、Agent、Memory、Retriever等模块。适合构建复杂的流水线。

  • LlamaIndex:专注于数据索引和检索,提供了强大的数据连接器(Data Connectors)和查询引擎,适合构建RAG应用。