【大模型】llama系列模型基础

前言:llama基于transformer架构,与GPT相似,只用了transformer的解码器部分。本文主要是关于llama,llama2和llama3的结构解读。

目录

  • [1. llama](#1. llama)
    • [1.1 整体结构](#1.1 整体结构)
    • [1.2 RoPE](#1.2 RoPE)
    • [1.3 SwiGLU 激活函数](#1.3 SwiGLU 激活函数)
  • [2. llama2](#2. llama2)
    • [2.2 GQA架构](#2.2 GQA架构)
    • [2.3 RLHF](#2.3 RLHF)
  • [3. llama3](#3. llama3)
  • 参考文献

1. llama

1.1 整体结构

由self-attention和mlp堆叠形成,相比较transformer结构主要区别有三个:

  • 位置编码:transformer使用的绝对位置编码,llama使用的RoPE(旋转位置编码),对Q和K使用
  • 归一化: transformer使用的layernorm在子层输出后,llama使用的RMSNorm 归一化函数,对子层的输入进行了归一化。pre-layer-norm使得训练更稳定,但是post-layer-norm使得模型具有更强的表达力。
  • 激活函数:用 SwiGLU 激活函数替换 ReLU 非线性,以提高性能。

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,显然是要比上面传统的"给定上下文,预测下一个词"的损失函数合理的多。

主要包含三个步骤:

  1. 收集样本预训练模型
    常规的有监督训练
  2. 训练奖励模型
    用多个模型(可以是初始模型、finetune模型和人工等等)给出问题的多个回答,然后人工给这些问答对按一些标准(可读性、无害、正确性blabla)进行排序(打分的话标注员差异太大),用排序数据训练一个奖励模型/偏好模型来打分(reward model)。对响应进行排名多半比编写响应更简单。
  3. 训练强化学习策略,微调 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技术笔记

相关推荐
又困又爱睡5 小时前
LLaMA-Factory(一)环境配置及包下载
llama
每天八杯水D5 小时前
LLaMA-Factory GLM4-9B-CHAT LoRA 微调实战
lora·微调·llama·peft·glm4-9b-chat
一只敲代码的猪5 小时前
Llama 3 模型系列解析(一)
大数据·python·llama
ibrahim2 天前
Llama 3.2 900亿参数视觉多模态大模型本地部署及案例展示
ai·大模型·llama·提示词
算力魔方AIPC2 天前
Meta重磅发布Llama 3.3 70B:开源AI模型的新里程碑
人工智能·llama
三月七(爱看动漫的程序员)4 天前
LEAST-TO-MOST PROMPTING ENABLES COMPLEX REASONING IN LARGE LANGUAGE MODELS---正文
人工智能·gpt·学习·机器学习·语言模型·自然语言处理·llama
码狂☆4 天前
源码编译llama.cpp for android
android·人工智能·llama
Ambition_LAO4 天前
LLaMA-Factory QuickStart 流程详解
llm·llama
宇梵文书C4 天前
在CFFF云平台使用llama-factory部署及微调Qwen2.5-7B-Instruct
llm·llama·cfff
CSBLOG5 天前
Day27 - 大模型微调,LLaMA搭建
人工智能·深度学习·llama