文章目录
- 1. 位置编码
-
- 1.1 绝对位置编码
- 1.2 相对位置编码
- 1.3 旋转位置编码
- 2. 注意力机制
-
- 2.1 MHA(muti head attention)
- 2.2 MQA(muti query attention)
- 2.3 GQA(grouped query attention)
- 3. 大模型分类
- 4. 微调方法
-
- 4.1 Prompt Tuning
- 4.2 Prefix Tuning
- 4.3 Lora
- 4.4 QLora
- 5. LangChain
- 6. LLAMA
-
- 6.1 RMSNorm
- 6.2 SwiGLU
- 7. 加速技巧
-
- 7.1 KV Cache
- 7.2 混合精度训练
- 7.3 deepspeed
1. 位置编码
参考:让研究人员绞尽脑汁的Transformer位置编码
1.1 绝对位置编码
绝对位置编码是一种相对简单的位置编码方式,主要有如下几种方式
- 训练式:直接将位置编码当作可训练参数,如BERT、GPT等,缺点是没有外推性
- 三角式:使用三角函数进行编码,如transformer;
- 优点:1. 有显式的生成规律,有一定的外推性;2. 由 s i n ( α + β ) sin(\alpha + \beta) sin(α+β) 的展开式可以得到, α + β \alpha+\beta α+β的向量可以表示成 α \alpha α和 β \beta β向量的组合,即提供了相对位置信息。
- 缺点:计算复杂
- 递归式:如RNN的形式,在句子后面接RNN,再输入到transformer理论上可以不用位置编码
1.2 相对位置编码
相对位置并没有建模每个输入的位置信息,而是在算Attention的时候考虑当前位置与被Attention的位置的相对距离,由于自然语言一般更依赖于相对位置,所以相对位置编码通常也有着优秀的表现。相对位置将本来依赖于二元坐标 ( i , j ) (i,j) (i,j) 的向量改为只依赖于相对距离 i − j i−j i−j,并且通常来说会进行截断,所以能适配任意的距离
经典的相对位置编码比如XLNET、T5、等都是在 q i k j T q_ik_j^T qikjT的展开式上进行处理,如下图所示:
1.3 旋转位置编码
目前很火的LLAMA、GLM模型都采用的是旋转位置编码,和相对位置编码相比,RoPE具有更好的外推性。其基本思想是 q m k n q_m k_n