RWKV: 与Transformer和Mamba掰掰手腕的小家碧玉

news2024/9/20 20:36:38

------>更多内容,请移步“鲁班秘笈”!!<------

开源项目RWKV是一个“具有 GPT 级别LLM性能的RNN,也可以像transformer并行训练。它主要是解决了Transformer的高成本。注意力机制是 Transformer 霸权背后的驱动力之一,它导致Transformers “遭受内存和计算复杂性的影响,复杂性与序列长度呈二次方比例缩放”,限制可扩展性。

另一方面,在前面讲述Mamba<链接回去温习下RNN的历史>的时候,读者应该已经知道原始的RNN在训练和并行化受到很大的约束。当然之后的很多改进,包括线性化都是为了解决这些问题。而RWKV最早2023年提出来的架构,RWKV5-6则在2024年4月份更新。其实它是可以和Transformer和Mamba掰掰手腕的,宛如小家碧玉,温文尔雅。

RWKV

RWKV的灵感来自 Apple 的Attention Free Transformer。该架构已经过精心简化和优化,因此可以将其转换为RNN。此外,还添加了一些技巧,例如TokenShift以及SmallInitEmb以提高其性能。

将RWKV和Transformers进行正面比较,在训练时降低资源使用率(VRAM、CPU、GPU等)。与具有大上下文大小的转换器相比,计算强度降低10到100倍。答案质量和能力方面表现同样出色。

在RWKV的弱点也同样的明显,它对提示格式敏感。在需要回溯的任务中较弱,(例如,“对于上面的文档,请做X”,这将需要回溯。但是可以说,“对于下面的文档,请执行 X”)。

RWKV的命名来自它内部四个关键部分:Receptance(接收信息的灵敏度)、Weight(权重调节)、Key(关键信息的精准把握)、Value(信息价值的深度挖掘)。这使得它在处理语言时既能够深入理解每个词汇的上下文,又能够快速捕捉全局信息。

  • Receptance:接受向量充当过去信息的接收者。

  • Weight:权重表示位置权重衰减向量,这是模型中的一个可训练参数。

  • Key:键向量在传统注意力机制中扮演着类似于K的角色。

  • Value:价值向量在传统注意力过程中的功能与V相似。

RWKV 如何实现 RNN 的现代化

RWKV将完整的RNN网络分割成多个较小的层,“其中每一层的隐藏状态可以独立用于计算同一层的下一个令牌隐藏状态。这允许部分并行计算下一个令牌状态,同时等待第一个隐藏状态的完全计算,以级联模式的形式。

实际上,这使得RNN网络在并排推出时可以像Transformer网络一样运行,在那里它可以“像Transformer一样”进行训练,也可以“像RNN一样执行”。来源于Apple的Attention Free Transformer的Time-mix层,采用了一种创新的注意力归一化技术。这一技术巧妙地解决了传统Transformer模型中计算资源的浪费问题,使得模型在处理信息时更加精准和高效。

时间混合是一个非常强大的想法,与具有固定窗口的Transformer不同,这在理论上可以扩展到无穷大。值得一提的是时间混合方程是线性的。这意味着可以并行化这种计算,从而扩展到更大的规模。

循环网络通常利用状态 t 的输出作为状态 t+1 的输入。在语言模型的自回归解码推理中也观察到了这种用法,其中必须先计算每个令牌,然后才能传递到下一步。RWKV利用了这种类似 RNN 的结构,称为时间顺序模式。在这种情况下,RWKV可以方便地递归地表述,以便在推理过程中进行解码。这种递归的特性使RWKV可以充当各种桥梁。

“这些设计元素不仅增强了深度神经网络的训练动态,而且还促进了多层的堆叠,通过在不同的抽象级别上捕获复杂的模式,从而实现优于传统RNN模型的性能”

上图中的Channel-mix层与GeLU(Gated Linear Unit)<链接回去温习>层有着异曲同工之妙,它引入了门控机制来调节信息流。这种机制类似于智能阀门,根据需要开启或关闭特定的信息通道,从而优化模型的表达能力。

RWKV模型采用了一种新颖的位置编码方式(distance encoding),它不仅为模型输入中加入了每个位置的信息,还考虑了位置之间的距离衰减特性。什么是衰减,有点类似往湖水中丢一颗石子,一圈一圈的涟漪就是。下面是根据RWKV块绘制的矩阵维度关系图谱:

