【AI学习】LLaMA 系列模型的进化(二)

在前面LLaMA 系列模型的进化(一)中学习了LLama模型的总体进化发展,再来看看其中涉及的一些重要技术。

PreLayerNorm

Layer Norm有Pre-LN和Post-LN两种。Layer Normalization(LN)在Transformer架构中的放置位置对模型的训练稳定性和性能有影响。根据研究,Post-LN(将LayerNorm放在残差连接之后)在训练初期可能会导致梯度在网络深层比浅层大,这可能会使得训练过程不稳定。为了解决这个问题,Pre-LN(将LayerNorm放在残差连接之前)被提出,并且在实践中显示出可以提高训练的稳定性和速度。

在这里插入图片描述

然而,Pre-LN也有其问题,比如在预训练期间,早期层的梯度会比后期层大,这同样可能影响训练稳定性。
因此,一些研究工作提出了改进方案,比如NormFormer,通过在每个Transformer层中增加额外的归一化操作来解决Pre-LN的梯度幅度不匹配问题,从而进一步提高了模型的预训练困惑度和下游任务性能。这表明,尽管Pre-LN在很多大型预训练模型中被采用,但研究者们仍在不断探索更优的归一化策略来提高Transformer模型的训练效率和性能。

RMSNorm,均方根层归一化(root-mean-squared layer-normalization )

在LLaMA模型中,RMSNorm(Root Mean Square Layer Normalization)是一种用于归一化的技术。与传统的Layer Norm不同,RMSNorm不使用均值和方差进行归一化,而是直接除以输入数据的均方根值。

传统的LayerNorm定义:
在这里插入图片描述
RMSNorm的公式定义:
在这里插入图片描述

RMSNorm相对于LayerNorm的优势主要在于计算上,因为它只对方差进行操作,而不需要计算均值,这可能会在某些情况下使得计算速度略快。然而,RMSNorm可能在数值稳定性和归一化效果上与LayerNorm有所不同,因为LayerNorm同时考虑了均值和方差,而RMSNorm只关注方差。

关于RMSNorm的效果是否与LayerNorm相当,这可能取决于具体的应用场景和模型架构。在某些情况下,RMSNorm可能与LayerNorm有相似的性能,但在其他情况下,两者之间可能会有显著的差异。总的来说,选择哪种归一化方法应该基于具体任务的需求和实验结果。

RMSNorm论文链接:https://proceedings.neurips.cc/paper_files/paper/2019/file/1e8a19426224ca89e83cef47f1e7f53b-Paper.pdf

SwiGLU激活函数代替ReLU

SwiGLU(Switched Gated Linear Unit)是一种改进的激活函数,,是对传统门控线性单元(Gated Linear Unit, GLU)的一个变种,它在自然语言处理,特别是Transformer模型中,用于增强模型的非线性能力。工作原理说明如下:
在这里插入图片描述

分组查询注意力,GQA

在LLaMA模型中,分组查询注意力(Grouped-Query Attention, GQA)是一种用于提高训练和推理效率的机制。具体来说,GQA通过将查询(Query)进行分组,并在组内共享键(Key)和值(Value)投影,从而减少与缓存相关的内存成本。

这种机制允许在多头注意力(MHA)模型中共享键和值投影,使得K和V的预测可以跨多个头共享,从而显著降低计算和内存需求,提升推理速度。此外,GQA还被视为在不同维度上的粗粒度稀疏表示方法之一,其中MoE(混合专家系统)是在Linear layer维度上实现的。

在LLaMA 2和LLaMA 3模型中,GQA被广泛采用以优化内存使用并提高模型的推理性能。例如,在LLaMA 2的70B参数版本中,GQA显著提升了推理性能。同样,在LLaMA 3的所有模型中,包括8B和70B版本,也采用了GQA来处理更长的上下文并提高效率。
在实际应用中,LLaMA模型使用GQA(分组查询注意力机制)处理长文本的能力表现出色。根据证据显示,LLaMA-2及其变种如LLaMA 2-Long通过采用GQA机制,显著提高了推理速度和内存效率。

