26年大模型高频面试60道

目录¶
- 基础与架构
- 1.1 介绍一下Transformer模型的结构。
- 1.2 为什么Transformer需要位置编码?有哪些常见的位置编码方式?
- 1.3 解释一下LayerNorm和BatchNorm的区别,为什么LLM多用LayerNorm?
- 1.4 什么是自注意力机制?其计算复杂度是多少?
- 1.5 LLM中常用的激活函数有哪些?(如GELU、SwiGLU)
- 1.6 什么是RoPE(旋转位置编码)?它有什么优点?
-
1.7 解释一下“缩放点积注意力”中为什么要除以√(d_k)?
-
预训练与数据
- 2.1 预训练数据的处理流程是怎样的?如何保证数据质量?
- 2.2 什么是Tokenization?常见的Tokenizer有哪些?(BPE, WordPiece)
- 2.3 什么是“涌现能力”?通常出现在多大参数规模的模型中?
- 2.4 预训练阶段通常使用什么损失函数?
-
2.5 什么是Scaling Law?它对模型训练有什么指导意义?
-
微调与参数高效微调
- 3.1 什么是SFT(监督微调)?它与预训练有何不同?
- 3.2 什么是LoRA?它是如何工作的?
- 3.3 QLoRA与LoRA的区别是什么?
- 3.4 什么是P-tuning v2和Prefix Tuning?
-
3.5 全量微调和LoRA微调在效果和资源上有什么区别?
-
对齐与RLHF
- 4.1 什么是RLHF(基于人类反馈的强化学习)?包含哪几个阶段?
- 4.2 解释一下奖励模型是如何训练的?
- 4.3 什么是PPO算法?在LLM中如何使用?
- 4.4 DPO(直接偏好优化)与PPO相比有什么优势?
-
4.5 如何解决LLM中的“幻觉”问题?
-
推理优化与部署
- 5.1 什么是KV Cache?它是如何加速推理的?
- 5.2 介绍一下大模型量化的方法(GPTQ, AWQ, GGUF)。
- 5.3 什么是FlashAttention?它解决了什么问题?
- 5.4 什么是投机采样(Speculative Decoding)?
-
5.5 介绍一下vLLM的PagedAttention技术。
-
检索增强生成与Agent
- 6.1 什么是RAG?它解决了什么问题?
- 6.2 RAG中常见的检索优化策略有哪些?(如HyDE, 重排序)
- 6.3 什么是Agent?ReAct模式是什么?
- 6.4 什么是Function Calling(工具调用)?它是如何实现的?
-
6.5 如何评估RAG系统的效果?
-
评估与安全
- 7.1 如何评估大模型的能力?常用的Benchmark有哪些?(MMLU, HumanEval)
- 7.2 什么是“越狱攻击”?如何防御?
-
7.3 什么是“遗忘学习”(Machine Unlearning)?在LLM中有什么用?
-
多模态与前沿
- 8.1 介绍一下CLIP模型及其原理。
- 8.2 什么是视觉-语言模型?常见的架构有哪些?(如LLaVA, Flamingo)
- 8.3 什么是MoE(混合专家模型)?它有什么优缺点?
-
8.4 介绍一下长文本技术(如NTK-aware scaling, YaRN)。
-
工程实践与杂项
- 9.1 训练LLM时,如果遇到Loss不下降,可能的原因有哪些?
- 9.2 分布式训练中,数据并行、张量并行、流水线并行的区别是什么?
- 9.3 什么是ZeRO(零冗余优化器)?分为哪几个阶段?
- 9.4 如何解决显存不足(OOM)的问题?
- 9.5 大模型的上下文长度扩展有哪些方法?
- 9.6 解释一下“灾难性遗忘”是什么?
- 9.7 什么是“思维链”?
- 9.8 介绍一下常见的开源大模型系列(如LLaMA, Qwen, Mistral)。
- 9.9 如何选择一个合适的基础模型进行微调?
- 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)旁路注入两个低秩矩阵A和B(B*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系统的效果?¶
通常拆分为两个维度评估:
-
检索质量:命中率、准确率、召回率、MRR。
-
生成质量:
- 无标注:利用LLM-as-a-Judge(如Ragas框架)评估忠实度、相关性。
- 有标注:人工评估或对比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不下降,可能的原因有哪些?¶
-
数据问题:数据质量差、标签噪声高、数据量不足。
-
模型配置:学习率过大(Loss爆炸)或过小(不收敛)、优化器参数(AdamW的beta值)不合适。
-
数值稳定性:存在NaN或Inf,需检查梯度裁剪。
-
Tokenizer对齐:特殊token(如
<pad>)在模型和损失计算中未正确忽略。
9.2 分布式训练中,数据并行、张量并行、流水线并行的区别是什么?¶
-
数据并行:每张卡存一份完整模型,数据分片,梯度同步(最常用)。
-
张量并行:将单个算子(如矩阵乘法)切分到多卡上计算,适用于单卡放不下模型。
-
流水线并行:按层切分模型,不同卡负责不同层,解决深层模型显存问题。
9.3 什么是ZeRO?分为哪几个阶段?¶
ZeRO(Zero Redundancy Optimizer)是DeepSpeed提出的显存优化策略,消除优化器状态的冗余。
-
Stage 1:分割优化器状态(如Adam动量)。
-
Stage 2:分割优化器状态 + 梯度。
-
Stage 3:分割优化器状态 + 梯度 + 模型参数(参数仅在需要时从各卡收集)。
9.4 如何解决显存不足(OOM)的问题?¶
-
减少batch size(或使用梯度累积)。
-
开启梯度检查点(以时间换空间,重计算而非存储中间激活值)。
-
使用混合精度(BF16/FP16)。
-
使用LoRA等PEFT方法。
-
使用DeepSpeed ZeRO-3。
9.5 大模型的上下文长度扩展有哪些方法?¶
-
位置编码插值(PI):线性缩放位置索引。
-
NTK-aware / YaRN:基于RoPE的频域调整。
-
长文本微调:在超长文本数据上进行少量步数的微调(通常几千步)。
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 如何选择一个合适的基础模型进行微调?¶
-
语言:优先选择在多语言(尤其是中文)上预训练充足的模型(如Qwen)。
-
许可:商用需关注开源协议(LLaMA-2允许商用,LLaMA-1不允许)。
-
结构:是否支持长文本(如RoPE结构),是否有现成的量化/微调生态。
-
基座 vs 对话版:微调特定任务通常用基座模型(Base),若做角色扮演可用对话版(Chat)继续微调。
9.10 介绍一个你熟悉的LLM应用框架。¶
-
LangChain:组件化框架,包含Chain、Agent、Memory、Retriever等模块。适合构建复杂的流水线。
-
LlamaIndex:专注于数据索引和检索,提供了强大的数据连接器(Data Connectors)和查询引擎,适合构建RAG应用。