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

news/2024/9/18 7:22:11/ 标签: llama

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

目录

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

llama_4">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} fqfk可以表示为:
在这里插入图片描述
在这里插入图片描述
最终:
在这里插入图片描述
扩展到多维:
在这里插入图片描述
Rope最终公式:
在这里插入图片描述

  • 优势:相对于绝对位置编码,可以更好的捕捉相对位置信息。相邻位置的编码之间有一定的相似性,而远离位置的编码之间有一定的差异性。

1.3 SwiGLU 激活函数

计算公式:sigmoid(x)*x
结合了GLU和SiLU的优点。

  • 表达能力更强
    SwiGLU 通过在激活函数前引入门控机制(GLU),允许模型在特定条件下选择性地激活或抑制某些神经元,从而增强模型的非线性表达能力。这对于处理复杂的数据模式特别有效。

  • 梯度流动更稳定
    SwiGLU 在使用 SiLU 激活函数时,由于其平滑的曲线和非饱和性质,有助于保持稳定的梯度流动,避免梯度消失或爆炸的情况。这使得在训练深度神经网络时,模型能够更容易地收敛。

  • 适应性更强
    SwiGLU 的门控机制使得模型可以根据输入特征的不同,自适应地调整激活的强度。这种灵活性有助于在不同的输入条件下,模型能够选择最优的特征表示,从而提高整体性能。

  • 提高计算效率
    SwiGLU 的设计相对简单,计算复杂度较低,因此在大型模型或需要高计算效率的场景中,能够提供较好的性能提升,同时不会显著增加计算成本。

llama2_49">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。
    在这里插入图片描述

llama3_78">3. llama3

具有8B和70B,模型架构与llama2基本没区别,但是改进了tokinizer,对长文本的处理变快。由sentencepiece换成了tiktoken,这与GPT4 保持一致。同时,词表大小由32k扩展到了128k。

参考文献

[1] 十分钟读懂旋转编码(RoPE)
[2] 从零实现ChatGPT——RLHF技术笔记


http://www.ppmy.cn/news/1521035.html

相关文章

ubuntu20.04(wsl2)测试 arcface 人脸识别(计算特征向量)

1. 参考博客和代码、模型仓库: 1.1. 【C随记】collect2: error: ld returned 1 exit status错误分析与解决 1.2. Visual Studio 2022新建 cmake 工程测试 tensorRT 自带样例 sampleOnnxMNIST 1.3.报错:ModuleNotFoundError: No module named ‘ten…

力扣SQL仅数据库(570-579)

570. 至少有5名直接下属的经理 需求: 编写一个解决方案,找出至少有五个直接下属的经理 数据准备: Create table If Not Exists Employee (id int, name varchar(255), department varchar(255), managerId int) Truncate table Employee i…

Mysql梳理1——数据库概述(上)

笔记来源:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 https://www.bilibili.com/video/BV1iq4y1u7vj 目录 11.2 引入 11.2. 1 数据库与数据库管理系统 11.2.2 数据库与数据库管理系统的关系 11.2.…

nnunetv2(一)配置文件和nnUNetv2_convert_MSD_dataset命令

文章目录 setup.pypyproject.tomlconfiguration.pynnUNetv2_convert_MSD_dataset 如有错误,欢迎评论 setup.py 可以使用pip install .命令来安装nnunet v2 pyproject.toml 配置文件 [project] name "nnunetv2" # 项目名称 version "2.5" # …

jmeter中响应时间、TPS、服务器资源图表

插件下载可以参考前面文章:相关插件 一、响应时间图表 jmeter中的聚合报告已经足够显示响应时间,但是不会显示很详细,下面使用监听器中的插件查看, 添加后,可以不用更改任何配置,直接使用默认即可统计响应…

vue3 + ts + element ui plus 添加阿里图标库图标(只添加一个, 并引入)

先创建一个vue文件, 引入svg代码, 这个文件放components里也挺好 ** catalogIcon.vue代码如下: ** <template><svg t"1725419972935" class"icon" viewBox"0 0 1024 1024" version"1.1" xmlns"http://www.w3.org/20…

深度学习--机器学习相关(3)

1.K-近邻算法 KNN 听起来像是某种神经网络的名字&#xff0c;如RNN、CNN 等&#xff0c;其实不然&#xff0c;这是一种经典、简单的分类算法K- 近邻算法(K-Nearest Neighbor,KNN)。与无监督学习讲解的聚类算法不同&#xff0c;KNN 是一个有监督算法。 有监督学习是一种学习算…