大多数采用的RWKV模型范围从~170M参数到14B参数。纯语言模型RWKV-4已经在 Pile数据集上进行了训练,并在不同的基准上与其他SoTA模型进行了评估,它们似乎表现得相当不错,结果与它们非常相似。

下集剧透 

RWKV v5-v6

2024年的Eagle (RWKV-5)和Finch (RWKV-6),是在RWKV(RWKV-4) (Peng et al., 2023) 架构基础上改进的序列模型。架构设计改进包括多头矩阵值状态和动态递归机制,它们保持 RNN 推理效率特性的同时提高了表达能力。

在这个过程中引入了一个包含 1.12万亿个Token的新多语言语料库和一个基于贪婪匹配的快速标记器以增强多语言性。同时我们训练了四个Eagle 模型,参数范围从0.46B到7.5B,以及两个Finch模型,参数范围从1.6B和3.1B,这些模型在各种基准测试中都实现了具有竞争力的性能。目前都可以在HuggingFace上面找到对应的模型。

下面为它和Mamba 1, Mamba 2<链接温习>的对比,内存占用率低,而且时间短(Finch蓝线)。

其中把RWKV块运用于视觉领域,证明了VisualRWKV的架构对于视觉理解和推理非常强大。

使用较小的视觉编码器CLIP-L(0.4B)和1.5B/3B的Eagle,它所实现的结果可与CLIP-G(1.0B)和CLIP-H(1.0B)与 7B/13B大LLM的组合相媲美。在某些基准测试中,它甚至优于较大的模型。

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

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

相关文章

【目录】全博文、专栏大纲

首先要和大家说一下&#xff0c;博主的文章并不是想到哪里写到哪里&#xff0c;而是以整个大后端为主题&#xff0c;成体系的在写专栏&#xff0c;从和后端紧相关的计算机核心课程开始、到JAVA SE、JAVA EE、到数据库、MQ等各类中间件、再到业务场景、性能优化。当然也会涉及一…

DWM 相关实现代码 [自用]

