大模型常考面试题总结(含答案)¶
来源 PDF:
大模型常考面试题总结(含答案).pdf
主题:RAG / 文档问答
页数:10
字符数:6564
索引片段数:17
摘要¶
推荐收藏!大模型常考面试题总结(含答案) 1.RAG 技术体系的总体思路 数据预处理->分块(这一步骤很关键,有时候也决定了模型的效果)->文本向量化->query 向量化->向量检索-> 重排->query+检索内容输入 LLM->输出 2.使用外挂知识库主要为了解决什么问题 克服遗忘问题 提升回答的准确性、权威性、时效性 解决通用模型针对一些小众领域没有涉猎的问题 提高可控性和可解释性,提高模型的可信度和安全性 3. 如何评价 RAG 项目效果的好坏 针对检索环节的评估: MMR 平均倒排率:查
代表性原文片段¶
片段 1¶
推荐收藏!大模型常考面试题总结(含答案) 1.RAG 技术体系的总体思路 数据预处理->分块(这一步骤很关键,有时候也决定了模型的效果)->文本向量化->query 向量化->向量检索-> 重排->query+检索内容输入 LLM->输出 2.使用外挂知识库主要为了解决什么问题 克服遗忘问题 提升回答的准确性、权威性、时效性 解决通用模型针对一些小众领域没有涉猎的问题 提高可控性和可解释性,提高模型的可信度和安全性 3. 如何评价 RAG 项目效果的好坏 针对检索环节的评估: MMR 平均倒排率:查询(或推荐请求)的排名倒数 Hits Rate 命中率:前 k 项中,包含正确信息的项的数目占比 NDCG 针对生成环节的评估: 非量化:完整性、正确性、相关性 量化:Rouge-L 4. 大模型的幻觉问题、复读机问题是什么 幻觉问题:即生成的内容是无意义的或不忠实于提供的源内容
复读机问题:重复生成某些话 5. 针对问题 4,有没有什么解决办法 针对幻觉问题:引入外挂知识库,加入一些纠偏规则,限制输出长度等 针对复读机问题: 丰富数据集的多样性,预处理时尽量过滤重复无意义的文本
片段 2¶
些话 5. 针对问题 4,有没有什么解决办法 针对幻觉问题:引入外挂知识库,加入一些纠偏规则,限制输出长度等 针对复读机问题: 丰富数据集的多样性,预处理时尽量过滤重复无意义的文本 同义词替换等做数据增强 温度参数调整 后处理与过滤 6. 出现问题 4 的原因有哪些 针对幻觉问题:幻觉问题主要分为两大类,一类是生成结果与数据源不一致,自相矛盾。另一类是用户问题超出了 大模型的认知。针对前者可能是训练数据和源数据不一致、数据没对齐或者编码器理解能力的缺陷和解码器策略错 误可能导致幻觉。后者则是用户的问题不在语言模型认知范围内。 针对复读机问题:数据质量不高,存在大量单一、重复文本,文本过长(补充:当你的前面的条件文本过长时,大 模型的输出的几个短文本会被原始的很长的条件文本淹没,继续预测下一个 token 的话,在模型看起来可能条件仍 然是差不多的,此时如果使用 greedy search,只选择概率最大的一个 token,模型极大可能会将前面已经生成的 短文本重新预测成概率最大的文本,以此类推,会一直重复下去。) 7. 当前主流的开源大模型是哪个,其架构具体是怎样的?
片段 3¶
选择概率最大的一个 token,模型极大可能会将前面已经生成的 短文本重新预测成概率最大的文本,以此类推,会一直重复下去。) 7. 当前主流的开源大模型是哪个,其架构具体是怎样的? 当前开源影响范围最广,生态建设最好的开源大模型是 Meta 的 LLaMA。其依旧采用 Transformers 架构,并做了 如下改动: 为了提高训练稳定性,对每个子层做输入前置归一化,归一化函数为 RMSNorm(受 GPT-3 启发) 为了提升性能,SwiGLU 激活函数替换 ReLU 激活函数(受 PaLM 启发) 从绝对位置嵌入,改为旋转嵌入(受 GPT-neo 启发)
使用 causal multi-head attention 的一个高效实现来减少内存占用和运行时间 8. 有哪几种 SFT 方法 全微调 Adapter Tuning Prefix Tuning Prompt Tuning P-Tuning v1 lora RLHF (SFT 时,学习率设置为预训练阶段的 10%,一般会取得不错的效果) 9. 什么是 lora 微调
片段 4¶
ing Prompt Tuning P-Tuning v1 lora RLHF (SFT 时,学习率设置为预训练阶段的 10%,一般会取得不错的效果) 9. 什么是 lora 微调 在原始 PLM (Pre-trained Language Model) 旁边增加一个旁路,做一个降维再升维的操作,来模拟所谓的 intrinsic rank。训练的时候固定 PLM 的参数,只训练降维矩阵 A 与升维矩阵 B。而模型的输入输出维度不变,输 出时将 BA 与 PLM 的参数叠加。用随机高斯分布初始化 A ,用 0 矩阵初始化 B,保证训练的开始此旁路矩阵依然 是 0 矩阵。 10. RAG 的检索阶段,常见的向量检索模型有哪些? ANN 算法 乘积向量 暴力搜索 hnswlib KD 树
- 针对通用的 RAG,你觉得还有哪些改进点? query 侧:做 query 的纠错、改写,规范化和扩展 对向量数据库做层次索引,提高检索效率和精度 对 LLM 模型微调,针对当前垂直领域引入知识库,提升回答的专业性、时效性和正确性 对最终输出做后处理,降低输出的不合理 case
片段 5¶
扩展 对向量数据库做层次索引,提高检索效率和精度 对 LLM 模型微调,针对当前垂直领域引入知识库,提升回答的专业性、时效性和正确性 对最终输出做后处理,降低输出的不合理 case 12. 什么是 LangChain LangChain 为大型语言模型提供了一种全新的搭建和集成方式,通过这个强大的框架,我们可以将复杂的技术任务 简化,让创意和创新更加易于实现。有点类似于神经网络开发与 tensorflow/pytorch 之间的关系 13. LangChain 的常用模块有哪些? document_loaders 文档加载 text_splitter 文档分块 embedding.huggingface 向量化 vectorstores 向量存储 chain.RetrievalQA 检索问答 14. SFT 和 RLHF 优劣对比
- 详细介绍一下 RLHF
片段 6¶
- 详细介绍一下 RLHF RLHF,全称为 Reinforcement Learning from Human Feedback(基于人类反馈的强化学习), 是一种机器学习方法,特别适用于训练像语言模型这样的 AI 系统,以生成更符合人类期望和价值观 的输出。这种方法结合了强化学习(RL)与直接的人类评估,旨在优化模型生成的内容,使其既高 质量又符合社会规范。以下是 RLHF 的关键组成部分和工作流程:
- 大模型训练经常出现一些 OOM 问题,在现有硬件基础下,有什么性能提升 trick 梯度累积
混合精度训练 减轻模型参数 分布式训练 减少批量大小 增加硬件资源 数据处理与加载优化:例如,可以使用数据流水线技术来并行加载和处理数据,减少内存中同时存在的数据量 17. LLaMA 模型输入句子理论上可以无限长吗? 不可以 受限于计算资源
片段 7¶
资源 数据处理与加载优化:例如,可以使用数据流水线技术来并行加载和处理数据,减少内存中同时存在的数据量 17. LLaMA 模型输入句子理论上可以无限长吗? 不可以 受限于计算资源 训练阶段长句子会导致梯度消失或者梯度爆炸(因为它依赖前面的词进行最大似然估计作为损失函数,这个最大似 然估计化简一下就是连乘的形式,容易造成梯度消失或者梯度爆炸) 推理阶段会增加预测错误率 18. 如何让大模型处理更长的文本? 分块处理,同时重叠保证连贯性 增加模型参数量,复杂化模型架构,提高对更长文本的捕捉与表达能力 19. 大模型推理时,显存中有那几部分数据? 模型参数 输入数据 计算中间结果 内存管理策略:某些深度学习框架在推理时采用了一种延迟释放显存的策略,即显存不会立即释放,而是保留一段 时间以备后续使用。这种策略可以减少显存的分配和释放频率,提高推理效率,但也会导致显存一直占用的现象。
- 介绍下 ChatGLM 首先要说起它的基座 GLM, GLM 既可以做 Encoder 也可以做 Decoder。 主要通过 两种 mask 方式来实现:
片段 8¶
f 10 --
- 介绍下 ChatGLM 首先要说起它的基座 GLM, GLM 既可以做 Encoder 也可以做 Decoder。 主要通过 两种 mask 方式来实现: [mask]:bert 形式,随机 mask 文本中的短 span [gmask]:gpt 形式,mask 末尾的长 span 在 chatglm 里面做生成任务时,是用 [gmask]。chaglm2 中完全采用 gmask 来进行预训练。 在 ChatGLM 的内部结构中的变换,从下到上依次是: 位置编码:从 BERT 的训练式位置编码转变为旋转位置编码 激活函数:从 BERT 中的 GeLU 转变为 GLU, 在 ChatGLM2 中又变成了 SwiGLU LayerNormalization:采用的是 DeepNorm,是对 post-Normalization 的改进,即在残差之后做 Normalization。 在 ChatGLM 中,把 layer-normalization 改为 RMSNormalization。 在 ChatGLM 2.0 中还添加了一些其他变化: FlashAttenion:利用显存和内存来做加速
片段 9¶
er-normalization 改为 RMSNormalization。 在 ChatGLM 2.0 中还添加了一些其他变化: FlashAttenion:利用显存和内存来做加速 Multi-Query Attention:多个头只采用一个 KV 对,通过参数共享来降低显存占用 21. 介绍下 GLU 激活函数和 SwiGLU 激活函数 GLU 的核心思想是通过门控机制来过滤信息,进而提高网络的表达能力和泛化能力。(门控机制有助于长距离建 模) SwishGLU 的核心思想是将 Swish 和 GLU 结合起来,SwishGLU 实际上只是多乘了一个 g(x)。 22. LLaMA1/2 的异同 首先从数据角度,lamma2.0 为 2.0T, lamma1 是 1.4T。其次是上下文长度, lamma1 是 2k,lamma2 是 4k。 最后从模型架构角度: 从整体上看,二者都遵循自回归 Transformer 的架构,只不过内部的细节有些不同。
位置编码:二者都采用了旋转位置编码
片段 10¶
最后从模型架构角度: 从整体上看,二者都遵循自回归 Transformer 的架构,只不过内部的细节有些不同。
位置编码:二者都采用了旋转位置编码 Normalization:二者都采用 pre-normalization,只不过 1.0 中采用原始的 LayerNormalization,2.0 中采用的 是 RMSNorm 激活函数:采用 SwiGLU 23. 模型在训练和推理的时候各占用显存的多少? 一般来说,训练占用模型参数量的 16 倍大小(优化器、梯度、模型本身);推理占用模型参数量的 2 倍大小(fp16 是一个单位参数大小对应两个字节,int8 是一个单位参数大小对应一个字节)。 24. 详细说说 Deepspeed 的机制 以下内容引用自该篇文章 是一种数据并行的方法,采用的 ring all reduce 方式。 传统的 parameter server 是 server 和 client 的方式,client 通过计算分配给自己的数据,产生梯度,传给 server,
片段 11¶
reduce 方式。 传统的 parameter server 是 server 和 client 的方式,client 通过计算分配给自己的数据,产生梯度,传给 server, server 做聚合,然后把聚合后的参数再传给 client,这个方式的弊端是 server 容易成为瓶颈,server 通信量太大。 另外可能一个 client 失败,会导致其他 client 等待。 Ring all reduce 是一种分布式的方式,各个节点分配通信量。总的通信量和 ps 没啥变化,但是通信的压力平摊到 各个 GPU 上了,GPU 之间的通信可以并行进行。 假如,GPU 数量是 N,把模型参数分成 N 份,每个 GPU 要存放整个参数。每个 GPU 也要分配训练数据。当一次 迭代,N 个 GPU 之间要经过一个 scatter 和 gather 操作,reduce-scatter 是将不同 gpu 上对应的参数的 gradient 相加,一共需要通讯(N-1)次。All-gather 是将合并完整的参数,传到其他 gpu 上,需要通讯(N-1)次。一 次 all reduce,单卡通信量为 2*sita。
片段 12¶
t 相加,一共需要通讯(N-1)次。All-gather 是将合并完整的参数,传到其他 gpu 上,需要通讯(N-1)次。一 次 all reduce,单卡通信量为 2sita。 Zero 包括 3 种方案,逐步递进: zero1:将 adam 的参数分割成 N 份,这样一个 GPU 上只能保存一份 adam 参数:这对于 forward 没啥影响, gradient 需要进行一次 all-reduce,但是只能更新一部分参数,所以 W 需要进行一次 all-gather,通信量为 3Nsita, 存储为 12sita/N + 4sita
zero2: 将 adamw,gradient 都分割成 N 份,梯度就不需要 all-gather 了,只需要 scatter 了,w 需要 all-gather, 通讯量为 2N*sita zero3: 将参数,adam 和 gradient 都分割,forward 的时候,需要将 w all-gather,backfoward 时,还需要把
使用建议¶
- 这些内容来自授权公开 PDF 的文本抽取结果,网页端会基于同一份静态索引做关键词检索。
- 面试复习时建议先用网页 PDF 原文检索定位题目,再回到主 notes 学系统化答案。
- 如果片段出现排版噪声,以原 PDF 语义为准,并优先整理成自己的回答模板。