多目标应用:四种多目标优化算法(NSGA2、NSPSO、NSDBO、NSCOA)求解柔性作业车间调度问题(FJSP),MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题(Flexible Job Scheduling Problem, FJSP) 的描述如下&#xff1a;n个工件 { J , J 2 , . . , J n } \{J,J_2,..,J_n\} {J,J2​,..,Jn​}要在 m m m 台机器 { M 1 , M 2 , . . , M m } \{M_1,M_2,..,M_m\} {M1​,M2​,..,Mm​} …

div3 970

Problem - D - Codeforces 关键在于如果是环的话&#xff0c;环中的每一个的值都是一样的 #include<bits/stdc.h> #define int long long using namespace std; signed main(){int nn;cin>>nn;while(nn--){int n;cin>>n;int a[n1],i0;while(i<n)cin>…

com.baomidou.mybatisplus.annotation.DbType 无法引入

com.baomidou.mybatisplus.annotation.DbType 无法引入爆红 解决 解决 ❤️ 3.4.1 是mybatis-plus版本&#xff0c;根据实际的配置→版本一致 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-annotation</artifactId>&…

达梦数据库的系统视图v$sysstat

达梦数据库的系统视图v$sysstat 在达梦数据库&#xff08;DM Database&#xff09;中&#xff0c;V$SYSSTAT 视图提供了关于数据库系统性能和状态的一系列统计信息。这个视图是数据库管理员&#xff08;DBA&#xff09;用来监控和管理数据库性能的重要工具之一。它包含许多统计…

不管夫妻还是情人,想要长相厮守、生活幸福美满,就这两个字!

你好&#xff0c;我是腾阳。 近年来&#xff0c;娱乐圈频传“闪婚闪离”的消息&#xff0c;每一次都牵动着公众敏感的神经。 从光鲜亮丽的荧幕情侣到分道扬镳的路人&#xff0c;他们的故事如同一面镜子&#xff0c;映照出现代人情感关系的脆弱与浮躁。 相比之下&#xff0c;…

【Google Play】高德地图13.20.0.1451最新国际版(如何鉴别是否官方?)

高德地图&#xff0c;您的全方位出行助手&#xff0c;让您无论走到哪里都能熟悉一切。无论是寻找美食还是探索旅游景点&#xff0c;高德地图都能为您提供详尽的信息。有了高德地图在手&#xff0c;您可以轻松畅游世界各地&#xff0c;享受无忧无虑的旅行体验。 提供包括驾车、公…

基于 Konva 实现Web PPT 编辑器(二)

动画系统 为了实现演示中复杂的动画效果&#xff0c;使用 Animation 类统一管理&#xff1b;切换动画通过 css animation 实现&#xff0c;并且是应用在 konvajs-content 上&#xff0c;动画则通过 gsap 实现&#xff0c;应用在 Konva.Node 上&#xff0c;实现思路如下&#xf…

Python-FLASK上传文件

一、HTML文件 1、avator.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <form method"post" enctype"multipart/form-dat…

【游戏安全】CheatEngine基础使用——表面加密的原理、如何破解表面加密?如何解决每次关掉程序找到的属性都会消失这个问题?指针扫描

游戏安全 表面加密原理 指针扫描原理 表面加密 原理 从之前的文章中可以知道&#xff0c;这个游戏中是单浮点类型的数据&#xff0c;进行扫描后发现了这么多&#xff0c;对数据进行修改后看效果。 可以看到数据被改为999&#xff0c;这里消耗一次要500&#xff0c;所以点完之…

【Python 千题 —— 算法篇】词频统计

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目背景 在日常开发和文本处理工作中,单词计数是一个非常基础但又极为重要的操作。无论是统计一篇文章的词频,还是分析一段文本的关键词,单词计数都起着关键作用…

AI语音机器人:通过 Azure Speech 实现类人类的交互

语音对话的重要性 在竞争日益激烈的客户互动领域&#xff0c;人工智能语音对话正成为重中之重。随着数字参与者的崛起&#xff0c;组织认识到语音机器人的强大力量&#xff0c;它是一种自然而直观的沟通方式&#xff0c;可以提供类似人类的体验&#xff0c;深度吸引用户&#…

Gin框架中的单个路由中间件:深入理解Next与Abort

Gin是一个高性能的Go语言Web框架&#xff0c;它提供了灵活的中间件机制来处理HTTP请求。在Gin中&#xff0c;中间件可以对请求进行预处理和后处理&#xff0c;而c.Next()和c.Abort()是控制请求处理流程的两个关键方法。本文将通过一个示例详细介绍这两个方法的使用和作用。 1.…

关于一个早期的计算机网络的理解

电脑网络这个新鲜玩意儿&#xff0c;到底是怎样的呢&#xff1f; 2017年11月30日星期四&#xff0c; 我以前回答过这个问题&#xff0c; 简单点举个例子来理解&#xff0c;电脑网络就很形象的被说明了&#xff0c; 它本身就是一张网&#xff0c;一张看不见摸不着但还能用得着的…