《RWKV》论文笔记

news2024/9/20 15:02:17

原文出处

[2305.13048] RWKV: Reinventing RNNs for the Transformer Era (arxiv.org)

原文笔记

What

RWKV(RawKuv):Reinventing RNNs for the Transformer Era

本文贡献如下:

提出了 RWKV 网络架构,结合了RNNS 和Transformer 的优点,同时缓解了它们已知的限制

我们提出了一种新的线性注意力机制

展示了 RWKV 在处理涉及大规模模型和长距离依赖关系的任务时的性能、效率和扩展能力

RWKV的突出卖点:

O(1)推理复杂度真的非常香

  • 单 token 推理时间恒定,总推理时间随序列长度线性增加
  • 内存占用恒定,不随序列长度增加
  • 推理时间和内存占用随模型尺寸线性增长

优势是数量级级别的,这意味着:

  • 大模型的硬件限制和部署成本将大幅降低,CPU及非 NV 加速卡均可部署
  • 服务器上部署大模型的成本将大幅降低,普通台式机和笔记本将能在本地部署大模型手机端部署也成为可能

RWKV 将推动大模型进行一次架构迁移!

Why

Transformer具有出色的序列建模能力,一次处理一整句话,或一整段话,可以并行训练,但是同样面临着计算复杂度高,内存占用大,计算成本高的难题

传统的Transformer的总推理时间随序列长度二次增加(在序列特别长的情况下有可能三次增加)

自注意力机制的二次复杂度使其成为涉及长序列和受限资源的任务的计算和内存密集型。这刺激了增强 Transformer 可扩展性的研究,有时牺牲了一些其有效性

循环神经网络 (RNN) 在内存和计算需求方面表现出线性缩放,内存占用小,计算量小,(因为他每次只处理一部的数据)但由于并行化和可扩展性的限制,难以与 Transformer 匹配相同的性能。

RNN在训练长序列时容易出现梯度消失问题

RNN 在训练过程中对前一步结果依赖,无法在时间维度上进行并行化,限制了其可扩展性(无法获得很大的rnn模型)

RWKV 背后的动机是平衡计算效率和神经网络的表达能力。它提供了一种处理具有数十亿个参数的大规模模型的解决方案,以降低计算成本表现出具有竞争力的性能。实验表明,RWKV 解决了 AI 中的缩放和部署挑战,特别是对于顺序数据处理,指向更可持续和高效 AI 模型。

Challenge

Idea

model

容我再整理整理

原文翻译

Abstract

Transformers 彻底改变了几乎所有自然语言处理 (NLP) 任务,但受到内存和计算复杂性的影响,这些复杂性随序列长度呈二次方扩展。相比之下,循环神经网络 (RNN) 在内存和计算需求方面表现出线性缩放,但由于并行化和可扩展性的限制,难以与 Transformer 匹配相同的性能。我们提出了一种新颖的模型架构,即感知加权键值 (RWKV),它将变压器的高效并行训练与 RNN 的有效推理相结合

我们的方法利用了线性注意力机制,并允许我们将模型制定为 Transformer 或 RNN,从而在训练期间并行化计算并在推理过程中保持恒定的计算和内存复杂性。到目前为止,我们将我们的模型扩展到多达 14 亿个参数,是迄今为止训练的最大密集 RNN,发现 RWKV 的性能与类似大小的 Transformer 相当,这表明未来的工作可以利用这种架构来创建更有效的模型。这项工作为协调序列处理任务中计算效率和模型性能之间的权衡迈出了重要的一步。

Introduction

深度学习极大地推动了人工智能,影响了一系列科学和工业用途。这些通常涉及复杂的顺序数据处理任务比如自然语言理解任务,会话AI,时间序列分析,和间接顺序格式,如图像和图表(Brown等人,2020;Ismail Fawaz等人,2019;Wu等人,2020;Albalak等人,2022)。这些技术中占主导地位包括 RNN 和 Transformers (Vaswani et al., 2017),每种都有特定的优点和缺点。RNN 需要更少的内存,特别是对于处理长序列。然而,它们在训练过程中在时间维度上存在梯度消失问题非并行性,限制了它们的可扩展性(Hochreiter,1998;Le 和 Zuidema,2016)。