多头注意力(MHA):
多头注意力是一种在Transformer架构中广泛使用的注意力机制,通过将查询、键和值分别投影到多个不同的空间上,并并行计算这些空间上的注意力得分,从而获得更加丰富和细致的特征表示。

多查询注意力(MQA)
多查询注意力是MHA的一种变种,它通过共享单个key和value头来提升性能,但可能会导致质量下降和训练不稳定。MQA在保持速度的同时提高了模型的推理效率,但在某些情况下可能无法达到与MHA相同的效果。

分组查询注意力(GQA)
分组查询注意力是MQA和MHA之间的插值方法,旨在同时保持MQA的速度和MHA的质量。GQA通过使用中间数量的键值头(大于一个,小于查询头的数量),实现了性能和速度的平衡。具体来说,GQA通过分组的方式减少了需要处理的头数,从而降低了内存需求和计算复杂度。

分组查询注意力(Grouped-Query Attention,简称GQA)是一种用于提高大模型推理可扩展性的机制。其具体实现机制如下:

1、基本概念:GQA是多头注意力(Multi-Head Attention,MHA)的变种,通过将查询头(query heads)分成多个组来减少内存带宽的需求。每个组共享一个键头(key head)和一个值头(value head),从而降低了每个处理步骤中加载解码器权重和注意力键/值的内存消耗。

2、实现方式:在实际应用中,GQA将查询头分成G个组,每组共享一个键头和一个值头。例如,GQA-G表示有G个组,而GQA-1则表示只有一个组,这相当于传统的MQA(Multi-Group Query Attention)。当GQA的组数等于查询头的数量时,它等同于标准的MHA。

3、性能与效率平衡:GQA通过这种方式有效地平衡了性能和内存需求。它允许模型在不显著降低性能的情况下,处理更多的请求并提高推理效率。此外,使用GQA可以避免由于加载大量解码器权重和注意力键/值而导致的内存瓶颈问题

旋转位置嵌入

