大模型面试复习

1.MHQ和MQA

 

MultiQuerySelfAttention: 

MHQ和MQA的不同之处仅仅在于每个头共享相同的K、V权重而Q不同享。

 

2.FlashAttention:核心是减少self-attention计算过程中对gpu存储单元HBM的访问,HBM的特点是存储大,但是访问速度慢,attention的中间结果会存放到hbm中,导致速度慢,尽量计算都在sram,不保存中间结果在HBM上,从而计算结果变快

GPU中存储单元主要有HBM和SRAM:HBM容量大但是访问速度慢,SRAM容量小却有着较高的访问速度。例如:A100 GPU有40-80GB的HBM,带宽为1.5-2.0TB/s;每108个流式多核处理器各有192KB的片上SRAM,带宽估计约为19TB/s。可以看出,片上的SRAM比HBM快一个数量级,但尺寸要小许多数量级。

综上,FlashAttention目的不是节约FLOPs,而是减少对HBM的访问。重点是FlashAttention在训练和预测过程中的结果和标准Attention一样,对用户是无感的,而其他加速方法做不到这点。

大模型的一个特点是序列长度越来越长了

FlashAttention应用了tiling技术来减少内存访问,具体来说:

  1. 从HBM中加载输入数据(K,Q,V)的一部分到SRAM中
  2. 计算这部分数据的Attention结果
  3. 更新输出到HBM,但是无需存储中间数据S和P

 

 attention的中间结果sp的结果之前是保存在HBM上,HBM的访问速度慢,所以要减少这一过程。

 

3.模型训练流程

经过预训练(Pretraining)(0-1的大规模数据训练,模型的能力知识来源),有监督的微调(Supervised Fine-Tuning)-》(我们基于大模型进行fn)奖励模型(Reward Modeling)以及强化学习(Reinforcement Learing)

目前 ChatGLM是基于 Base 模型进行有监督微调(SFT)训练而来。而ChatGPT是基于人工反馈的强化学习(RLHF) Reinforcement Learing Human Feedback训练而来。

 

SFT微调的方式:

Prefix-Tuning

prefix-tuning: 就是训练下游任务的时候,冻住pretrained LLM参数(pytorch里面就是grad=False, 梯度不更新)只训练每个特定任务的参数(也叫prefix, 叫prefix是因为他的添加的前缀词都在输入的.

原始训练数据 x="Harry Potter, Education, Hogwarts", y="[SEP] Harry Potter is graduated from Hogwarts". 不使用prefix,直接finetune优化p(y|x)最大时的参数,prefix应用在Autoregessive Model时,

只优化p(y| prefix+x)最大时prefix引入的参数即可. 至于这个prefix具体是啥,就需要根据特定下游任务来确定。比如要做文档总结任务,那么prefix可以是"请总结这篇文档:"

prefix tuing是在输入的embedding层最前端插入prompt.

 

prompt tuning (P-tuning v2):

 

P-tuing V2为了提升模型解决NLU任务的能力,优化后的v2如图5(b)是在除了输入的embedding外,其他的Transformer层也加了前置prompt,不仅在embeding层

 

LoRA:

该方法的核心思想就是通过低秩分解来模拟参数的改变量,从而以极小的参数量来实现大模型的间接训练。

 

QLoRA:精度量化
(论文: QLORA: Efficient Finetuning of Quantized LLMs),使用一种新颖的高精度技术将预训练模型量化为 4 bit,然后添加一小组可学习的低秩适配器权重,这些权重通过量化权重的反向传播梯度进行微调。QLORA 有一种低精度存储数据类型(4 bit),还有一种计算数据类型(BFloat16)。实际上,这意味着无论何时使用 QLoRA 权重张量,我们都会将张量反量化为 BFloat16,然后执行 16 位矩阵乘法。QLoRA提出了两种技术实现高保真 4 bit微调——4 bit NormalFloat(NF4) 量化和双量化。
 
AdaLoRA:在lora的基础上进行优化,不是所有的层的weight都进行相同的zhi,重要的加,不重要的减少
(论文:ADAPTIVE BUDGET ALLOCATION FOR PARAMETEREFFICIENT FINE-TUNING),是对LoRA的一种改进,它根据重要性评分动态分配参数预算给权重矩阵。具体做法如下:

 

大模型多轮对话微调

 

 

 

 

transformer 的decoder的有两个attention,mask 多头attention和多头attention

Q来自于下面多头注意力机制的输出,K和V均是Encoder部分的输出(Memory)经过线性变换后得到,decoder的多头attention的输入,q来自于mask 多头attention,k,v是encoder(最后一层)
两种mask:
padding mask和attention mask
padding mask:填充对齐,保证序列长度一致
attention mask:训练过程中对于每一个样本来说都需要这样一个对称矩阵来掩盖掉当前时刻之后所有位置的信息。

 

 

posted @ 2023-08-24 22:29  15375357604  阅读(405)  评论(0编辑  收藏  举报