Transformers 已经成为一种强大的替代方案,擅长管理局部和远程依赖并支持并行训练(Tay 等人,2022 年)。诸如GPT-3 (Brown et al., 2020)、ChatGPT (OpenAI, 2022;Kocón et al., 2023),LLAMA (Touvron et al., 2023) 和 Chinchilla (Hoffmann et al., 2022) 展示了 Transformer 在 NLP 中的潜力。然而,自注意力机制的二次复杂度使其成为涉及长序列和受限资源的任务的计算和内存密集型。这刺激了增强 Transformer 可扩展性的研究,有时牺牲了一些其有效性(Wang 等人,2020;Zaheer 等人,2020;Dao 等人,2022a)。

为了应对这些挑战,我们引入了感知加权键值 (RWKV) 模型,结合了 RNN 和 Transformer 的优势,同时规避了关键缺陷。RWKV 通过高效的线性缩放缓解了与 Transformer (Katharopoulos et al., 2020) 相关的内存瓶颈和二次缩放,同时保持 Transformer 的表达能力,例如并行训练和鲁棒可扩展性。RWKV 用线性注意力的变体重新制定注意力机制,用更有效的通道定向注意力替换传统的点积令牌交互。这种实现,没有近似,提供了最低的计算和内存复杂性;见表 1。

RWKV 背后的动机是平衡计算效率和神经网络的表达能力。它提供了一种处理具有数十亿个参数的大规模模型的解决方案,以降低计算成本表现出具有竞争力的性能。实验表明,RWKV 解决了 AI 中的缩放和部署挑战,特别是对于顺序数据处理,指向更可持续和高效 AI 模型。我们在本文中的贡献如下:

  • RWKV 的引入,一种新颖的架构,结合了 RNN 和 Transformer 优势,同时减轻了它们的局限性。
  • 详细的实验,展示了 RWKV 在大规模模型的基准数据集上的性能和效率。
  • 预训练模型的释放,从 1690 万个参数到 14 亿个参数,在 Pile 上训练(Gao 等人,2020;Biderman 等人,2022)。

2 Background

在这里,我们简要回顾了 RNN 和 Transformer 的基本原理。

2.1 Recurrent Neural Networks (RNNs)

LSTM (Hochreiter and Schmidhuber, 1997) 和 GRU (Chung et al., 2014) 等流行的 RNN 架构的原理可以概括为以下公式(如 LSTM 所示,其他架构可以类似地推理):

尽管RNN可以分解为两个线性块(W和U)和一个特定于RNN的块(1)-(6),如Bradbury等人所述。(2017),依赖于先前时间步长的数据依赖禁止并行化这些典型的RNN。

2.2 Transformers and AFT

由Vaswani等人(2017)介绍,Transformers是一类神经网络,已经成为几个NLP任务的主要架构。Transformer 不是像 RNN 那样逐步操作序列,而是依靠注意力机制来捕获所有输入和输出tokens之间的关系:

其中为方便起见,省略了多头和比例因子 1√dkis。核心 QK⊤ 乘法是一个在序列中的每个令牌之间成对注意力分数的集合,可以分解为向量操作:

AFT (Zhai et al., 2021),表述为

其中 {wt,i} ∈ RT ×T 是学习的成对位置偏差,每个 wt,i 是一个标量。

受 AFT 的启发,RWKV 采用类似的方法。但是,为简单起见,它修改了交互权重,使其可以转化为 RNN。RWKV 中的每个 wt,i 是一个通道时间衰减向量乘以相对位置并从当前时间向后跟踪,因为它衰减:

其中 w ∈ (R≥0)^d,d 是通道数。我们要求 w 是非负的,以确保 e^wt,i ≤ 1 并且每通道权重在时间上向后衰减。