现在大模型已经普遍的应用RoPE。
关于RoPE,直接看苏神的文章《Transformer升级之路:“复盘”长度外推技术》,(https://mp.weixin.qq.com/s/oQtaYtIWJo2qlZHeqBwfxA)

RLHF

关于RLHF,有很多分析文章。推荐《图解大模型RLHF系列之:人人都能看懂的PPO原理与源码解读》,清晰易懂
文章链接:https://mp.weixin.qq.com/s/mhPJzhQvPJlAWsO2nW9BHg

有观点认为,有用性和安全性之间会存在权衡,所以LLAMA2训练了两个独立的奖励模型。一个针对有用性进行优化(称为有用性奖励模型,Helpfulness RM),另一个针对安全性进行优化(称为安全性奖励模型,Safety RM)。这样可以分别在有用性和安全性方面取得更好的效果,使得Llama 2-Chat在强化学习人类偏好(RLHF)过程中更好地符合人类偏好,提高生成回答的有用性和安全性。

迭代训练中,LLAMA2采用了两种强化学习算法:PPO和拒绝采样算法。

SELF-INSTRUCT

Stanford Alpaca 是第一个基于LLaMA (7B) 进行微调的开放式指令遵循模型。通过使用 Self-Instruct 方法借助大语言模型进行自动化的指令生成,Stanford Alpaca 生成了 52K 条指令遵循样例数据(Alpaca-52K)用于训练,其指令数据和训练代码在随后的工作中被广泛采用。
下面这个图展示了具体过程。
在这里插入图片描述

LLAMA-Adapter

论文标题:LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
论文链接:https://arxiv.org/pdf/2303.16199.pdf
LLaMA-Adapter,一种轻量级的适应方法,可以有效地将 LLaMA 微调为指令跟随模型。使用 52K self-instruct演示,LLaMA-Adapter 在冻结的 LLaMA 7B 模型上仅引入 1.2M 可训练参数,并在使用 8 个 A100 GPU 进行微调时,仅需不到一小时。具体来说,采用一组可学习的适应提示,并将其前置到更高 Transformer 层中的输入文本 token 上。然后,提出了零初始化注意力机制 (zero-gating),该机制自适应地注入新的指令提示到 LLaMA 中,同时有效地保留了其预训练知识。通过高效的训练,LLaMA-Adapter 生成了高质量的响应,与完全微调的 7B 参数的 Alpaca 相当。此外,LLaMA-Adapter扩展到多模态输入,用于学习图像条件LLaMA模型,在ScienceQA和COCO Caption基准测试中实现了卓越的推理性能。
在这里插入图片描述
通过下面图看一下具体方法。
在这里插入图片描述
Learnable Adaption Prompts
方法中涉及Learnable Adaption Prompts,直接求助kimi:
在这里插入图片描述

零初始化注意:流行的 PEFT 方法可能会通过直接插入随机初始化的模块来干扰预训练的语言知识。这导致在早期训练阶段具有较大损失值,使得微调不稳定。LLaMA-Adapter 采用带有门控的零初始化注意力来缓解这种情况。

在这里插入图片描述

统一多模式微调:以前的PEFT方法通常是为了解决特定的模态,如语言、图像和音频。相比之下,LLaMA Adapter可以以统一的方式处理语言和多模态的微调,显示出卓越的泛化能力
在这里插入图片描述
具体方法通过kimi:
在这里插入图片描述

一篇拖延了好久的问题,本来准备认真写一下,结果,就先凑一些素材吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于PaddleOCR + NLP实现证件识别

基于PaddleOCR NLP实现证件识别 PaddleOCR识别paddleOCR安装安装 anconda虚拟环境(可参考yolov5的安装教程) paddleOCR识别PaddleNLP模型信息抽取paddle打包exe 进行ocr识别 什么是PaddleOCR? PaddleOCR 旨在打造一套丰富、领先、且实用的 OCR 工具库,助…

【HarmonyOS开发】Navigation使用

简介 Navigation是路由容器组件,包括单栏(Stack)、分栏(Split)和自适应(Auto)三种显示模式。适用于模块内和跨模块的路由切换。 在页面跳转时,应该使用页面路由router,在页面内的页面跳转时,建议使用Navigation达到更好的转场动效…

Spring Boot集成Spring Batch快速入门Demo

1.什么是Spring Batch? Spring Batch 是一个轻量级的开源框架,它提供了一种简单的方式来处理大量的数据。它基于Spring框架,提供了一套批处理框架,可以处理各种类型的批处理任务,如ETL、数据导入/导出、报表生成等。S…

Armv8/Armv9架构的学习大纲-学习方法-自学路线-付费学习路线

本文给大家列出了Arm架构的学习大纲、学习方法、自学路线、付费学习路线。有兴趣的可以关注,希望对您有帮助。 如果大家有需要的,欢迎关注我的CSDN课程:https://edu.csdn.net/lecturer/6964 ARM 64位架构介绍 ARM 64位架构介绍 ARM架构概况…

uniapp,vue3上传图片组件封装

首先创建一个 components 文件在里面进行组件的创建 下面是 vip组件的封装 也就是图片上传组件 只是我的命名是随便起的 <template><!--图片 --><view class"up-page"><!--图片--><view class"show-box" v-for"(item,ind…

蓝桥杯Python算法竞赛常用的函数库

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;Python关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ ​ 目录 math collectcions heapq functool itertools 常用的库函数 m…

web服务器1

&#xff08; 1 &#xff09;仅提供用户浏览的单向静态网页 单纯是由服务器单向提供数据给客户端&#xff0c; Server 不需要与 client 端有互动&#xff0c;所以你可以到该网站上去浏 览&#xff0c;但是无法进行数据的上传。 &#xff08; 2 &#xff09;提供用户互动接口的…

深入理解Linux网络(三):TCP对象创建

深入理解Linux网络&#xff08;三&#xff09;&#xff1a;TCP对象创建 TCP对象创建inet_createsock_init_data TCP对象创建 常见的三句TCP编程&#xff1a; int main() {int sk socket(AF_INET, SOCK_STREAM, 0);connect(sk, ...)recv(sk, ...) }简单的两三⾏代码&#xff…

十年前的老电脑能装win10吗_十年前的老电脑用U盘安装win10教程

十年前的老电脑能装win10吗&#xff1f;十年前的老电脑只要满足win10最低要求的配置都可以安装win10。安装win10方法很多&#xff0c;有一键重装方法、U盘安装、硬盘安装等方式&#xff0c;但最靠谱的方式还是U盘安装。十年前的老电脑用U盘安装win10首先要将u盘制作成u盘启动盘…

react自定义校验报错问题修复 ProFormText

1、以下是tsx组件 自定义校验告警导致表单无法提交问题修复 修改如下&#xff1a;

体态识别开发记录

1.多标签输出分类算法 https://aiuai.cn/aifarm1372.html 2.体态识别算法 体态对比 体态判断 2.1 3D建模的方案 stable diffusion 插件地址&#xff1a; ControlNet https://github.com/Mikubill/sd-webui-controlnet 3D Openpose https://github.com/nonnonstop/sd…

VsCode SSH远程连接服务器【内网穿透公网连接】

文章目录 1.前言2.VS code的安装和设置2.1 VS code的下载安装2.2 OpenSSH的启用2.3 为VS code配置ssh2.4 局域网内测试VS code的ssh连接2.5 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 记得笔者小时候看电视&#xff…

仿源码大师主界面UI的iAPP源文件

仿源码大师首页主界面的布局 首页&#xff0c;分类&#xff0c;需求&#xff0c;我的 就只有这几个界面内容而已 资源静态 没有任何动画和功能 纯UI布局 纯UI布局 他的最新版已经不是这个UI布局 放心使用 以学习参考为目的&#xff0c;如有不妥望告知 原创&#xff0c;纯…

【Java数据结构】线性表之栈和队列

栈&#xff08;Stack&#xff09; 简单描述 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&…

初识网络基础知识

关于网络的一些核心概念 局域网 局域网&#xff08;Local Area Network&#xff0c;简称LAN&#xff09;是一种计算机网络&#xff0c;覆盖的范围通常是相对较小的地理区域&#xff0c;比如一个办公室、一栋大楼或一个校园。 局域网的组成通常包括以下部分&#xff1a; 网络…

数据结构-C语言-排序(3)

代码位置&#xff1a;test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言&#xff1a; 1.1-排序定义&#xff1a; 排序就是将一组杂乱无章的数据按照一定的规律&#xff08;升序或降序&#xff09;组织起来。(注&#xff1a;我们这里的排序采用的都为升序) 1.2-排序分…

录取查询老师在哪里制作?

随着考试的落幕&#xff0c;家长们焦急等待的心情终于可以稍微缓解&#xff0c;因为录取结果即将揭晓。然而&#xff0c;对于老师来说&#xff0c;这仅仅是另一项繁重工作的开始。他们需要将每一份录取通知单逐一发送给学生家长&#xff0c;这个过程不仅耗时而且容易出错。面对…

Blender中的重拓扑修改器如何使用?

许多人还不了解Blender中的重拓扑编辑器及其使用方法。Blender中的重拓扑修改器提供了一系列工具和选项&#xff0c;以简化创建优化网格的过程&#xff0c;无论是出于何种目的&#xff0c;都能为3D艺术家和建模者节省大量时间和精力。那么&#xff0c;在Blender中重拓扑的定义是…

《数据结构:C语言实现双链表》

文章目录 一、链表的分类二、双向链表1、概念与结构 三、双向链表实现1、双向链表要实现的功能2、哨兵位初始化3、双链表头插数据4、判断链表是否为空5、打印链表数据6、尾插数据7、头删数据8、尾删数据9、寻找数据所在结点10、在任意结点之后插入数据11、删除任意结点12、销毁…

FastGPT 代码调试配置

目录 一、添加 launch.json 文件 二、调试 本文简单介绍如何通过 vscode 对 FastGPT 进行调试。 这里假设已经安装 vsocde 和 FastGPT本地部署。 一、添加 launch.json 文件 vscode 打开 FastGPT 项目&#xff0c;点击 调试 -> 显示所有自动调试配置 -> 添加配置 -&…