非常清楚!!!Llama 2详解 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/649756898?utm_campaign=shareopn&utm_medium=social&utm_psn=1754103877518098432&utm_source=wechat_session一些补充理解:
序列化:将文本进行Tokenization,将其切分成单词或字符,形成Token序列。之后将文本序列转换为索引序列(语料库中的index) ---- sentencepiece (开源的文本Tokenzier工具)
input_tensor:[batch_size,seq_len,hidden_dim]
batch_size:批量大小,每次处理的样本数
seq_len:句子的长度
hidden_dim:每个word映射的embedding长度
softmax:
用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。对于长度为K的任意实向量,Softmax函数可以将其压缩为长度为K,值在[0,1]范围内,并且向量中元素的总和为1的实向量。
注意力机制(单头、多头)
Llama 2的模型结构与标准的Transformer Decoder结构基本一致,主要由32个 Transformer Block 组成,不同之处主要包括以下几点:
- 前置的RMSNorm层
- Q在与K相乘之前,先使用RoPE进行位置编码
- K V Cache,并采用Group Query Attention
- FeedForward层
为什么不用缓存Q? maybe->当前Q会和之前KV进行计算,计算结束后就不会再使用了。
缺点:访存太慢,产生内存墙
->改进GQA(进行分组共享K、V)