距离当前token越远的token它就会衰减的越多,越近的token它就会衰减的越少,但实际情况比这个还要复杂一点,后边有个图来可视化这一部分(channel的信息衰减))

3 RWKV

RWKV模型架构由四个基本元素构成,这四个基本元素本质上都是时间混合的和通道混合的:

R:Receptance向量充当过去信息的接收器(作为过去信息的接受程度的接受向量)

W:Weight表示位置权重衰减向量,即模型中的可训练参数(可训练的模型参数)

K:键向量,类似于传统注意力机制中的K。(用每一个token自身的一个值来对位置向量进行调制)  

V:值向量,类似于传统注意力机制中的V。

这些核心元素在每个时间步乘法交互,如图 2 所示。

3.1 Architecture

RWKV 模型由堆叠的残差块组成。每个块由一个时间混合和一个通道混合子块组成,实现循环结构以利用过去的信息。

该模型使用了独特的类似注意力的分数更新过程,其中包括一个随时间变化的 softmax 操作,以提高数值稳定性和减轻消失梯度(对于严格的证明,请参见附录 H)。它确保梯度沿着最相关的路径传播。此外,架构中包含的层归一化 (Ba et al., 2016) 有助于稳定梯度,有效地解决梯度消失和爆炸的问题。这些设计元素不仅增强了深度神经网络的训练动态,而且促进了多层的堆叠,通过捕获不同抽象级别的复杂模式,从而比传统的 RNN 模型具有更好的性能(另见附录 I)。

3.1.1 Token Shift

在该架构中,计算中涉及的所有线性投影向量(R, K, V,通道混合中的R ', K ')都是通过当前时间步输入和前一个时间步输入之间的线性插值产生的,促进令牌移位。

时间混合计算的向量是块当前输入和先前输入的线性组合的线性投影:

通道混合输入也是如此:

使用 PyTorch (Paszke et al., 2019) 库 asnn 在每个块的时间维度上实现令牌移位作为一个简单的偏移量。ZeroPad2d((0,0,1,-1))。

(在模型参数较小的时候与Transofrmer的效果还是有一定差距的)

3.1.2 WKV Operator

我们模型中的 W KV 算子的计算与 Attention Free Transformer (AFT) 中使用的方法并行(Zhai 等人,2021 年)。然而,与 W 是一个成对矩阵的 AFT 不同,我们的模型将 W 视为由相对位置修改的通道向量。在我们的模型中,这种循环行为由 W KV 向量的时间相关更新定义,形式化如下等式:

为了规避 W 的任何潜在退化,我们引入了一个单独关注当前标记的向量 U。有关这方面的更多信息可以在附录 I 中找到。

3.1.3 Output Gating

使用 sigmoid 在时间混合和通道混合块中实现输出门控,接受度,σ(r)。W KV 算子后输出向量 ot 由下式给出:

3.2 Transformer-like Training

RWKV 可以使用一种称为时间并行模式的技术有效地并行化,让人想起 Transformer。在单个层中处理一批序列的时间复杂度为 O(BT d2),主要由矩阵乘法 Wλ 组成,其中 λ ∈ {r, k, v, o}(假设 B 序列、Tmaximum 标记和 d 个通道)。相比之下,更新注意力分数wkvt涉及串行扫描(更多细节见附录D),复杂度为O(BT d)。矩阵乘法可以类似于 Wλ 并行化,其中传统 Transformer 中的 λ ∈ {Q, K, V, O}。逐元素 W KV 计算依赖于时间,但可以很容易地沿其他两个维度并行化 (Lei et al., 2018)3。

3.3 RNN-like Inference

循环网络通常利用状态 t 的输出作为状态 t + 1 的输入。在语言模型的自回归解码推理中也可以观察到这种用法,其中每个令牌必须在传递到下一步之前计算。RWKV 利用了这种类似 RNN 的结构,称为时间顺序模式。在这种情况下,RWKV 可以方便地在推理过程中递归制定用于解码,如附录 D 所示。

