前言
仅记录学习过程,有问题欢迎讨论
Transformer结构:
LLM的结构变化:
Muti-head 共享:
- Q继续切割为muti-head,但是K,V少切,比如切为2个,然后复制到n个muti-head
- 减少参数量,加速训练
attention结构改动:
- self-attention和feedforward并行计算(bert为顺序计算)
不算主流
归一化层位置变化:
- 在attention之前(pre norm),在feedforward之后(正常为 attention->++±>layer->FFN-->++±->layer)
归一化函数变化:layerNorm 改为 RMSNorm
- 主流为norm层提前到attention层之前
激活函数变化
- swish:两个线性层 gated
LLama2模型结构:
- transformer Block:
RMSNorm-->Liner-->q*k(T) *V -->softmax-->Liner-->RMSNorm-->swish-->Liner
计算qk带上位置编码
MOE架构:
- 在feed forward中有多个类型的前馈层,根据分类的结果来选择,每个前馈层都是一个专家
位置编码:
- 因为transformer的输入是token,而不是序列,所以需要位置编码来表示token之间的相对位置
- 正弦、余弦编码:每个字按公式计算位置维度信息,但是不能学习,得到position encoding+word embedding
- bert 自带可训练的位置编码 position embedding;但是无法外推,最大文本长度是多少就是多少(512)
- ROPE相对(旋转)位置编码;
在计算某个词的emb时,映射其之前的位置emb信息(Xm,Xn,m-n)
可以外推,也无需训练 - Alibi位置编码;
在QK中 加上位置矩阵m
总结:对于文本类任务,位置信息是重要的
可学习的位置编码缺点在于没有长度外推性
相对位置编码不需要学习,有一定的长度外推性,但是相对位置编码具有天然的远程衰减性
目前的主流是ROPE和Alibi两种相对位置编码
多模态:
常见:图像、音频、视频、文本
罕见:3D模型,神经信号,气味
输入到输出是不同的模态
要点:文本、图像如何编码;二者如何交互
flamingo:qkv ,其中Q为文本,KV为图像(KV决定输出),所以计算文本和图像之前的相关性,在attention中交互
LLava:文本和图像emb拼接 走类似llama的流程,但是没有多头机制,本质上还是self attention
cv基础:
图像=矩阵 使用RGB 3通道叠加展示色彩
视频就是多个图像组成的张量
Diffuse Model: sora背后的技术
diffusion思想:随机生成一副噪音图像,持续的进行有条件的去噪,直到显示出有意义的图像(类似于对石头雕像)
Denoise:使用Noise predictor 预测噪声(输入输出都是矩阵),
然后去噪就是:噪声图像-噪声
贴一个测试图:
PS:
LLaMA 3 引入了 分组查询注意力(Grouped Query Attention, GQA) 作为其注意力机制的一部分,而 LLaMA 2 使用的是标准的多头注意力(Multi-Head Attention, MHA)。GQA 可能通过不同的方式组织和处理查询(Queries),从而优化了注意力计算过程,提高了模型的推理效率,同时保持或增强了模型的表现力。