大模型面试问题

综合基础

1、讲讲制作一个LLM的流程以及各阶段的作用
2、发现模型性能不好,如何从各个阶段去排查问题

查看各阶段中是否有对应训练数据,然后再向下排查。

3、介绍一下Llama2和传统的Transformer模型架构上的区别

1、归一化层。采用RMSNorm,它移除了LayerNorm中的均值项,由于没有计算均值,所以方差计算也没有了减去均值的操作,使它的计算效率更高。归一化层被前置。

2、多头注意力机制。Llama2采用GQA,组内共享同一个K和V,每个Q都有自己独立的参数不共享。
Llama采用MQA多查询注意力。它是MHA多头注意力机制的改进算法 。传统的MHA中,每个Q、K、V都有各自的参数,而MQA中,只有Q才有各自的参数,K和V的参数共享。通过在head之间共享相同的K和V转换,参数和操作的数量大大减少。

3、位置编码。RoPE。Transformer模型通常在输入序列经过Embedding层后只做一次位置编码,而lamma2模型选择在每个Attention层中分别对Query(Q)和Key(K)进行旋转位置编码(Rotary Positional Embedding,RoPE),即每次计算Attention时,都需要对当前层的Q和K进行位置编码。RoPE是利用绝对位置编码表示相对位置的一种方式,不仅保持位置编码,还能保持相对位置的关系。

4、激活函数。传统的Transfromer采用的是ReLU,而Llama采用的是SwiGLU。
ReLU:f(x) = max(0, x)。有点是计算简单,具备稀疏性,可以输出真正的零,有助于训练深度网络。缺点是当有一个梯度过大的流进入ReLU后,若被更新为0,则以后该神经元的梯度就永远为0。如果学习率设置过大,会导致过多神经元都失活。
SwiGLU:Swith激活函数和GLU门控单元的组合。它是一个GLU,但不是将sigmoid作为激活函数,而是使用ß=1的swish:SwiGLU(x) = Swish(W1x+b) ⊗ (Vx+c)。
其中,Swith激活函数 Swish(x) = x*sigmoid(ßx),Swish是个处处可导的非线性函数。
GLU门控单元是一种门控结构(有参数),通过sigmoid控制各个维度的激活程度。 GLU(x) = sigmoid(W1x+b)⊗(Vx+c)。GLU可以有效地捕获序列中的远程依赖关系,同时避免与lstm和gru等其他门控机制相关的一些梯度消失问题。

预训练

1、Transfomer模型介绍一下
2、讲讲 Q、K、V
3、Transfomer模型中Encoder输出给Decoder的输入参数有哪些?

K和V

4、讲讲padding的类别和使用举例

有left_padding和right_padding。
GPT会使用 left_padding
BERT会使用 right_padding

5、梯度突然消失和突然爆炸,如何排查问题

1、考虑激活函数
2、考虑数据
3、考虑学习率等参数

6、讲一讲Deepspeed和ZeRO

1、Deepspeed用于高效并行计算,支持数据并行 、模型并行和流水线并行等。
2、内存优化技术中引入了ZeRO(Zero Redundancy Optimizer)技术,通过优化模型状态的存储和通信来大幅减少所需的内存占用。
3、支持混合精度训练。支持同时使用单精度(FP32)和半精度(FP16)浮点数进行训练,可以在保持模型性能的同时减少内存占用和计算时间。
ZeRO通过优化模型状态的存储和通信来大幅减少所需的内存占用,使得在有限的内存资源下训练更大规模的模型成为可能。
ZeRO的核心思想是将模型的参数、梯度和优化器状态进行分片,并平均分配到所有的GPU中。这样,每个GPU只存储一部分数据,从而减少了单个设备的内存需求。同时,ZeRO还通过动态通信调度在分布式设备之间共享必要的状态,以保持数据并行的计算粒度和通信量,进一步减少内存占用。
ZeRO提供了多个优化级别,包括ZeRO-1、ZeRO-2和ZeRO-3,每个级别都在前一个级别的基础上减少更多的内存冗余。例如,ZeRO-1主要优化优化器的存储,ZeRO-2进一步优化模型参数和优化器状态的存储,而ZeRO-3还包括对激活的优化。随着优化级别的提高,能够支持的模型大小也随之增加,但同时对集群的通信和计算能力要求也更高。

