大语言模型模块
三种类型的大语言模型:

大语言模型的正则位置、正则方法、激活函数、位置编码

正则方法:
- layerNorm——对单个样本的最优特征进行归一化(设定其方差和均值)
常见开源大语言模型
transformer
模型结构:

注意力点积和多头注意力机制


GPT

- 使用带掩码的子注意力机制
- LayerNorm
Llama

Llama 1
在原有decoder的基础上
- 使用 RMSNorm 代替 Layernorm
- 来源:LayerNorm的中心偏移没什么用(减去均值等操作)
- 增强了训练稳定性
- 提升训练速度
- 使用 SwiGLU 激活函数
- 旨在提升模型性能
- 含有一个可学习的参数 β,能够调节函数的插值程度
- 旋转式位置编码 (RoPE)——更好的建模长序列文本
- 通过正弦和余弦函数实现的绝对位置编码(Absolute Positional Embeddings)。序列中的每个位置都有其独特的编码(positional embedding),它们与词向量相加,从而确保即使单词相同,不同顺序的句子也能表达不同的意思。尽管绝对位置编码已经解决了 Transformer 不区分顺序的问题,但它生成的位置编码是相互独立的,没有考虑到序列中单词之间的相对位置关系。
- RoPE可以有效地保持位置信息的相对关系。
- RoPE 可以通过旋转矩阵来实现位置编码的外推
- RoPE 可以与线性注意力机制兼容
Llama 2
- 将序列长度
- GQA——平衡性能和准确度

- MHA 成为了 Transformer 的性能瓶颈
- Multi-Query Attention (MQA)通过在注意力层使用单一的键和值头(key and value),配合多个查询头(query heads)来大幅降低内存需求。但这种做法可能会降低模型的质量,并导致训练过程不稳定,因此像 T5 这样的其他开源大语言模型并未采用此方法。
- GQA 则采用了一种折中方案,它将查询值(query values)分为 G 组(GQA-G),每组共享一个键和值头(key and value head)。如果 GQA 的组数为 1(GQA-1),则相当于 MQA,所有查询(queries)都集中在一组;而如果组数等于头数(GQA-H),则与 MHA 相当,每个查询(query)自成一组。这种方法减少了每个查询(query)组中的键和值头(keys and values)数量,从而缩小了键值缓存的大小,减少了需要加载的数据量。与 MQA 相比,这种更为温和的缩减方式在提升推理速度的同时,也降低了解码过程中的内存需求,且模型质量更接近 MHA,速度几乎与 MQA 持平。
Llama 3
- 上下文长度
- 分词工具 Sentence Piece TikToken , 词汇表
- 这两种分词工具的主要差异在于,在输入的 tokens 已经存在于词汇表中时,TikToken 会跳过字节对编码(BPE)的合并规则。例如,如果“generating”这个词已经在词汇表中了,那么它将作为一个完整的 token 返回,而不是将其拆分为“generating”和“ing”这两个最小单元的 tokens 。