大模型面试常见问题全解析
1. RAG 技术体系的总体思路
检索增强生成(Retrieval-Augmented Generation, RAG)的核心流程如下:
- 数据预处理:清洗原始数据,去除噪声。
- 分块(Chunking):这一步骤非常关键,直接决定了检索的粒度和模型效果。常见的策略包括固定长度分块、基于语义的分块等。
- 文本向量化:将文本块转换为向量表示。
- Query 向量化:将用户查询转换为向量。
- 向量检索:在向量数据库中查找最相似的 Top-K 文档。
- 重排(Rerank):使用更精细的模型对检索结果进行排序优化。
- 输入 LLM:将 Query 和检索到的内容拼接作为 Prompt 输入大语言模型。
- 输出:模型生成最终回答。
2. 使用外挂知识库主要为了解决什么问题
引入外部知识库主要为了克服纯参数化模型的局限性:
- 克服遗忘问题:解决模型训练后知识截止的问题。
- 提升准确性与权威性:确保回答基于事实而非幻觉。
- 覆盖小众领域:通用模型未充分训练的垂直领域知识。
- 提高可控性与可解释性:通过引用来源增加可信度,便于审计。
3. 如何评价 RAG 项目效果的好坏
针对检索环节的评估
- MMR (Maximal Marginal Relevance):衡量相关性和多样性。
- Hits Rate:前 K 项中包含正确信息的比例。
- NDCG (Normalized Discounted Cumulative Gain):考虑排名权重的评估指标。
针对生成环节的评估
- 非量化指标:完整性、正确性、相关性、流畅度。
- 量化指标:Rouge-L、BLEU 等自动评分工具。
4. 大模型的幻觉问题、复读机问题是什么
- 幻觉问题:模型生成的内容与事实不符,或者不忠实于提供的上下文信息,产生看似合理但错误的陈述。
- 复读机问题:模型在生成长文本时陷入循环,重复生成相同的短语或句子。
5. 针对幻觉和复读机问题的解决办法
针对幻觉问题
- 引入高质量的外挂知识库。
- 加入纠偏规则(如约束输出格式)。
- 限制输出长度,减少发散风险。
- 使用思维链(CoT)提示工程引导逻辑推理。
针对复读机问题
- 丰富数据集的多样性,预处理时过滤重复无意义的文本。
- 使用同义词替换等方法做数据增强。
- 调整温度参数(Temperature),增加随机性。
- 实施后处理与过滤机制,检测并终止重复序列。
6. 出现幻觉和复读机问题的原因分析
幻觉原因
主要分为两类:
- 生成结果与数据源不一致:训练数据与源数据未对齐,编码器理解能力缺陷,或解码器策略错误。
- 超出认知范围:用户问题不在语言模型的知识分布内,模型被迫编造。
复读机原因
- 数据质量不高,存在大量单一、重复文本。
- 文本过长导致梯度消失或注意力分散。当条件文本过长时,模型输出的短文本可能被淹没,若使用 Greedy Search 只选概率最大的 Token,极易陷入局部最优循环。
7. 当前主流的开源大模型及架构
目前开源生态建设最好的是 Meta 的 LLaMA 系列。其基于 Transformer 架构,主要改进包括:
- RMSNorm:前置归一化,替代 LayerNorm,提升训练稳定性(受 GPT-3 启发)。
- SwiGLU 激活函数:替换 ReLU,提升性能(受 PaLM 启发)。
- 旋转位置编码(RoPE):从绝对位置嵌入改为相对/旋转嵌入(受 GPT-Neo 启发)。
- 高效 Attention:使用 Causal Multi-head Attention 的高效实现以减少显存占用。
8. SFT 微调方法有哪些
- 全微调(Full Fine-tuning):更新所有参数,效果最好但资源消耗大。
- Adapter Tuning:插入小型适配器模块,冻结主模型。
- Prefix Tuning / Prompt Tuning:在输入层添加可学习的向量,不更新权重。
- P-Tuning v1/v2:连续提示微调。
- LoRA (Low-Rank Adaptation):低秩矩阵分解,主流高效微调方案。
- RLHF:基于人类反馈的强化学习。
*注:SFT 时,学习率通常设置为预训练阶段的 10%,效果更佳。
9. 什么是 LoRA 微调
LoRA 通过在原始预训练语言模型(PLM)旁路增加两个低秩矩阵 A 和 B 来模拟内在秩(Intrinsic Rank)。
- 原理:$W' = W + BA$,其中 $A \in R^{r \times d}$, $B \in R^{d \times r}$,且 $r \ll d$。
- 初始化:A 用随机高斯分布初始化,B 用零矩阵初始化,保证训练初期旁路为 0,不影响原模型。
- 优势:训练时固定 PLM 参数,仅训练 A 和 B,大幅降低显存需求和计算量。
import torch.nn as nn
class LoRALayer(nn.Module):
def __init__(self, in_features, out_features, rank):
super().__init__()
self.lora_A = nn.Linear(in_features, rank, bias=False)
self.lora_B = nn.Linear(rank, out_features, bias=False)
10. RAG 检索阶段常见的向量检索模型
- ANN 算法:近似最近邻搜索,平衡速度与精度。
- 乘积向量(Product Quantization):压缩向量以加速检索。
- 暴力搜索(Brute Force):适用于小规模数据,保证精确。
- HNSWlib:分层导航小世界图,高性能 ANN 库。
- KD 树:适用于低维空间的数据结构。
11. 通用 RAG 的改进点
- Query 侧优化:纠错、改写(Query Rewriting)、规范化、扩展(HyDE)。
- 索引优化:对向量数据库做层次索引,提高检索效率和精度。
- 模型微调:针对垂直领域微调 LLM,结合知识库提升专业性。
- 后处理:对最终输出做合理性校验,过滤不合理 Case。
12. 什么是 LangChain
LangChain 是为大型语言模型提供的全新搭建和集成框架。它简化了复杂的技术任务,让开发者能够像搭积木一样构建应用。类似于神经网络开发中 TensorFlow/PyTorch 的地位,它提供了组件化的接口来处理 Prompt、记忆、检索和工具调用。
13. LangChain 的常用模块
- Document Loaders:文档加载器(PDF, TXT, Web 等)。
- Text Splitters:文本分块策略。
- Embeddings:向量化服务(如 HuggingFace)。
- Vector Stores:向量存储后端(Chroma, FAISS, Milvus)。
- Chains:编排逻辑,如
RetrievalQA 检索问答链。
14. SFT 和 RLHF 优劣对比
- SFT (Supervised Fine-Tuning):
- 优点:收敛快,成本低,能规范输出格式。
- 缺点:依赖标注数据质量,难以捕捉人类偏好细微差别。
- RLHF (Reinforcement Learning from Human Feedback):
- 优点:能更好地对齐人类价值观,提升回答的安全性和有用性。
- 缺点:训练不稳定,计算成本极高,需要 Reward Model。
15. 详细介绍一下 RLHF
RLHF 通常包含三个阶段:
- SFT 阶段:监督微调,让模型学会遵循指令。
- Reward Model 训练:收集人类对不同回答的偏好数据,训练奖励模型打分。
- PPO 优化:使用近端策略优化(PPO)算法,根据奖励模型反馈更新策略模型。
这一过程使得模型不仅'会说',而且'说得符合人类喜好'。
16. 大模型训练 OOM 问题的性能提升 Trick
- 梯度累积:模拟大 Batch Size,减少通信频率。
- 混合精度训练:使用 FP16/BF16 减少显存占用。
- ZeRO 优化:DeepSpeed ZeRO 系列优化显存管理。
- 分布式训练:多卡并行,分摊负载。
- 减小批量大小:牺牲部分收敛速度换取可运行性。
- 数据处理优化:使用数据流水线并行加载,减少内存驻留。
17. LLaMA 模型输入句子理论上可以无限长吗?
不可以。
- 计算资源限制:Attention 复杂度随序列长度平方增长。
- 训练阶段:长句子易导致梯度消失或爆炸(连乘形式损失函数)。
- 推理阶段:序列越长,预测错误率累积越高,显存压力越大。
18. 如何让大模型处理更长的文本?
- 分块处理:将长文本切分,重叠窗口保证连贯性。
- 架构升级:增加参数量,优化架构(如稀疏 Attention)。
- 位置编码优化:使用 RoPE 等支持外推的位置编码。
19. 大模型推理时,显存中有哪几部分数据?
- 模型参数:权重本身。
- 输入数据:Prompt 的 Embedding。
- 计算中间结果:KV Cache 是关键部分。
- 内存管理策略:部分框架采用延迟释放策略,保留显存以备后续分配,提高效率但占用持续。
20. 介绍下 ChatGLM
ChatGLM 基座 GLM 兼具 Encoder 和 Decoder 能力。
- Mask 方式:
[mask]:BERT 形式,随机 Mask 短 Span。
[gmask]:GPT 形式,Mask 末尾长 Span,用于生成任务。
- 内部结构变化:
- 位置编码:转为旋转位置编码。
- 激活函数:GeLU -> GLU -> SwiGLU (ChatGLM2)。
- Normalization:LayerNorm -> DeepNorm -> RMSNorm。
- ChatGLM 2.0 新特性:
- FlashAttention:IO 加速。
- Multi-Query Attention:共享 KV 头,降低显存。
21. 介绍 GLU 激活函数和 SwiGLU 激活函数
- GLU (Gated Linear Unit):通过门控机制过滤信息,公式通常为 $x \otimes \sigma(Wx)$,有助于长距离建模。
- SwiGLU:结合 Swish 激活函数与 GLU,即 $x \otimes \text{Swish}(Wx)$,进一步提升了表达能力和泛化性。
22. LLaMA 1 与 LLaMA 2 的异同
- 数据:Llama 2 为 2.0T tokens,Llama 1 为 1.4T。
- 上下文:Llama 1 为 2k,Llama 2 为 4k。
- 架构细节:
- 位置编码:均使用 RoPE。
- Normalization:Llama 1 用 LayerNorm,Llama 2 用 RMSNorm。
- 激活函数:均采用 SwiGLU。
23. 模型在训练和推理时各占用显存的多少?
- 训练:约占用模型参数量的 16 倍(含优化器状态、梯度、模型本身,FP16 为例)。
- 推理:约占用模型参数量的 2 倍(FP16 权重占 2 字节/参数,加上 KV Cache)。
24. 详细说说 DeepSpeed 的机制
DeepSpeed 是一种高效的分布式训练框架,核心在于数据并行与显存优化。
Ring All-Reduce
传统 Parameter Server 模式存在单点瓶颈。Ring All-Reduce 将通信压力平摊到各个 GPU,节点间并行通信,效率更高。
ZeRO 优化阶段
- Zero1:分割 Adam 参数,Forward 无影响,Gradient 需 All-Reduce。
- Zero2:分割 Adam 和 Gradient,减少通信量。
- Zero3:分割参数、Adam 和 Gradient,Forward 时需 All-Gather 参数,Backward 时丢弃不属于本卡的参数。通讯开销约为 Zero2 的 1.5 倍,但显存节省可达 120 倍。
ZeRO-Offload
基于 Zero2,将 Adam 和 Gradient 卸载到 CPU 内存,利用 CPU 线程计算,进一步释放 GPU 显存。
25. 什么是混合精度训练
混合精度训练结合 FP16 和 FP32 的优势:
- FP16:位宽减半,显存占用少,计算速度快(Tensor Core 支持)。
- FP32:精度高,防止溢出。
关键技术点:
- 权重备份(Weight Backup):维护一份 FP32 的主权重副本。
- 损失放大(Loss Scaling):放大 Loss 值,避免 FP16 下梯度过小被舍入为零。
- 精度累加(Precision Accumulated):累加梯度时使用 FP32。
26. 什么是 Prefix LM 和 Casual LM
- Prefix LM:输入双向注意力(可见过去和未来),输出单向注意力。适用于掩码语言建模(如 ChatGLM, U-PaLM)。
- Casual LM:严格自回归,从左到右单向注意力。适用于文本生成(如 LLaMA, Qwen)。
27. MHA 后续的计算优化工作
- KV Cache:缓存 Key 和 Value 矩阵,避免自回归过程中重复计算历史 Token。
- MQA (Multi-Query Attention):所有 Head 共享同一组 KV,极大减少显存占用。
- GQA (Grouped-Query Attention):Head 分组共享 KV,平衡 MQA 和 MHA 的性能与显存。
- FlashAttention:将 Q、K、V 切块,利用 SRAM 减少 HBM IO 访问,解决 IO 瓶颈。
28. Attention 几种常见的计算方式
- Self-Attention:序列内部 token 之间的交互。
- Cross-Attention:不同序列间的交互(如 Encoder-Decoder)。
- DIN Attention:Deep Interest Network 中的 Attention,不使用 Softmax 归一化,保留原始信号强度,利于捕捉局部兴趣。
总结
大模型技术栈涉及从底层架构优化到上层应用开发的完整链路。掌握 RAG 检索增强、LoRA 高效微调、DeepSpeed 分布式训练以及各类 Attention 变体,是应对当前 AI 工程挑战的关键。随着硬件算力的提升和算法的演进,长上下文、多模态及 Agent 化将是未来的主要发展方向。