7、预训练过程中都使用了哪些数据?

常识知识、多语种、代码数据、数学题等

8、为什么加入代码题能提升模型的推理能力?

9、为什么现在大部分预训练模型都用Decoder-only?

10、为什么预训练语言模型不用Encoder-onley或者Encoder-Decoder?

SFT阶段

1、如何制作SFT数据
2、如何制作长文数据
3、讲讲正向数据和反向数据制作
4、如何去解决敏感数据问题
5、SFT阶段的目的是什么

1、激发垂直领域知识
2、引导LLM的输出内容的风格、输出形式等等

6、采用什么比例进行微调,为什么采用这个比例进行微调?

RLHF阶段

1、讲一讲DPO

大模型中的DPO(Direct Preference Optimization,直接偏好优化)技术是一种用于将语言模型(LM)的行为与人类偏好对齐的方法。DPO技术的核心思想是直接优化语言模型,以最大化模型生成符合人类偏好的响应的概率。具体来说,DPO通过以下步骤实现:
1. 标注偏好数据集(x, y1, y2)
2. 优化语言模型。基于标注的数据集和获取的πref,优化语言模型πθ来最小化DPO损失函数。这个损失函数旨在增大偏好响应相较于不偏好响应的log概率,同时包含一个动态的、每个样本上的重要性权重,以避免模型退化。
3. 避免过拟合。DPO的一个潜在缺点是容易过拟合偏好数据集。为了缓解这个问题,可以引入正则化项,如身份偏好优化(IPO),以使模型在训练过程中更加稳定。

2、PPO有哪些组件,各个组件的作用是什么

1、演员模型:目标训练模型
2、评论家模型:用于判断演员模型产生的动作,未来会获取的总收益有多大。这个模型的参数会被一起更新,用于让评判能力也“”与时俱进“”。主要实现是在初始的LLM的最后一层加一个求价值的层。
3、参考模型:原始的LLM,参数冻结。保证演员模型和最初的模型训练偏差不会太大,让模型不被训“歪”。
4、奖励模型:判断当前演员模型的动作产生的价值有多大。

3、RM的用途是什么

用于打分,让LLM对我们想要的数据偏好进行对齐。

4、如何训练RM

给RM输入一个价值偏好数据集(x, y1, y2),其中x是输入的数据,y1是正向偏好,y2是负向偏好。然后,更新RM参数,让模型给正向偏好打分更多,负向偏好打分更低。

5、如何对齐LLM
6、PPO过程中有哪些损失函数

1、策略损失函数:策略损失函数是PPO算法中用于优化策略网络的主要损失函数。它基于 **新旧策略的概率比例**(ratio)和 **优势函数** 来计算。
2、价值损失函数:价值损失函数用于优化价值网络的参数,使其能够更准确地估计给定状态下的未来累积奖励。价值损失函数通常使用均方误差(MSE)或均方根误差(RMSE)来计算预测值与真实值之间的差异。

7、退火的作用是什么

让训练时梯度更新不会波动太大,渐进式的更新

8、PPO的目的是什么

用于模型对齐,让模型的输出能更符合我们预期的价值偏好

RAG

1、讲讲RAG的过程
2、讲讲Encoder是如何制作的
3、使用的Embedding是什么
4、RAG和事实增强结合起来进行讲解
5、RAG中落地时的难点是哪些?

RAG使用时的情景检测;chunk切分;Embedding;粗检;细排re-rank

6、了解哪些chunk切分技术?

根据字数、根据token数、根据语义

7、使用过哪些框架、向量数据库

LangChain
FAISS

8、Embedding的训练方式

Agent

1、Agent的组件都有哪些

LLM任务规划、记忆组件、prompt模版、工具

2、Agent在完成任务时候执行流程是什么

获取任务、任务分析并将任务分解成子任务、将信息反馈给环境、观察、根据反馈让LLM进行迭代更新

Prompt

1、Promp的一些设计技巧

可以引入角色扮演、COT、自我一致性检测、规定输出格式、给示例、肯定句代替否定句

模型推理

1、top-k、top-p、temperature、beam search的作用和效果上的体现
2、对比beam search、top-k、top-p

从效果上来看,top-k、top-p的调整要比beam search产生更多的多样性。

模型评估

1、如何去评估它的推理能力

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰阳星宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值