大模型面试百问百答

news2024/9/25 11:12:47

大家好,这里是 大模型八哥。今天分享大模型面试相关知识点,持续更新。

img

1. RAG技术体系的总体思路

数据预处理->分块(这一步骤很关键,有时候也决定了模型的效果)->文本向量化->query向量化->向量检索->重排->query+检索内容输入LLM->输出

2. 使用外挂知识库主要为了解决什么问题

  • 克服遗忘问题
  • 提升回答的准确性、权威性、时效性
  • 解决通用模型针对一些小众领域没有涉猎的问题
  • 提高可控性和可解释性,提高模型的可信度和安全性

3. 如何评价RAG项目效果的好坏

针对检索环节的评估:

  • MMR 平均倒排率:查询(或推荐请求)的排名倒数
  • Hits Rate 命中率:前k项中,包含正确信息的项的数目占比
  • NDCG

针对生成环节的评估:

  • 非量化:完整性、正确性、相关性
  • 量化:Rouge-L

4. 大模型的幻觉问题、复读机问题是什么

幻觉问题:即生成的内容是无意义的或不忠实于提供的源内容

复读机问题:重复生成某些话

5. 针对问题4,有没有什么解决办法

针对幻觉问题:引入外挂知识库,加入一些纠偏规则,限制输出长度等

针对复读机问题:

  • 丰富数据集的多样性,预处理时尽量过滤重复无意义的文本
  • 同义词替换等做数据增强
  • 温度参数调整
  • 后处理与过滤

6. 出现问题4的原因有哪些

针对幻觉问题:幻觉问题主要分为两大类,一类是生成结果与数据源不一致,自相矛盾。另一类是用户问题超出了大模型的认知。针对前者可能是训练数据和源数据不一致、数据没对齐或者编码器理解能力的缺陷和解码器策略错误可能导致幻觉。后者则是用户的问题不在语言模型认知范围内。