下略

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

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

相关文章

vscode调试教程

VSCode调试 VSCode Debuggers VSCode使用launch.json进行细粒度的控制,可以启动程序或将其附加到复杂的调试场景中 打开Run and Debug视图Ctrl Shift D 点击create a launch.json file,选择C(GDB/LLDB) 会在工作目录自动创建.vscode/launch.json文…

单对以太网连接器多场景应用

单对以太网连接器应用场景概述 单对以太网(Single Pair Ethernet,简称SPE)作为一种新兴的以太网技术,以其独特的优势在多个领域得到了广泛的应用。SPE通过单对电缆进行数据传输,支持高速数据传输,同时还能…

Python学习笔记33:进阶篇(二十二)pygame的使用之image模块

前言 基础模块的知识通过这么长时间的学习已经有所了解,更加深入的话需要通过完成各种项目,在这个过程中逐渐学习,成长。 我们的下一步目标是完成python crash course中的外星人入侵项目,这是一个2D游戏项目。在这之前&#xff…

文献解读-基准与方法研究-第十六期|《GeneMind 公司的 GenoLab M 测序平台 WGS 和 WES 数据基准测试》

关键词:基准与方法研究;基因测序;变异检测; 文献简介 标题(英文):Accuracy benchmark of the GeneMind GenoLab M sequencing platform for WGS and WES analysis标题(中文&#xf…

无法连接Linux远程服务器的Mysql,解决办法

问题描述 如果是关闭虚拟机之后,二次打开无法连接Mysql,则可尝试一下方法进行解决 解决方法 关闭虚拟机的防火墙 1:查看防火墙状态 systemctl status firewalld 一下显示说明防火墙是启动的状态 2:关闭防火墙 systemctl st…

Java线程死锁及解决方法

多线程环境下,死锁即两个或两个以上的线程去争夺同一个共享资源,而导致互相等待的情况。 要产生死锁,必须满足如下四个条件: 互斥条件,共享资源x和y只能被一个线程占有请求和保持条件,T1持有x&#xff0c…

7.9数据结构

思维导图 作业 doubleloop.h #ifndef __DOUBLELOOP_H__ #define __DOUBLELOOP_H__#include <stdio.h> #include <stdlib.h>typedef int datatype; typedef struct node {union{int len;datatype data;};struct node *pri;//前驱指针struct node *next;//后继指针…

Docker安装BRIA-RMBG-1.4模型,背景去除

目录 前言 模型描述 训练数据 定性评估 docker安装 运行 结论 Tip&#xff1a; 问题1&#xff1a; 问题2&#xff1a; 前言 BRIA 背景去除 v1.4 模型 RMBG v1.4 是我们最先进的背景去除模型&#xff0c;旨在有效地将各种类别和图像类型的前景与背景分开。该模型已在…

springboot会议室管理系统-计算机毕业设计源码50331

目 录 摘要 1 绪论 1.1 开发背景与意义 1.2国内外研究现状 1.3 相关技术、工具简介 1.3.1 MySQL数据库的介绍 1.3.2 B/S架构的介绍 1.3.3 Java语言 1.3.4 SpringBoot框架 1.4论文结构与章节安排 2 会议室管理系统需求分析 2.1 可行性分析 2.1.1 技术可行性分析 2…

昇思25天学习打卡营第21天|LSTM+CRF序列标注

1. 学习内容复盘 概述 序列标注指给定输入序列&#xff0c;给序列中每个Token进行标注标签的过程。序列标注问题通常用于从文本中进行信息抽取&#xff0c;包括分词(Word Segmentation)、词性标注(Position Tagging)、命名实体识别(Named Entity Recognition, NER)等。以命名…

一文实践强化学习训练游戏ai--doom枪战游戏实践

一文实践强化学习训练游戏ai–doom枪战游戏实践 上次文章写道下载doom的环境并尝试了简单的操作&#xff0c;这次让我们来进行对象化和训练、验证&#xff0c;如果你有基础&#xff0c;可以直接阅读本文&#xff0c;不然请你先阅读Doom基础知识&#xff0c;其中包含了下载、动作…

C++中的多重继承和虚继承:横向继承、纵向继承和联合继承;虚继承

多重继承 A.横向多重继承&#xff1a; B.纵向多重继承&#xff1a; C.联合多重继承&#xff1a; 因为 single 和 waiter 都继承了一个 worker 组件&#xff0c;因此 SingingWaiter 将包含两个 worker 组件&#xff0c;那么将派生类对象的地址赋给基类指针将出现二义性 那么如何…

AdaBoost集成学习算法理论解读以及公式为什么这么设计?

本文致力于阐述AdaBoost基本步骤涉及的每一个公式和公式为什么这么设计。 AdaBoost集成学习算法基本上遵从Boosting集成学习思想&#xff0c;通过不断迭代更新训练样本集的样本权重分布获得一组性能互补的弱学习器&#xff0c;然后通过加权投票等方式将这些弱学习器集成起来得到…

代码随想录——合并区间(Leecode LCR74)

题目链接 贪心 排序 class Solution {public int[][] merge(int[][] intervals) {ArrayList<int[]> res new ArrayList<>();// 先将数组按照左区间排序Arrays.sort(intervals, new Comparator<int[]>() {public int compare(int[] intervals1, int[] in…

CentOS 7:停止更新后如何下载软件?

引言 CentOS 7 是一个广受欢迎的 Linux 发行版&#xff0c;它为企业和开发者提供了一个稳定、安全、且免费的操作系统环境。然而&#xff0c;随着时间的推移&#xff0c;CentOS 7 的官方支持已经进入了维护阶段&#xff0c;这意味着它将不再收到常规的更新和新功能&#xff0c;…

第241题| 确定极限中参数问题 | 武忠祥老师每日一题

解题思路&#xff1a;确定极限中的参数的方法是求这个极限&#xff1b;求极限根据类型选方法。 形可以用到三种方法&#xff1a;洛必达&#xff0c;等价&#xff0c;泰勒。 先观察题目&#xff0c;将看成一个整体&#xff0c;同时,并令,整理之后如下&#xff1a; 这里也要想办…

MySQL架构优化及SQL优化

变更项目的整体架构是性能收益最大的方式。主要涉及两方面&#xff0c;一方面是从整个项目角度&#xff0c;引入一些中间件优化整体性能&#xff0c;另一方面是调整MySQL的部署架构&#xff0c;确保能承载更大的流量访问&#xff0c;提高数据层的整体吞吐。 1. 引入缓存中间件…

使用F1C200S从零制作掌机之USB游戏手柄

一、USB手柄 COIORVIS PC游戏手柄电脑USB FC模拟器经典游戏手柄 安卓手机有线连接单打格斗对打拳皇 经典有线手柄【黄色】 https://item.jd.com/10046453175183.html 插入USB即可自动识别。 # [ 1425.447643] usb 1-1: USB disconnect, device number 7 [ 1427.072155] usb …

方法引用 异常 file

目录 一.方法引用 1.方法引用概述 2.引用静态方法 3.引用成员方法 i.引用其他成员方法 ii.引用本类成员方法 iii.引用父类成员方法 4.引用构造方法 5.其他调用方式 i.使用类名引用成员方法 ii.引用数组的构造方法 二、异常 1.异常的作用 2.异常的处理方式 i.JVM…

Windows7彻底卸载mysql

1.控制面板卸载mysql 2.删除C:\Program Files\MySQL 3.删除C:\用户\Administrator\App Data\Roaming\MySQL”(App Data默认隐藏&#xff0c;需要在文件夹和搜索选项中勾选显示文件夹),为了删除的更彻底&#xff0c;可以直接在计算机全盘搜索MySQL关键字&#xff0c;将所有找到…