文章目录
前言
Transformer大模型的一些问题
1、Transformer模型
1. 1 基本要点
- 由一个多头self-attention和一个FFN前馈网络组成
- 利用了残差网络结构,解决了快速收敛和梯度问题
传统网络是通过层与层之间的连接传播信息,而残差连接则在层与层之间提供了一条直接的"捷径"。这种设计可以允许梯度在反向传播时更直接地传递回去,避免了梯度在深层网络中逐层传播时出现的衰减或爆炸问题。
- 由 Encode 和 Decode 两种模式,encode中可以看到全部信息而decode中只能看到部分信息
- 在decode中的Multi-Head Attention用于信息融合(非必须),广泛用于多模态,机器翻译等场景
1.2 提升
- Attention的作用获取上下文信息,参数两不大;FFN的作用是存储知识。先获取上下文再存储知识
- 运算量大 n 2 n^2 n2 ,加速算法 kv-cache主要用在推理阶段
KV-Cache是一种专门针对Transformer模型设计的加速方法,它利用了Transformer自注意力机制的特性来减少冗余计算,从而提高推理效率。
a. 工作原理::在Transformer的自注意力计算过程中,查询(Query)需要与所有的键(Key)进行点积运算,得到注意力分数。而在推理时,输入序列是固定的,因 此对应的键(Key)和值(Value)也是固定的。KV-Cache就是预先计算并缓存这些固定的键和值,避免了重复计算的开销。具体来说,在模型推理时,它会:计算并缓存第一个token的键(Key)和值(Value)对后续的token,查询先与缓存的键计算注意力分数,再与缓存的值进行加权求和,完成自注意力的计算。
b. 优势:
减少重复计算,降低计算量,从而提高推理速度。
无需修改模型结构和训练过程,易于部署。
加速效果显著,尤其对长序列输入效果更加明显
c. 缺点:
需要额外的内存空间来缓存键和值。
无法加速模型训练,只能加速推理过程。
存在一些固定的内存开销,对短序列输入加速效果不太明显。
d. 应用场景:
KV-Cache加速方法主要应用于需要高效推理的Transformer模型场景,例如:
机器翻译: 在线翻译服务需要快速响应。
语音识别: 实时转录对低延迟有较高要求。
文本生成: 如新闻生成、对话系统等。
长序列输入: 当输入序列很长时,KV-Cache加速效果更加显著。
总的来说,KV-Cache是一种高效的Transformer推理加速方法,能够在一定程度上提升响应速度和吞吐量,但需权衡内存开销。对于对延迟和吞吐量要求较高的应用场景,KV-Cache是一个值得考虑的加速选择。
- Norm用的是LayerNorm不是BatchNorm layernorm和batch normal的区别
2、BN和LN的区别和联系
2.1 基本要点
- 都是用于对数据进行正规化,将输入数据归一至正态分布,加速收敛,提升训练的稳定性
- BN:一个batch的向量,同一维度的数据做归一化;LN:序列向量中,不同时刻的向量做正规化
- BN的缺点在于:数据变长无法处理,语义数据无法处理。所以有了LN
2.2 扩展
- 对于BN来说训练时存在batch的能够对每一批数据进行归一化,但是如果在推理的时候,就会使用在训练时的batch,即将训练时候的所有均值和方差统计下来求均值作为推理使用;缺点:训练时的数据分布和推理时的数据分布不一样导致推理结果产生差异
- 防止过拟合:(1)减少了内部协变量偏移(Internal Covariate Shift) 神经网络在训练过程中,每一层的输入数据分布会由于前一层参数的更新而发生变化,这种分布变化被称为内部协变量偏移。BN通过对每一层的输入进行归一化,使得数据分布保持相对稳定,从而加快收敛速度,提高训练效率。缓解了内部协变量偏移也有助于减轻过拟合。(2)BN 的使用使得一个 minibatch 中所有样本都被关联在了一起,因比网络不会从某一个训练样本中生成确定的结果,即同样一个样本的输出不再仅仅取决于样本的本身,也取决于跟这个样本同属一个 batch 的其他样本,而每次网络都是随机取 batch,这样就会使得整个网络不会朝这一个方向使劲学习。
- LN不依赖于序列的长度和输入sequence的长度。
3、PreNorm和PostNorm的区别链接
- post-norm在残差之后做归一化,对参数正则化的效果更强,进而模型的鲁棒性也更好
- pre-norm相对于post-norm,因为有一部分参数直接加在了后面,不需要对这部分参数进行正则化,正好可以防止模型的梯度消失和梯度爆炸
- 如果层数少post-norm会更好,但是层数多了就需要考虑梯度消失和梯度爆炸的影响,因此就需要使用pre-norm。
4、Multi-head self-attention中为什么要用三个不同的矩阵
- 使用不同的矩阵,反映了将同意向量映射至不同的语义空间,从而提升了语义的表达能力
- 如果使用相同的矩阵,相同量级的情况下,q和k进行点积的值是最大的,进行softmax的加权平均后,该词所占的比重会最大,使得其他词的比重很少,无法有效利用上下文信息来增强当前词的语义表示,而使用不同的QKV,会很大程度上减轻上述的影响。