1. DWM 缩略图和模糊隐藏实现半透明 #include <windows.h> #include <dwmapi.h> #include <string> #pragma comment(lib, "dwmapi.lib")// 检查 UWP 窗口是否可见 bool IsUWPWindowVisible(HWND hwnd) {DWORD cloaked 0;DwmGetWindowAttribute(…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(六)仿钉钉流程的转bpmn流程图

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、转bpmn流程图接口 /*** 转为bpmn xml格式* param processModel* throws IOException*/PostMapping("/ddtobpmnxml")public Result<?> ddToBpmnXml(RequestBody Proce…

Linux 初识

目录 ​编辑 1.Linux发展史 1.1UNIX发展历史 1.2Linux发展历史 2.Linux的开源属性 2.1 开源软件的定义 2.2 Linux的开源许可证 2.3 开源社区与协作 3.Linux的企业应用现状 3.1 服务器 3.1.1 Web服务器 3.1.2 数据库服务器 3.1.3 文件服务器 3.1.4 电子邮件服务器 …

天润融通引领客服革新,AI大模型助力品牌服务升级

AI时代&#xff0c;消费零售品牌的客户服务应该怎么做&#xff1f; 如今消费者的关注点已经越来越复杂&#xff0c;一条毛巾&#xff0c;关注点就可以包括&#xff1a; 是否婴幼儿可用&#xff0c;是否儿童成人可用&#xff1b;是否可以直接接触皮肤&#xff1b;是否无甲醛、…

算法日常练习

对于这个题&#xff0c;如何处理同一个方向的问题&#xff0c;且对于同一组的如果间隔太大如何实现离散化 #include<bits/stdc.h> using namespace std;#define int long long typedef long long ll; map<pair<int,int>,vector<pair<ll,ll>>> mp…

张量笔记(4):张量网络

张量分解通常是将高维张量分解成一系列较低维的张量&#xff0c;表示能力相对较低。而张量网络可以表示复杂的高维数据结构&#xff0c;通过连接多个张量形成网络结构&#xff0c;可以更灵活地表示和处理复杂的数据关系。本节主要介绍HT和TT网络。 2.5.1 HT分解——首先我们引入…

Neo4j安装

下载地址&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 1.安装jdk&#xff0c;Neo4j 3.0需要jdk8&#xff0c;2.3.0之前的版本建议jdk7。Neo4j最新版本5.21.2&#xff0c;对应jdk版本17 2.将下载的zip文件解压到合适路径。 3.设置环境变量NEO4J_H…

LinkedList----源码分析

源码介绍 public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, java.io.Serializable{} 添加过程中的操作&#xff1a; 当创建LinkedList类时&#xff0c;会调用其空参构造方法&#xff0c;将其参…

STM32中断(NVIC和EXIT)

CM3 内核支持 256 个中断&#xff0c;其中包含了 16 个内核中断和 240个外部中断&#xff0c;并且具有 256 级的可编程中断设置。但STM32 并没有使用CM3内核的全部东西&#xff0c;而是只用了它的一部分。STM32有 76 个中断&#xff0c;包括16 个内核中断和 60 个可屏蔽中断&am…

MySQL字符串相关数据处理函数

目录 1. 转大小写 2. 截取字符串 sunstr 3. 获取字符长度 4. 字符串拼接 concat 5. 去掉空白 trim 1. 转大小写 转大写&#xff1a;upper() 转小写&#xff1a;lower() 虽然MySQL不严格区分大小写&#xff0c;但是我们还是需要掌握这种大小写的操作以方便学习其他…

Dify中的RAG和知识库

一.RAG 基本架构 当用户提问 “美国总统是谁&#xff1f;” 时&#xff0c;系统并不是将问题直接交给大模型来回答&#xff0c;而是先将用户问题在知识库中进行向量搜索&#xff0c;通过语义相似度匹配的方式查询到相关的内容&#xff08;拜登是美国现任第46届总统…&#xff0…

Adobe Illustrator 2021 for mac/Win:专业矢量图形设计的巅峰之作

Adobe Illustrator 2021作为Adobe公司旗下的旗舰矢量图形设计软件&#xff0c;无论是对于Mac还是Windows用户&#xff0c;都提供了强大而灵活的设计工具&#xff0c;让设计师们能够轻松应对各种复杂的图形设计挑战。这款软件以其卓越的性能、丰富的功能和友好的用户界面&#x…

Spring MVC入门2

Postman的使用 接上期我们抛出了一个问题&#xff0c;Postman的使用 可以点击链接下载 https://www.postman.com/downloads/ 安装之后会提示版本升级&#xff0c;直接点击dissmiss即可。 要想发送数据&#xff0c;具体歩奏如下简图&#xff1a; 还有一个更具体的图&#xff…

Fastgpt本地使用Docker Compose 快速部署

使用 Docker Compose 快速部署 FastGPT 部署架构图 MongoDB:用于存储除了向量外的各类数据 PostgreSQL/Milvus:存储向量数据 OneAPI: 聚合各类 AI API,支持多模型调用 (任何模型问题,先自行通过 OneAPI 测试校验) 推荐配置 PgVector版本 体验测试首选 环境最低配置(单…

解决浏览器 CORS跨域问题

跨域问题其实就是不同源请求导致 解决跨域问题时&#xff0c;Chrome 插件 requestly 解决 1、Chrome 应用商店 &#xff1a;chrome://extensions/ 搜索 requestly 插件。并添加到扩展程序 2、打开扩展程序&#xff0c;为当前接口设置请求头 在response Header 中设置 Acce…

使用getopt处理参数

文章目录 使用getopt处理参数1. shift 命令1.1 删除一个参数1.2 删除多个参数1.3 多次执行 shift 参数1.4 参数解析示例1.5 优化处理1.6 问题处理 2. getopt 命令2.1 常用参数及示例2.2 脚本参数优化示例2.3 参数校验 3. 示例展示4. eval 命令4.1 示例示例 1示例 2示例 3示例 4…

2022 RoboCom省赛题目解析

题目解析&#xff1a;这就是一题很简单的模拟&#xff0c;直接上代码&#xff1b; #include<iostream> using namespace std; const int N 10010; int arr[N]; int main() {int n , m;cin >> n >> m;int sum 0;int res 0;for(int i 0; i < n;i ) cin…

大学生暑假“三下乡”社会实践工作新闻投稿指南请查收!

近年来&#xff0c;大学生暑期“三下乡”社会实践工作方兴未艾&#xff0c;越来越多的大学生通过参与“三下乡”实践工作&#xff0c;走出校园&#xff0c;深入基层&#xff0c;体验农村生活&#xff0c;服务农民&#xff0c;促进农村经济社会发展&#xff0c;实现了理论与实践…

Java链表LinkedList经典题目

一.LinkedList的方法 首先先看一下链表的方法&#xff1a; 方法解释boolean add(E e)尾插void add(int index, E element)将 e 插入到 index 位置boolean addAll(Collection c)尾插 c 中的元素E remove(int index)删除 index 位置元素boolean remove(Object o)删除遇到的第一…