针对复读机问题:数据质量不高,存在大量单一、重复文本,文本过长(补充:当你的前面的条件文本过长时,大模型的输出的几个短文本会被原始的很长的条件文本淹没,继续预测下一个token的话,在模型看起来可能条件仍然是差不多的,此时如果使用greedy search,只选择概率最大的一个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微调

在原始 PLM (Pre-trained Language Model) 旁边增加一个旁路,做一个降维再升维的操作,来模拟所谓的 intrinsic rank。训练的时候固定 PLM 的参数,只训练降维矩阵A与升维矩阵B。而模型的输入输出维度不变,输出时将BA与PLM的参数叠加。用随机高斯分布初始化A ,用0矩阵初始化B,保证训练的开始此旁路矩阵依然是 0 矩阵。

10. RAG的检索阶段,常见的向量检索模型有哪些?

ANN算法

  • 乘积向量
  • 暴力搜索
  • hnswlib

KD树

11. 针对通用的RAG,你觉得还有哪些改进点?

  • query侧:做query的纠错、改写,规范化和扩展
  • 对向量数据库做层次索引,提高检索效率和精度
  • 对LLM模型微调,针对当前垂直领域引入知识库,提升回答的专业性、时效性和正确性
  • 对最终输出做后处理,降低输出的不合理case

12. 什么是LangChain

LangChain为大型语言模型提供了一种全新的搭建和集成方式,通过这个强大的框架,我们可以将复杂的技术任务简化,让创意和创新更加易于实现。有点类似于神经网络开发与tensorflow/pytorch之间的关系

13. LangChain的常用模块有哪些?

  • document_loaders 文档加载
  • text_splitter 文档分块
  • embedding.huggingface 向量化
  • vectorstores 向量存储
  • chain.RetrievalQA 检索问答

14. SFT和RLHF优劣对比

方法优点缺点
SFT1. 启动简单,仅需要问答对数据就可以进行训练;
2. 训练简单,直接对LLM进行调参,大部分情况下,训练几个epoch就可达到预期;
3. 显存资源相比于RLHF来说耗费低1. 模型的效果非常依赖于SFT数据的质量,天花板取决于SFT数据标注的质量;
2. 对标注要求高,对一条指令来说,要标注很高质的回答其实是一件非常困难的事情,既耗时又耗力。
RLHF1. 直接利用人类偏好来进行指导大模型的训练,使大模型的输出更能满足人们的要求;
2. 在安全性和事实性上,都能有很大的提升。1. 训练消耗大量的显存;2. 训练的过程中很不稳定,想要成功的完成PPO的训练不是那么容易的事情;3. 除了SFT阶段的数据,还得标注Reward model的数据。在对齐人类偏好的过程中,标谁更好比较容易,但是想标谁比谁好多少,又差多少,这不是件容易的事情。be

本答案引用自文章(https://zhuanlan.zhihu.com/p/677341520)

15. 详细介绍一下RLHF

留个坑,改天详细歇一歇

16. 大模型训练经常出现一些OOM问题,在现有硬件基础下,有什么性能提升trick

梯度累积

  • 混合精度训练
  • 减轻模型参数
  • 分布式训练
  • 减少批量大小
  • 增加硬件资源
  • 数据处理与加载优化:例如,可以使用数据流水线技术来并行加载和处理数据,减少内存中同时存在的数据量

17. LLaMA模型输入句子理论上可以无限长吗?

不可以

  • 受限于计算资源
  • 训练阶段长句子会导致梯度消失或者梯度爆炸(因为它依赖前面的词进行最大似然估计作为损失函数,这个最大似然估计化简一下就是连乘的形式,容易造成梯度消失或者梯度爆炸)
  • 推理阶段会增加预测错误率

18. 如何让大模型处理更长的文本?

  • 分块处理,同时重叠保证连贯性
  • 增加模型参数量,复杂化模型架构,提高对更长文本的捕捉与表达能力

19. 大模型推理时,显存中有那几部分数据?

  • 模型参数
  • 输入数据
  • 计算中间结果
  • 内存管理策略:某些深度学习框架在推理时采用了一种延迟释放显存的策略,即显存不会立即释放,而是保留一段时间以备后续使用。这种策略可以减少显存的分配和释放频率,提高推理效率,但也会导致显存一直占用的现象。

20. 介绍下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:利用显存和内存来做加速
  • 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 的架构,只不过内部的细节有些不同。

  • 位置编码:二者都采用了旋转位置编码
  • 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,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。

Zero包括3种方案,逐步递进:

zero1:将adam的参数分割成N份,这样一个GPU上只能保存一份adam参数:这对于forward没啥影响,gradient需要进行一次all-reduce,但是只能更新一部分参数,所以W需要进行一次all-gather,通信量为3Nsita,存储为 12sita/N + 4*sita

zero2: 将adamw,gradient都分割成N份,梯度就不需要all-gather了,只需要scatter了,w需要all-gather,通讯量为2N*sita

zero3: 将参数,adam 和gradient都分割,forward的时候,需要将w all-gather,backfoward时,还需要把w all-gather回来,计算梯度,丢掉不属于自己的w,然后对梯度做reduce scatter,更新w,通讯量为3N*sita。

最后采用采用stage3:用1.5倍的通讯开销,换回近120倍的显存

另外,还有ZeRO-Offload是基于Zero2,将adam和gradient放到内存中,在cpu内起了N个线程计算。其中的一条主线是gradient总是需要scatter的,感觉这个数据并行标志。这里需要注意一点 不管是forward 还是backward,都是需要有完整的w的。另外有了gradient,以及adamW的参数,才能更新W。

25. 什么是混合精度训练

FP64用8个字节共64位,FP32用4个字节共32位,FP16用2个字节共16位。在神经网络模型的训练过程中,通常默认使用单精度(FP32)浮点数据类型来表示网络模型的权重和其他参数。

为什么需要混合精度训练呢?

使用FP16训练神经网络,相比使用FP32有以下优点。

  • 内存占用减少:FP16的位宽是FP32的一半,所以权重等参数占用的内存也减少了一半,这样就可以训练更大的网络模型或者使用更多的数据。
  • 通讯效率提高:对于分布式训练,特别是大模型训练,通讯的开销是一个性能瓶颈,通讯的位宽减少了一半,就可以加快通讯速度,减少等待时间,提高数据流通效率。
  • 计算效率更高:在一些专门的AI加速芯片上,使用FP16的计算性能比FP32更快。

但是使用FP16也会带来一些问题,主要有两个方面:

  • 数据溢出和
  • 舍入误差

为了利用FP16的优势,提高深度学习训练的效率和性能,同时避免精度溢出和舍入误差的影响,可以采用FP16和FP32的混合精度训练,主要涉及到一下三个重要技术点:

  • 权重备份(Weight Backup)
  • 损失放大(Loss Scaling)
  • 精度累加(Precision Accumulated)

26. 什么是prefix LLM和casual LLM

prefix LM:token可以相互看到,输入双向注意力,输出单向注意力(ChatGLM、ChatGLM2、U-PaLM)

casualLM:严格自回归,从左到右的单向注意力 (LLaMA-7B、LLaMa 衍生物、Qwen)

27. 说一说针对MHA后续的一些计算优化工作

  1. KV cache,核心思想:因为transformers是自回归,每一个token的预测包含大量前文的重复冗余计算。优化点是将需要重复利用的中间结果存下来,避免重复计算
  2. MQA,核心思想:虽然SRAM的带宽很大,但是容量很小(A100只有大概20M),所以要进一步减少需要缓存的数据。MQA中的多头只有Q是不一样的,K、V完全相同。
  3. GQA,核心思想:进一步减少需要缓存的数据大小,K、V分组复制,数据大小介于MQA和MHA之间。
  4. FlashAttention,核心思想:将Q、K、V切分为更小的块,从HBM中加载到SRAM,需要计算的时候直接从SARM中读(因为目前transformers的计算效率瓶颈不在于计算速度,而是IO)

FlashAttention涉及到很多计算trick,有空单独开一篇文章来说

28. 说说attention几种常见的计算方式

  • self-attention
  • din的attention计算在得到权重之后,没有进行softmax归一化操作,而是保留了权重原始的信号强度。原始权重是通过网络最后一层激活函数得到,因此可以利用激活函数的特点,将其值限制在0-1之间,如sigmoid函数,从而使得到的原始权重值可直接用于加权求和,保留了权重的差异性。使用softmax操作虽然可以进行归一化,但同时会弱化了权重之间的差异性,有损用户兴趣的局部聚焦性。
  • 最后的最后

感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你。

因为这个行业不同于其他行业,知识体系实在是过于庞大,知识更新也非常快。作为一个普通人,无法全部学完,所以我们在提升技术的时候,首先需要明确一个目标,然后制定好完整的计划,同时找到好的学习方法,这样才能更快的提升自己。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

大模型知识脑图

为了成为更好的 AI大模型 开发者,这里为大家提供了总的路线图。它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

经典书籍阅读

阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。

在这里插入图片描述

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

面试资料

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下

在这里插入图片描述

640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

钰泰-ETA6964A 锂电池充电器IC

描述. ETA6964A 是一款高度集成的 3A 开关模式电池充电管理和系统电源路径管理器件,适用于单节锂离子和锂聚合物电池。它具有快速充电功能,支持高输入电压,适用于各种智能手机、平板电脑和便携式设备。其低阻抗电源路径优化了开关模式的运行…

第六次人口普查,人口前100姓氏

第六次人口普查中,人口前100的姓氏具体排名和分布情况如下: 人口前10的姓氏 李:约占全国汉族人口的7.94%,是人口最多的姓氏。 王:约占汉族人口的7.41%,仅次于李姓。 张:约占全国汉族人口总数的7…

视频汇聚/视频存储/安防视频监控EasyCVR平台RTMP推流显示离线是什么原因?

视频汇聚/视频存储/安防视频监控EasyCVR视频汇聚平台兼容性强、支持灵活拓展,平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、平台级联等视频能力。 EasyCVR安防监控视频综合管理平台采用先进的网络传输技术&#xff0…

Goland的使用

一、安装Goland 一、Goland简介 Goland是由JetBrains公司旨在为go开发者提供的一个符合人体工程学的新的商业IDE。这个IDE整合了IntelliJ平台的有关go语言的编码辅助功能和工具集成特点 二、下载相应的安装包 1、官网下载地址 GoLand by JetBrains: More than just a Go IDE 三…

网络编程,端口号,网络字节序,udp

前面一篇我们讲了网络的基础,网络协议栈是什么样的,数据如何流动传输的;接下来这篇,我们将进行实践操作,真正的让数据跨网络进行传输; 1.网络编程储备知识 1.1 初步认识网络编程 首先我们需要知道我们的…

Facebook对现代社交互动的影响

自2004年成立以来,Facebook已经成为全球最大的社交媒体平台之一,改变了人们的交流方式和社交互动模式。作为一个数字平台,Facebook不仅为用户提供了分享生活点滴的空间,也深刻影响了现代社交互动的各个方面。本文将探讨Facebook如…

Ollama在Windows安装,使用,简单调用API

一、安装ollama 1、安装 在Windows本地安装ollama,官方网页:https://ollama.com/download/windows 下载完安装包,安装就好,默认应该是C盘。应该是没办法改,如果有小伙伴能改,也请告知一下。 2、验证安装…

华为OD机试 - 数据单元的变量替换 - 分治、递归(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

基于yolov8+deepsort+gradio实现目标追踪演示

【效果展示】 【测试环境】 ultralytics8.2.95 gradio4.26.0 torch1.9.0cu111 理论上支持最新ultralytics版本 【实现部分代码】 with gr.Blocks() as demo:with gr.Tab("追踪"):# 使用Markdown显示文本信息,介绍界面的功能gr.Markdown(""…

linux固定串口别名

最近项目功能要求,需要将插入设备的串口设备占用的端口号固定住,这里记录一下设置过程方便以后查阅。 linux固定串口别名 配置过程相关补充 配置过程 列出当前插入USB端口的设备: lsusb查看当前设备的端口号: ls dev/查看当前设…

无人机飞手培训及巡检、吊运等飞行服务一体化技术详解

在无人机行业日益兴起的背景下,培养专业、合格的无人机飞手成为首要任务。飞手培训基础涵盖理论学习与安全意识建立两大方面。理论学习包括无人机基础知识(如无人机类型、结构、原理)、航空法规(如民用无人驾驶航空器实名制登记管…

旧衣回收小程序搭建,开发功能优势

随着人们生活水平、消费水平的提高,在日常生活中产生了大量的限制物品,为了减少浪费,越来越多的人开始重视环保回收。旧衣物作为一种新型的回收方式,也逐渐得到了大众的关注,旧衣物回收市场发展规模也在持续上升&#…

Certbot自动申请并续期https证书

Certbot自动申请并续期https证书 一、 安装 Certbot:使用命令安装 Certbot: dnf install certbot python3-certbot-nginx获取 SSL 证书:运行 Certbot 命令来获取并安装 SSL 证书。 示例命令,替换其中的域名和路径信息&#xff1a…

PHP API 框架:构建高效API的利器【电商API接口】

在当今快速发展的互联网时代,API(应用程序编程接口)已成为连接不同应用程序和服务的关键。PHP,作为一种流行的服务器端脚本语言,提供了多种强大的框架来简化API的开发。本文将介绍PHP API框架的重要性,以及…

java并发编程笔记 之 线程和进程

文章目录 前言线程线程优先级和时间片创建多线程及运行线程的状态 进程查看进程的命令进程的通信方式 线程和进程的区别从关系上疑问集锦 前言 并发 1、并发是指在同一时间段内,计算机系统能够处理多个任务的能力。 2、在并发编程中,我们可以理解为多个…

chapter17-多线程基础——(自定义泛型)——day20

580-程序进程线程 581-并发并行 并发和并行也可以同时进行 582-继承Thread创建线程 583-多线程机制 主线程和子线程交替执行 单核:两个线程并发 多核:两个线程并行 主线程结束,不是说进程就结束,进程要等所有线程结束 584-为什…

模型Alignment之RLHF与DPO

1. RLHF (Reinforcement Learning from Human Feedback) RLHF 是一种通过人类反馈来强化学习的训练方法,它能够让语言模型更好地理解和执行人类指令。 RLHF 的三个阶段 RLHF 的训练过程一般分为三个阶段: 监督微调(Supervised Fine-Tuning,…

认知杂谈82《跳出信息茧房,持续精进》

内容摘要: 互联网时代,信息丰富,但便捷性削弱了我们的好奇心。互联网是双刃剑,快速获取知识的同时,也让我们陷入“信息茧房”,限制视野。 好奇心减少,部分原因是互联网的“懒惰效应”&#xff0…

国家标准和团体标准有什么区别?

国家标准和团体标准的区别主要体现在以下几个方面: 1. 制定标准的主体不同:国家标准是由国家机构通过并公开发布的标准;团体标准是由学会、协会、商会、联合会、产业技术联盟等社会团体协调相关市场主体共同制…

【项目实战】如何在项目中基于 Spring Boot Starter 开发简单的 SDK

什么是SDK 通常在分布式项目中,类和方法是不能跨模块使用的。为了方便开发者的调用,我们需要开发一个简单易用的SDK,使开发者只需关注调用哪些接口、传递哪些参数,就像调用自己编写的代码一样简单。实际上,RPC(远程过…