LLM 面试真题与答案详解
一、大模型(LLMs)基础面
1. 目前主流的开源模型体系有哪些?
主流开源模型体系包括:
- Llama 系列:Meta 发布,如 Llama, Llama2, Llama3,生态最丰富。
- Qwen 系列:通义千问,阿里出品,中文能力较强。
- ChatGLM 系列:智谱 AI,适合中文场景。
- Baichuan 百川:百川智能,支持长上下文。
- Falcon:TII 发布,参数量大,推理速度快。
- Mistral/Mixtral:欧洲团队,效率高,混合专家模型(MoE)代表。
2. Prefix LM 和 Causal LM 区别是什么?
- Causal LM(因果语言模型):采用自回归方式,每个 token 只能看到前面的 token,无法看到未来的信息。适用于文本生成任务。
- Prefix LM:允许在特定前缀之后进行双向注意力机制,或者在生成时利用部分上下文信息。相比纯 Causal,它在某些填充或编辑任务中表现更好,但训练复杂度略高。
3. 涌现能力是啥原因?
涌现能力(Emergent Abilities)指模型在规模达到一定阈值后突然出现的、小模型不具备的能力(如推理、多步规划)。原因通常归结为:
- 参数规模效应:更大的参数量允许模型学习更复杂的表示。
- 数据多样性:海量数据提供了足够的模式覆盖。
- 架构特性:Transformer 的注意力机制能够捕捉长距离依赖。
4. 大模型 LLM 的架构介绍?
核心基于 Transformer Decoder-only 架构:
- Embedding Layer:将 Token 映射为向量。
- Multi-Head Self-Attention:计算词与词之间的关联权重。
- Feed-Forward Network (FFN):非线性变换,提取特征。
- Layer Normalization & Residual Connection:稳定训练梯度。
- RoPE (Rotary Positional Embedding):位置编码,增强相对位置感知。
二、大模型(LLMs)进阶面
1. Llama 输入句子长度理论上可以无限长吗?
不可以。受限于显存和注意力机制的计算复杂度(O(N^2)),以及位置编码的范围。虽然可以通过 RoPE 扩展或稀疏注意力优化延长上下文,但物理硬件限制了实际可用长度。
2. 什么是 LLMs 复读机问题?
指模型在生成长文本时,陷入循环,重复输出相同的短语或句子,导致内容无意义。
3. 为什么会出现 LLMs 复读机问题?
- 采样策略不当:Temperature 过低或 Top-P 设置不合理。
- 概率分布集中:模型对某些 token 的概率过高,形成局部最优循环。
- 训练数据偏差:训练语料中存在大量重复片段。
4. 如何缓解 LLMs 复读机问题?
- 调整解码参数:提高 Temperature,使用 Top-K/Top-P 采样。
- 惩罚机制:引入 N-gram 重复惩罚(Repetition Penalty)。
- 早停策略:检测到重复序列超过阈值时强制停止。
5. Llama 系列问题
Llama 系列主要关注开源生态、指令遵循能力及多语言能力。后续版本不断解决幻觉、安全对齐及长文本处理问题。
6. 什么情况用 Bert 模型,什么情况用 LLaMA、ChatGLM 类大模型,咋选?
- Bert:适合分类、抽取等判别式任务,输入短文本,需预训练 + 微调。
- LLaMA/ChatGLM:适合生成式任务(对话、写作、代码),具备通用知识,支持 Few-shot 或 SFT。
- 选择依据:若需理解语义分类用 BERT;若需生成内容或交互用 LLM。
7. 各个专业领域是否需要各自的大模型来服务?
是的。通用模型在垂直领域(医疗、法律)可能存在术语不准或知识缺失。通过 Continue PreTrain 或 SFT 注入领域知识可显著提升效果。
8. 如何让大模型处理更长的文本?
- 位置编码优化:如 YaRN, LongRoPE。
- 注意力机制改进:FlashAttention, Sparse Attention。
- 分块处理:Map-Reduce 或 Sliding Window。
三、大模型(LLMs)微调面
1. 如果想要在某个模型基础上做全参数微调,究竟需要多少显存?
显存需求 ≈ 模型参数量 × 精度系数 + 优化器状态 + 激活值。
- FP16 全量微调:约需 2GB 显存/10 亿参数(不含 BatchSize 开销)。
- 推荐配置:7B 模型建议至少 48GB 显存(单卡 A100/A800)。
2. 为什么 SFT 之后感觉 LLM 傻了?
- 灾难性遗忘:过度拟合指令数据,丢失了基座模型的通用推理能力。
- 数据质量差:指令数据格式混乱或逻辑错误。
- 超参数不当:Learning Rate 过大导致模型崩溃。
3. SFT 指令微调数据如何构建?
- 来源:Alpaca, OpenAssistant, 人工标注。
- 格式:JSONL,包含 instruction, input, output 字段。
- 清洗:去除低质、敏感、重复数据,确保指令多样性。
4. 领域模型 Continue PreTrain 数据选取?
选取该领域的原始语料(如论文、法规、病历),保持与预训练阶段相似的分布,避免过拟合特定格式。
5. 领域数据训练后,通用能力往往会有所下降,如何缓解模型遗忘通用能力?
- 混合数据:在领域数据中加入部分通用数据(如 Common Crawl)。
- 正则化:使用 EWC 或 LoRA 限制参数更新幅度。
- 课程学习:先训通用再训领域。
6. 领域模型 Continue PreTrain,如何让模型在预训练过程中就学习到更多的知识?
增加高质量领域语料的权重,使用 Curriculum Learning 逐步增加难度,结合知识图谱增强实体理解。
7. 进行 SFT 操作的时候,基座模型选用 Chat 还是 Base?
- Base:适合继续预训练或从头构建指令集。
- Chat:已有对话能力,适合直接微调特定风格或领域对话。
- 建议:若追求强对话能力,优先选 Chat 版基座。
8. 领域模型微调指令&数据输入格式要求?
统一模板,例如:<|user|>指令<|end|><|assistant|>回答<|end|>。确保特殊 Token 正确闭合。
9. 领域模型微调领域评测集构建?
- 构造方法:从领域文档中提取问答对,或邀请专家标注。
- 指标:准确率、BLEU、ROUGE、人工评分。
10. 领域模型微调词表扩增是不是有必要的?
视情况而定。若领域有大量未登录词(如医学缩写),需扩增词表并初始化新词向量;否则可能降低效率。
11. 如何训练自己的大模型?
- 准备算力(GPU 集群)。
- 清洗数据(去重、过滤)。
- 预训练(PreTrain)。
- 指令微调(SFT)。
- 人类反馈强化学习(RLHF/DPO)。
12. 训练中文大模型有啥经验?
- 重视中文分词与字符级编码。
- 加入古诗词、成语等文化语料。
- 注意繁简转换一致性。
13. 指令微调的好处?
提升模型遵循用户意图的能力,使其更适合对话、任务执行等下游应用。
14. 预训练和微调哪个阶段注入知识的?
- 预训练:注入通用世界知识。
- 微调:注入特定任务逻辑或领域知识。
15. 想让模型学习某个领域或行业的知识,应该预训练还是应该微调?
- 新知识:Continue PreTrain。
- 新任务/风格:SFT。
- 综合:通常先 Continue PreTrain 再 SFT。
16. 多轮对话任务如何微调模型?
在数据中将历史对话拼接为 Input,当前回复作为 Output。注意维护对话状态标记。
17. 微调后的模型出现能力劣化,灾难性遗忘是怎么回事?
模型参数被大幅更新,覆盖了原有通用表征。可通过混合数据、降低学习率或使用 PEFT 缓解。
四、大模型(LLMs)LangChain 面
1. 基于 LLM+ 向量库的文档对话基础面
核心流程:文档切片 -> 向量化存储 -> 检索相似片段 -> 组装 Prompt -> 生成回答。
2. 基于 LLM+ 向量库的文档对话优化面
- 混合检索:结合关键词搜索(BM25)与向量相似度。
- 重排序(Rerank):对召回结果进行二次打分排序。
- 查询改写:将用户 Query 转化为更利于检索的形式。
3. LLMs 存在模型幻觉问题,请问如何处理?
- 引用约束:要求模型必须基于提供的 Context 回答。
- 置信度评估:检测回答的不确定性。
- 知识库校验:外部事实核查。
4. 基于 LLM+ 向量库的文档对话思路是怎么样?
RAG(Retrieval-Augmented Generation)架构。检索增强生成,减少模型幻觉,利用私有数据。
5. 基于 LLM+ 向量库的文档对话核心技术是什么?
- Embedding 模型:将文本转为向量。
- 向量数据库:Milvus, Faiss, Chroma。
- Prompt Engineering:控制生成边界。
6. 基于 LLM+ 向量库的文档对话 prompt 模板如何构建?
示例:根据以下背景信息回答问题:{context}。问题:{question}。
7. 痛点 1: 文档切分粒度不好把控
解决方案:按语义段落切分,而非固定字符数;使用递归字符分割器。
8. 痛点 2: 在基于垂直领域表现不佳
解决方案:使用领域专用的 Embedding 模型,增加领域语料微调。
9. 痛点 3: langchain 内置问答分句效果不佳
解决方案:自定义 Splitter,或结合 NLP 工具进行句子边界识别。
10. 痛点 4: 如何尽可能召回与 query 相关的 Document
解决方案:Query Expansion(查询扩展),HyDE(假设性文档嵌入)。
11. 痛点 5: 如何让 LLM 基于 query 和 context 得到高质量的 response
解决方案:Few-Shot Prompting,CoT(思维链),明确约束输出格式。
12. 什么是 LangChain?
一个用于开发 LLM 应用的框架,提供组件连接、记忆管理、Agent 编排等功能。
13. LangChain 包含哪些核心概念?
- Models:LLM 接口。
- Prompts:提示词模板。
- Chains:任务组合。
- Memory:对话历史。
- Agents:自主决策代理。
14. 什么是 LangChain Agent?
能自主调用工具(如搜索、计算器)来完成复杂任务的模块。
15. 如何使用 LangChain?
安装库 -> 初始化 Model -> 定义 Chain -> 调用 API。
16. LangChain 支持哪些功能?
文档加载、索引、检索、生成、多模态处理、工具调用。
17. 什么是 LangChain model?
封装了不同 LLM 提供商接口的抽象层,统一输入输出格式。
18. LangChain 包含哪些特点?
模块化、生态丰富、社区活跃、易于集成。
五、大模型(LLMs)参数高效微调 (PEFT) 面
1. LoRA 篇
LoRA (Low-Rank Adaptation) 冻结原模型,训练低秩矩阵增量,大幅减少显存占用。
2. QLoRA 篇
Quantized LoRA,在 4-bit 量化基础上进行 LoRA 微调,进一步降低显存需求。
3. AdaLoRA 篇
动态调整秩的重要性,非均匀分配资源,提升微调效率。
4. LoRA 权重是否可以合入原模型?
可以。通过 merge_and_unload 将增量权重加回基座,导出完整模型。
5. LoRA 微调优点是什么?
显存占用少,训练快,不破坏基座模型,便于多任务切换。
6. LoRA 微调方法为啥能加速训练?
仅更新少量参数(<1%),梯度计算量小,收敛更快。
7. 如何在已有 LoRA 模型上继续训练?
加载原有 Adapter 权重,修改配置文件,继续迭代训练。
8. 什么是提示学习 (Prompting)?
通过设计输入文本(Prompt)引导模型输出期望结果,无需更新参数。
9. 提示学习 (Prompting) 有什么优点?
零样本/少样本学习能力,无需微调,灵活性强。
10. 提示学习 (Prompting) 有哪些方法?
- Zero/Few-Shot:直接给示例。
- CoT:思维链。
- AutoPrompt:自动搜索最佳 Prompt。
11. P-tuning v2 思路是什么?
在输入层插入可学习的连续向量(Prompt Tokens),冻结主干网络。
12. P-tuning v2 优点是什么?
比离散 Prompt 更稳定,性能接近全量微调。
13. P-tuning v2 缺点是什么?
仍需训练额外参数,推理时需处理更多 Token。
六、大模型评测面
1. 大模型怎么评测?
- 基准测试:MMLU, GSM8K, HumanEval。
- 人工评估:相关性、流畅度、安全性。
- 自动化指标:BLEU, ROUGE, Perplexity。
2. 大模型的 honest 原则是如何实现的?
通过 RLHF 中的 Reward Model 训练,鼓励诚实回答,抑制编造行为。
3. 模型如何判断回答的知识是训练过的已知的知识?
难以精确判断。通常通过置信度分数或 RAG 检索匹配度来间接推断。
七、大模型(LLMs)强化学习面
1. 奖励模型需要和基础模型一致吗?
通常需要结构一致,但可以是轻量版。RM 负责打分,Base 负责生成。
2. RLHF 在实践过程中存在哪些不足?
- 成本高:需要大量人工标注偏好数据。
- 不稳定:PPO 训练容易发散。
- 目标偏移:模型可能学会讨好 RM 而非真正有用。
3. 如何解决人工产生的偏好数据集成本较高很难量产问题?
- 合成数据:利用模型自身生成偏好对(DPO)。
- 主动学习:只标注不确定样本。
4. 如何解决三个阶段的训练过程较长,更新迭代较慢问题?
- 端到端优化:如 DPO 直接优化策略,跳过 RM 训练。
- 并行训练:分布式加速。
5. 如何解决 PPO 的训练过程同时存在 4 个模型对计算资源的要求较高问题?
- 共享权重:Actor/Critic 共享部分参数。
- 离线 RL:使用静态数据集训练,减少在线交互。
- 量化:使用 FP8 或 INT8 推理。