跳到主要内容大模型算法工程师核心面试题及参考答案 | 极客日志PythonAI算法
大模型算法工程师核心面试题及参考答案
涵盖大模型基础架构、微调技术、推理优化、LangChain 应用及内部原理等核心面试题。内容涉及主流开源模型体系、Prefix/Causal LM 区别、涌现能力成因、LoRA/QLoRA 参数高效微调方法、RAG 文档对话构建、幻觉处理策略、位置编码机制(RoPE/ALiBi)、分词器(BPE/SentencePiece)及激活函数选择等关键技术点,旨在帮助算法工程师系统掌握大模型面试考点与工程实践方案。
DebugKing22 浏览 大模型算法工程师核心面试题及参考答案
一、大模型基础面
1. 目前主流的开源模型体系有哪些?
目前主流的开源大模型体系主要包括:
- LLaMA 系列:Meta 发布,包括 LLaMA、LLaMA2、LLaMA3,基于 Transformer Decoder 架构,生态丰富。
- ChatGLM 系列:智谱 AI 发布,支持中英双语,架构为 Prefix Decoder,适合对话场景。
- Qwen 系列:阿里云通义千问,包含 Qwen、Qwen1.5、Qwen2 等,中文能力较强。
- Baichuan 系列:百川智能发布,注重多语言能力和长文本处理。
- Falcon 系列:TII 发布,强调推理速度和效率。
- Mistral 系列:法国公司 Mistral AI 发布,以高效和性能著称。
2. Prefix LM 和 Causal LM 区别是什么?
- Causal LM (因果语言模型):即标准的自回归模型(如 GPT),只能看到当前 token 之前的信息,不能看到未来的 token。训练目标是预测下一个词。适用于文本生成任务。
- Prefix LM (前缀语言模型):允许模型在生成时访问部分上下文之外的信息,或者在特定位置进行掩码。例如 BERT 是双向的,而某些 Prefix LM 变体允许在特定分割点之后关注之前内容但限制未来。在 LLM 中,通常指允许模型在生成过程中利用特定的前缀提示(Prompt)来引导生成,或者像 ChatGLM 那样使用 Prefix Encoder 结构。
3. 涌现能力是啥原因?
涌现能力(Emergent Abilities)是指当模型规模(参数量、数据量、计算量)达到一定阈值后,突然表现出的小模型不具备的能力(如推理、复杂指令遵循)。原因尚不完全明确,主流观点认为:
- 规模效应:更大的模型容量能拟合更复杂的函数关系。
- 数据多样性:海量数据提供了足够的模式覆盖。
- 架构特性:Transformer 的注意力机制使得长距离依赖建模成为可能。
4. 大模型 LLM 的架构介绍?
主流 LLM 基于 Transformer Decoder-only 架构:
- 输入层:Token Embedding + Positional Encoding。
- 网络层:多层 Transformer Block,每层包含 Self-Attention 和 Feed-Forward Network (FFN)。
- 归一化:LayerNorm 或 RMSNorm。
- 输出层:线性投影到 Vocabulary 空间,Softmax 概率分布。
- 优化:通常结合 Flash Attention、RoPE 位置编码等技术提升效率。
二、大模型进阶面
1. Llama 输入句子长度理论上可以无限长吗?
理论上 Transformer 可以处理任意长度,但实际上受限于:
- 显存限制:Attention 矩阵大小为 $O(N^2)$,序列越长显存占用越高。
- 位置编码范围:预训练时的最大上下文窗口限制了外推能力。
- 计算资源:长序列推理时间显著增加。
实际应用中需通过切片、滑动窗口或长上下文技术(如 RoPE 插值)扩展。
2. 什么是 LLMs 复读机问题?
指模型在生成长文本时,陷入循环重复相同的短语或句子的现象。这会导致输出质量下降,无法提供有效信息。
3. 为什么会出现 LLMs 复读机问题?
- 数据偏差:训练数据中存在大量重复模式。
- 训练目标:自监督学习倾向于预测高频词。
- 缺乏多样性:训练语料语境单一。
- 采样策略:贪婪搜索(Greedy Search)容易陷入局部最优。
4. 如何缓解 LLMs 复读机问题?
- 多样性训练:使用多样化语料。
- 引入噪声:采样时加入随机性(Temperature > 0)。
- 调整参数:提高 Temperature,降低 Top-P 阈值。
- Beam Search 调整:控制 Beam Size。
- 后处理:检测并去除重复片段。
5. 什么情况用 Bert 模型,什么情况用 LLaMA、ChatGLM 类大模型,咋选?
- Bert:适用于 NLU 任务(分类、抽取、相似度),需要理解上下文但不需要生成。参数量较小,推理快。
- LLaMA/ChatGLM:适用于 NLG 任务(生成、对话、摘要)。ChatGLM 更适合中文对话,LLaMA 英文能力强。适合需要创造性输出的场景。
- 选择依据:任务类型(理解 vs 生成)、语言需求(中文 vs 英文)、资源限制(显存大小)。
6. 各个专业领域是否需要各自的大模型来服务?
- 领域知识:医疗、法律等领域术语和逻辑特殊,通用模型难以精准掌握。
- 风格差异:不同行业文档格式和语言习惯不同。
- 数据安全:垂直领域模型可私有化部署,保障数据隐私。
- 性能优化:专用模型在特定任务上精度更高。
7. 如何让大模型处理更长的文本?
- 分块处理:将长文切分为片段,重叠处理保持上下文连贯。
- 层次建模:段落 -> 句子 -> Token 的多级处理。
- 注意力优化:使用稀疏注意力、线性注意力机制。
- 位置编码扩展:采用 NTK-aware RoPE 或 ALiBi 支持外推。
- 压缩技术:使用 KV Cache 压缩或 Prompt Compression。
三、大模型微调面
1. 如果想要在某个模型基础上做全参数微调,究竟需要多少显存?
全参数微调显存消耗 = 模型权重 + 梯度 + 优化器状态 + 激活值。
- 公式估算:FP16 权重占 2 字节/参数,Adam 优化器需 4 倍权重显存(动量 + 方差),梯度 2 字节。
- 经验值:7B 模型全量微调至少需要 48GB+ 显存(单卡 A100 80G 较稳妥),13B+ 模型通常需要多卡分布式训练。
2. 为什么 SFT 之后感觉 LLM 傻了?
- 灾难性遗忘:微调数据过于单一,覆盖了通用知识。
- 过拟合:在少量数据上过拟合,泛化能力下降。
- 数据质量差:指令格式混乱或答案错误。
- 学习率过大:破坏了预训练学到的通用表示。
3. SFT 指令微调数据如何构建?
- 格式:
[Instruction, Input, Output] 三元组。
- 来源:Alpaca 数据集、Self-Instruct 生成、人工标注、开源社区整理。
- 清洗:去重、过滤低质样本、统一指令模板。
- 增强:数据增强(改写、翻译、混合)。
4. 领域模型 Continue PreTrain 数据选取?
- 相关性:优先选择与目标领域高度相关的公开语料(如医学论文、法律条文)。
- 质量:确保文本干净、无乱码、版权合规。
- 比例:通用语料与领域语料混合,避免完全遗忘通用能力。
5. 领域数据训练后,通用能力往往会有所下降,如何缓解模型遗忘通用能力?
- 混合训练:在领域数据中加入一定比例的通用数据(如 CommonCrawl)。
- 正则化:使用 EWC 或 LoRA 等参数高效方法减少权重扰动。
- 课程学习:先训通用数据,再训领域数据。
6. 领域模型 Continue PreTrain,如何让模型在预训练过程中就学习到更多的知识?
- 高质量语料:筛选高信息密度的文本。
- 多模态融合:结合图文数据增强理解。
- 持续学习:分阶段注入新知识,避免一次性覆盖。
7. 进行 SFT 操作的时候,基座模型选用 Chat 还是 Base?
- Base 模型:适合需要从头构建指令遵循能力的场景,灵活性高。
- Chat 模型:已具备对话能力,SFT 成本更低,收敛更快,适合直接优化对话风格。
- 建议:若已有 Chat 版基座且效果尚可,优先选 Chat;若需深度定制行为,可选 Base。
8. 领域模型微调指令&数据输入格式要求?
- 标准化:统一使用
User: ... \n Assistant: ... 或自定义模板。
- 完整性:Input 为空时可不填,Output 必须清晰准确。
- 边界符:使用
<|start|>, <|end|> 等标记区分角色。
9. 领域模型微调领域评测集构建?
- 测试集:独立于训练集的真实业务问题。
- 指标:准确率、BLEU、ROUGE、人工评分(相关性、安全性)。
- 难度分级:简单问答、复杂推理、多轮对话。
10. 领域模型词表扩增是不是有必要的?
- 必要性:若领域包含大量新术语(如生物化学分子式),标准词表 OOV 率高,需扩增。
- 代价:增加 Embedding 矩阵大小,影响推理速度。
- 建议:优先尝试子词合并(Subword),仅在必要且性能受损明显时扩增。
11. 如何训练自己的大模型?
- 准备数据:清洗、格式化、划分。
- 选择基座:下载开源权重(如 LLaMA、Qwen)。
- 配置环境:PyTorch, DeepSpeed, HuggingFace Transformers。
- 启动训练:全量或 PEFT 微调,监控 Loss。
- 评估部署:验证效果,量化导出。
12. 训练中文大模型有啥经验?
- 语料:重点收集高质量中文互联网文本、百科、书籍。
- Tokenizer:使用针对中文优化的词表(如 SentencePiece 中文模式)。
- 位置编码:适配中文语序特点。
- 评测:侧重中文阅读理解、写作能力。
13. 指令微调的好处?
- 对齐人类意图:使模型更懂用户指令。
- 提升可控性:规范输出格式和内容方向。
- 减少幻觉:通过约束性指令降低胡编乱造。
14. 预训练和微调哪个阶段注入知识的?
- 预训练:注入通用世界知识和语言规律。
- 微调:注入特定任务逻辑和领域知识。
15. 想让模型学习某个领域或行业的知识,是应该预训练还是应该微调?
- 少量数据:微调(SFT/PEFT)。
- 海量数据:继续预训练(Continue Pre-training)效果更好,但成本高。
- 建议:通常先微调,若效果不足再考虑继续预训练。
16. 多轮对话任务如何微调模型?
- 数据构造:将历史对话作为 Input,当前回复作为 Output。
- 模板:保留对话历史标记(History)。
- 记忆机制:确保模型能记住上下文关键信息。
17. 微调后的模型出现能力劣化,灾难性遗忘是怎么回事?
- 原因:权重更新幅度过大,覆盖了预训练特征。
- 解决:降低学习率,使用 LoRA,混合通用数据。
18. 微调模型需要多大显存?
- 全量:参考第 1 点,7B 约 48GB+。
- LoRA:7B 模型约 16GB-24GB(取决于 Batch Size)。
- QLoRA:4-bit 量化,7B 模型约 10GB-16GB。
19. 大模型 LLM 进行 SFT 操作的时候在学习什么?
- 指令遵循:学习如何将自然语言转化为正确响应。
- 格式规范:学习输出结构(如 JSON、列表)。
- 领域知识:学习特定领域的回答逻辑。
20. 预训练和 SFT 操作有什么不同?
- 目标:预训练预测下一词(无监督),SFT 匹配指令 - 回答对(有监督)。
- 数据:预训练海量文本,SFT 精选指令集。
- 损失函数:预训练 CrossEntropy,SFT 同样但关注指令对齐。
21. 样本量规模增大,训练出现 OOM 错
- 原因:Batch Size 过大或序列过长导致显存溢出。
- 解决:梯度累积(Gradient Accumulation)、减小 Batch Size、使用 ZeRO 优化。
22. 大模型 LLM 进行 SFT 如何对样本进行优化?
- 去重:移除重复指令。
- 清洗:剔除低质、错误答案。
- 平衡:调整不同类别样本比例。
- 增强:同义改写增加多样性。
23. 模型参数迭代实验
- A/B Test:对比不同超参数下的效果。
- 消融实验:验证各组件(如 LoRA rank)贡献。
- 监控:记录 Loss 曲线、验证集指标。
四、大模型 LangChain 面
1. 基于 LLM+ 向量库的文档对话基础面
- 流程:文档加载 -> 切分 -> Embedding -> 存入向量库 -> 检索相似片段 -> 组装 Prompt -> 生成回答。
- 核心:Retrieval Augmented Generation (RAG)。
2. 基于 LLM+ 向量库的文档对话优化面
- 重排序(Rerank):对检索结果二次打分,提升相关性。
- 混合检索:结合关键词搜索(BM25)与向量搜索。
- 查询重写:将用户问题改写为更适合检索的形式。
3. 基于 LLM+ 向量库的文档对话工程示例面
- 框架:LangChain + Chroma/Milvus + OpenAI/本地模型。
- 代码:定义 Loader, Splitter, VectorStore, Retriever, Chain。
4. 痛点 1:文档切分粒度不好把控
- 方案:按语义切分(RecursiveCharacterTextSplitter),设置合适的 Chunk Size 和 Overlap。
5. 痛点 2:在基于垂直领域表现不佳
- 方案:使用领域专用的 Embedding 模型,优化索引结构。
6. 痛点 3:LangChain 内置问答分句效果不佳
- 方案:自定义 Prompt 模板,引入 Few-Shot 示例。
7. 痛点 4:如何尽可能召回与 query 相关的 Document
- 方案:多路召回,增加 Top-K,使用 Query Expansion。
8. 痛点 5:如何让 LLM 基于 query 和 context 得到高质量的 response
- 方案:优化 System Prompt,要求引用原文,禁止幻觉。
9. 什么是 LangChain?
- 定义:用于构建 LLM 应用的开源框架,提供组件化工具链。
10. LangChain 包含哪些核心概念?
- Models, Prompts, Memory, Chains, Agents, Tools, Indexes。
11. 什么是 LangChain Agent?
- 定义:能够自主决定调用工具(Tools)来完成任务的智能体。
12. LangChain 存在哪些问题及方法方案?
- 问题:令牌使用低效、概念混淆、行为不一致。
- 方案:优化 Prompt 模板,简化架构,使用替代方案(如 LlamaIndex)。
13. LangChain 替代方案?
- LlamaIndex:专注于数据索引和检索。
- Haystack:企业级 RAG 框架。
- Semantic Kernel:微软出品。
五、大模型参数高效微调 (PEFT) 面
1. LoRA 篇
- 原理:冻结预训练权重,训练低秩分解矩阵(A, B)加在原权重旁路。
- 优点:显存占用少,训练快,不改变原模型结构。
- 适用:大多数下游任务。
2. QLoRA 篇
- 原理:在 LoRA 基础上引入 4-bit 量化(NF4),进一步降低显存。
- 特点:几乎无损精度,可在消费级显卡上微调大模型。
3. AdaLoRA 篇
4. LoRA 权重是否可以合入原模型?
- 可以:训练完成后,将 LoRA 权重叠加回基座模型,生成完整权重文件。
5. LoRA 微调优点是什么?
- 资源节约:显存需求降低 75% 以上。
- 快速部署:无需重新训练全量参数。
- 模块化:不同任务可切换不同 LoRA 适配器。
6. 为什么需要 PEFT?
- 成本:全量微调成本过高,PEFT 降低门槛。
- 存储:保存多个 Adapter 比保存多个全量模型更省空间。
7. 介绍一下 PEFT?
- 定义:Parameter-Efficient Fine-Tuning,仅更新少量参数。
- 方法:LoRA, P-Tuning, Adapter, Prefix-tuning。
8. Peft 和全量微调区别?
- 全量:更新所有权重,效果好但贵。
- PEFT:只更新小部分,性价比高,适合资源受限场景。
9. 多种不同的高效微调方法对比
- LoRA:最流行,稳定。
- P-Tuning:连续提示,适合小模型。
- Adapter:插入额外模块,兼容性好。
10. 能不能总结一下各种参数高效微调方法?
- 总结:根据显存预算选择。80G 显存可用全量,24G 以下推荐 QLoRA/LoRA。
六、大模型推理面
1. 为什么大模型推理时显存涨的那么多还一直占着?
- KV Cache:为了加速自回归生成,缓存历史 Key/Value 矩阵,随序列增长线性增加。
- 优化:使用 vLLM 等框架管理内存,及时释放。
2. 大模型在 gpu 和 cpu 上推理速度如何?
- GPU:速度快,适合实时交互。
- CPU:速度慢,延迟高,适合离线批处理。
3. 推理速度上,int8 和 fp16 比起来怎么样?
- int8:精度略降,速度显著提升,显存减半。
- fp16:精度高,速度适中。
4. 大模型有推理能力吗?
- 定义:指模型进行逻辑推导、数学计算等能力。
- 现状:大模型擅长模式匹配,复杂推理仍需辅助(如 CoT)。
5. 大模型生成时的参数怎么设置?
- Temperature:控制随机性(0.7 左右)。
- Top-P:核采样阈值(0.9)。
- Max Tokens:限制最大长度。
6. 有哪些省内存的大语言模型训练/微调/推理方法?
- 量化:INT8, INT4, FP8。
- 卸载:CPU Offload。
- 并行:Tensor Parallelism, Pipeline Parallelism。
7. 如何让大模型输出合规化
- System Prompt:设定安全准则。
- 过滤层:后处理敏感词。
- RLHF:通过奖励模型对齐价值观。
七、大模型评测面
1. 大模型怎么评测?
- 基准测试:MMLU, GSM8K, HumanEval。
- 人工评估:专家打分一致性、有用性。
- 自动化:BLEU, ROUGE, Perplexity。
2. 大模型的 honest 原则是如何实现的?
- 训练:在 RLHF 阶段加入诚实性奖励。
- 提示:要求模型承认不知道的内容。
3. 模型如何判断回答的知识是训练过的已知的知识?
- 置信度:通过概率分布判断不确定性。
- 外部检索:结合 RAG 确认信息来源。
八、大模型强化学习面
1. 奖励模型需要和基础模型一致吗?
2. RLHF 在实践过程中存在哪些不足?
- 成本高:需要人工标注偏好数据。
- 不稳定:PPO 训练容易崩溃。
- 维度灾难:奖励模型可能过拟合。
3. 如何解决人工产生的偏好数据集成本较高,很难量产问题?
- 合成数据:使用大模型生成偏好对。
- 自动标注:利用规则或强模型辅助。
4. 如何解决三个阶段的训练过程较长,更新迭代较慢问题?
- 并行化:多卡训练 RM 和 PPO。
- 简化流程:直接使用 DPO(Direct Preference Optimization)替代 PPO。
5. 如何解决 PPO 的训练过程同时存在 4 个模型对计算资源的要求较高问题?
- 共享权重:Actor/Critic 共享部分参数。
- 梯度检查点:减少激活值显存占用。
九、大模型软硬件配置面
1. 训练集面
- SFT 格式:JSONL,包含 instruction/input/output。
- RM 格式:Pairwise,包含 chosen/rejected。
- PPO 格式:Query + Response + Reward。
2. 找数据集哪里找?
- HuggingFace Datasets。
- GitHub 开源项目。
- 官方社区。
3. 微调需要多少条数据?
- LoRA:几百到几千条即可见效。
- 全量:通常需要数万条以上。
十、大模型内部原理篇
1. Tokenizer 篇
- BPE:Byte-Pair Encoding,合并高频子词。
- WordPiece:Google 提出,基于概率合并。
- SentencePiece:无空格依赖,支持 Unicode。
- 对比:BPE 效率高,WordPiece 鲁棒性强,SentencePiece 跨语言好。
2. Layer Normalization 篇
- LN:LayerNorm,对每个样本单独归一化。
- RMS Norm:均方根归一化,去掉均值,速度更快(LLaMA 使用)。
- Deep Norm:深层网络归一化,帮助训练更深模型。
- 区别:RMS Norm 计算量更小,Deep Norm 稳定性更好。
3. 激活函数篇
- GeLU:高斯误差线性单元,平滑非线性。
- Swish:门控激活函数。
- GLU:Gated Linear Unit,增加表达能力。
- 趋势:现代模型多用 SwiGLU 或 GeLU。
4. 位置编码篇
- RoPE:旋转位置编码,支持外推,相对位置感知。
- ALiBi:Attention with Linear Biases,无需位置嵌入,线性偏置。
- 绝对位置编码:传统 Learnable Embedding。
- 应用:LLaMA 用 RoPE,Falcon 用 ALiBi。
5. 长度外推问题篇
- 问题:训练时最大长度外的序列效果差。
- 解决:NTK-aware Scaling, YaRN, ALiBi。
6. 显存问题面
- 优化:Flash Attention, Gradient Checkpointing, Quantization。
7. 分布式训练面
- 策略:Data Parallel, Tensor Parallel, Pipeline Parallel。
- 框架:DeepSpeed, Megatron-LM。
8. Agent 面
- 注入知识:通过 RAG 或知识库挂载。
- 快速体验:使用 API 或云端 Notebook。
注:本文档整理自行业面试常见考点,旨在提供技术参考。具体实施请结合最新官方文档。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- Gemini 图片去水印
基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online