前言:llama基于transformer架构,与GPT相似,只用了transformer的解码器部分。本文主要是关于llama,llama2和llama3的结构解读。
目录
1. llama 1.1 整体结构 1.2 RoPE 1.3 SwiGLU 激活函数 2. llama2 2.2 GQA架构 2.3 RLHF 3. llama3 参考文献1. llama
1.1 整体结构
由self-attention和mlp堆叠形成,相比较transformer结构主要区别有三个:
1.2 RoPE
RoPE的目标是找到一种函数,实现以下功能:
以二维平面为例,m和n为绝对位置, θ {\theta} θ可以由以下公式得到:
d为词向量维度
论文中提出了一种形式如下:
f
q
和
f
k
{f_q和f_k}
fq和fk可以表示为:
最终:
扩展到多维
将二维的旋转操作扩展到多维度,是通过将嵌入向量的多个维度按照两两配对(形成二维子空间)来完成的。具体而言,它将嵌入向量的偶数和奇数维度配对,每一对维度都应用一次二维的旋转操作。这使得二维的旋转编码可以自然地扩展到更高维度。
Rope最终公式:
1.3 SwiGLU 激活函数
结合了GLU和SiLU的优点。
表达能力更强
SwiGLU 通过在激活函数前引入门控机制(GLU),允许模型在特定条件下选择性地激活或抑制某些神经元,从而增强模型的非线性表达能力。这对于处理复杂的数据模式特别有效。
梯度流动更稳定
SwiGLU 在使用 SiLU 激活函数时,由于其平滑的曲线和非饱和性质,有助于保持稳定的梯度流动,避免梯度消失或爆炸的情况。这使得在训练深度神经网络时,模型能够更容易地收敛。
适应性更强
SwiGLU 的门控机制使得模型可以根据输入特征的不同,自适应地调整激活的强度。这种灵活性有助于在不同的输入条件下,模型能够选择最优的特征表示,从而提高整体性能。
提高计算效率
SwiGLU 的设计相对简单,计算复杂度较低,因此在大型模型或需要高计算效率的场景中,能够提供较好的性能提升,同时不会显著增加计算成本。
2. llama2
包含7B、13B和70B。其中,7B和13B沿用了Llama 1的经典架构,而70B模型则采用了创新的分组查询注意力(GQA)架构,相较于Llama 1,Llama 2的预训练语料增加了40%。整体结构基本与llama1相似,但是新增了GQA架构,与llama1相比主要优势:
扩展上下文长度:Llama 2 模型提供 4,096 个令牌的上下文长度,是 LLaMa 1 的两倍。 上下文长度(或上下文窗口)是指模型在推理(即生成文本或正在进行的对话)期间“记住”的最大令牌数。 这样,自然语言就更加复杂,交流也更加连贯流畅。 提高可访问性:LLaMa 1 专为研究用途而发布,而 Llama 2 可供任何组织(活跃用户少于 7 亿)使用。 更强大的训练:Llama 2 使用增加 40% 的数据进行预训练,增强其知识库和上下文理解。 此外,与 LLaMa 1 不同,Llama 2 聊天模型使用基于人类反馈的强化学习 (RLHF) 进行微调,有助于更好地将模型响应与人类期望保持一致。2.2 GQA架构
一种在大型语言模型 (LLM) 中的多查询注意力 (MQA) 和多头注意力 (MHA) 之间进行插值的方法,它的目标是在保持 MQA 速度的同时实现 MHA 的质量。
MQA
让所有的头之间共享同一份 K 和 V矩阵,每个头正常的只单独保留了一份 Q参数,从而大大减少 Key 和 Value 矩阵的参数量。
MHA
transformer中的模块,将Q,K,V分成多组,最后拼接,每个头的K,V矩阵不共享。
GQA
Q分成N组,每个组共享一个K和V
2.3 RLHF
核心思想:训练阶段,如果直接用人的偏好(或者说人的反馈)来对模型整体的输出结果计算reward或loss,显然是要比上面传统的“给定上下文,预测下一个词”的损失函数合理的多。
主要包含三个步骤:
收集样本预训练模型常规的有监督训练 训练奖励模型
用多个模型(可以是初始模型、finetune模型和人工等等)给出问题的多个回答,然后人工给这些问答对按一些标准(可读性、无害、正确性blabla)进行排序(打分的话标注员差异太大),用排序数据训练一个奖励模型/偏好模型来打分(reward model)。对响应进行排名多半比编写响应更简单。 训练强化学习策略,微调 LM
用强化学习做LM训练的一种思路是用Policy Gradient做,这一块OpenAI用的是他们在17年提出的PPO算法,即Proximal Policy Optimization。
3. llama3
具有8B和70B,模型架构与llama2基本没区别,但是改进了tokinizer,对长文本的处理变快。由sentencepiece换成了tiktoken,这与GPT4 保持一致。同时,词表大小由32k扩展到了128k。
参考文献
[1] 十分钟读懂旋转编码(RoPE)
[2] 从零实现ChatGPT——RLHF技术笔记
总结
### 文章总结:LLama、LLama2与LLama3的结构解读#### 前言
本文深入解析了基于Transformer架构的LLama系列模型——LLama、LLama2和LLama3的结构特点与创新。LLama系列模型主要聚焦于语言生成任务,通过不断优化Transformer的解码器部分,实现了性能与效率的提升。
#### 1. LLama
##### 1.1 整体结构
LLama的整体结构由self-attention和MLP堆叠而成,与标准Transformer的主要区别在于位置编码、归一化方法和激活函数。
- **位置编码**:采用RoPE(旋转位置编码),相较于绝对位置编码,能更好地捕捉相对位置信息。
- **归一化**:使用RMSNorm,对子层输入进行归一化,有助于训练稳定性。
- **激活函数**:引入SwiGLU激活函数,结合GLU和SiLU的优点,提升模型性能。
##### 1.2 RoPE
RoPE通过旋转操作实现位置编码,能够在多维空间中有效扩展,相比绝对位置编码,能更好地捕捉位置间的相对关系。
##### 1.3 SwiGLU 激活函数
SwiGLU结合了门控机制(GLU)和SiLU激活函数,增强了模型的非线性表达能力,同时保持梯度流动的稳定性,提高计算效率。
#### 2. LLama2
LLama2在保持LLama1经典架构的基础上,新增了GQA架构,并扩展了预训练语料,增强了模型性能。
- **GQA架构**:一种在MQA和MHA之间插值的方法,旨在保持MQA速度的同时实现MHA的质量。通过分组查询注意力,减少计算量同时保持性能。
- **RLHF**:采用基于人类反馈的强化学习进行微调,使模型响应更符合人类期望。
- **扩展优势**:增加上下文长度,提高模型可访问性,使用更多数据进行预训练。
##### 2.2 GQA架构
GQA通过分组查询注意力,实现多查询注意力与多头注意力之间的平衡,提高模型效率与性能。
##### 2.3 RLHF
RLHF通过收集样本、训练奖励模型和强化学习策略,微调语言模型,使其输出更符合人类偏好。
#### 3. LLama3
LLama3在LLama2的基础上,主要改进了tokenizer,提升了长文本处理速度,并与GPT4保持一致。
- **Tokenizer改进**:由sentencepiece换成tiktoken,词表大小从32k扩展到128k,提升了对长文本的处理能力。
#### 参考文献
文章最后提供了两篇相关参考文献,帮助读者进一步了解RoPE和RLHF技术的细节。
### 总结
LLama系列模型通过不断优化Transformer的解码器部分,引入RoPE、SwiGLU、GQA和RLHF等创新技术,实现了模型性能与效率的提升。LLama3更是在tokenizer上进行了改进,进一步增强了长文本处理能力。这一系列模型的发展,为自然语言处理领域的研究与应用提供了有力支持。