从Attention到LLM

摘要

截至目前,大模型发展迅速,真的是望眼欲穿,什么时候能到模型大一统时代QAQ,针对于想知道大模型原理的人,吾在此总结一篇“从Attention到LLm”,一下内容均出自项目经验和个人所学(互联网),我尽量用"大白话"来叭叭,后续还会更新RAG和Agent应用落地的一些经验。

注:本文的图均是个人手绘(drawio),懒得打水印了,如果你觉得有用,无偿给你~

一.LSTM

lstm不赘述了,直接放一个自己手绘的图。

二.Attention

Attention是一种用于提升基于RNN,LSTM的编码+解码(Encoder+Decoder)模型的效果的机制,话不多说,上图!

1. 流程图解释

分成两块来理解,计算已在图有显示:

Encoder:编码阶段,主要将输入向量化(Embedding)

Decoder:解码阶段,主要讲输出文本话

一些细节:

2.Sacled Dot-Product Attention(点积注意力机制)

该部分计算的是Query,Key的相似度,由简入深,下面列举一下简单的计算相似度的方法

a.向量内积

这里举例二维空间中两个点的距离cosθ。 <q, k>

b.矩阵变换

这里举例q,k为行向量,形状为:1xk,1xw。w矩阵型状为:kxw

c.Sacled Dot-Product Attention

Sacled Dot-Product Attention使用相似度计算的:

解释下这里为什么使用根号d(维度):

除以根号d(维度)可以将<q,k>缩小,防止过大,BP(反向传播)进入Softmax层后梯度消失,举个例子 x = (a, a, 2a, 4a), softmax(x)会将更多的权重分配到大数上,softmax(4a)远远大于softmax(a)。

会使BP时梯度消失。(a, a, 2a, 4a) -> y(0, 0, 0, 1)

Sacled Dot-Product Attention计算:softmax(\frac{QK^{T}}{sqrt(d)})V

三.Transformer

首先关注self-attention部分:

1.self-attention

自注意力机制,将单个序列(一句话)的不同位置(单词)关联起来

可以看到,每个单词,embedding后分别乘了3个矩阵(wq, wk, wv)得到了Q,K,V,这个流程是一起被并行计算(优于了普通的Attention模型),得到的Q(query),K(Key), V(value)做Sacled Dot-Product Attention计算

2.Multi Head

图中输入的文本经过的Wq, Wk, Wv 矩阵原本是公用的一个,使用Multi Head会增加多组[Wq, Wk, Wv],这是因为模型可以通过并行处理多组头的结果,增加对文本的理解。

3.Feed Forward(FNN)

 图中的Feed Forward本人理解是必须要用到的,因为正向传播需要非线性变换,如果没有,那堆叠再多的层也毫无意义

4.Padding Mask

在训练的时候使用,保持每个batch输入的长度一直。如果填充0毫无意义,所以一般替换成一个很大的负数,进入softmax后概率就是0

4. Masked Multi Head

只在decoder端进行,目的是让模型输出无法看见未来的信息,实现解码时只依赖前面的输出

5.Pre Norm,Post Norm,RMS Norm

模型把传统的Add之后做Layer Norm的方式叫做Post Norm

模型把传统的Add之前做Layer Norm的方式叫做Post Norm

RMS norm是在Layer Norm做了下改进经典(均值平方根),可以减少时间,Layer Norm/RMS(a)

四.LLM

简单聊完传统的模型直接转到大模型,大模型一些基础和需要了解的东西

1.LLM的内核

简单来说大模型就是一堆Transformer堆叠。

2.绝对位置编码和旋转位置编码

首先为什么要用位置编码?因为Attention对位置信息不敏感!

加入位置编码后会使token知道上下文的信息

RoPe(旋转位置编码)目前流行的,具体计算下次再发吧,有些疲惫。

3.长度扩展和外推

训练的时候,长度L为1024,如何在推理的时候,推理2048长度(或大于1024)

拖过缩小旋转位置编码的旋转弧度mθ,以达到长度扩展的目的。

4.调参选择

这里选择6B的模型

batch_size=5

MaxLength=样本平均长度*1.5

显存计算6*6B*batch_size=180

这里的6是optim存的前向结果,之前步骤梯度结果,大概为6

5.BPE分词

使用BPE分词可以忽略语言差异,例如中文、英文、发文

因为BPE把预料都转换成了UTF-8格式

6.高效微调

理解微调的原理,手撸代码后续也会更新

PEFT(Parametet-Efficient-FineTuning)

a.Prefix-Tuning/Prompt-Tuning

在模型的输入或隐层添加K个额外可训练的前缀tokens,之训练这些tokens

Prefix+问题: tk tk tk 今天生病了,我能否上班 答案:今天不能。(训练tk)

b.Adapter-Tuning

将较小的神经网络层或模块插入与训练模型的每一层

c.LoRA

通过学习小参数的低秩矩阵来近似模拟模型的权重矩阵W,训练时只优化低秩矩阵

注:在Attention时Q, K加入

五.结语

手撸代码和其他的概念下次再更。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值