保留网络[02/3]:大型语言模型转换器的继任者”

news2024/12/27 12:34:41

一、说明

        在这项工作中,我们提出保留网络(RETNET)作为基础架构大型语言模型的结构,同时实现训练并行, 推理成本低,性能好。我们从理论上推导出这种联系 复发与关注之间。然后我们提出保留机制 序列建模,支持三种计算范式,即并行、 复发和分块复发。具体来说,并行表示允许 用于训练并行性。循环表示可实现低成本 O(1) 推断ence,它可以提高解码吞吐量、延迟和 GPU 内存,而无需 牺牲性能。分块循环表示有助于提高效率具有线性复杂度的古代长序列建模,其中每个块都被编码 并行地同时反复总结块。实验结果 语言建模表明 RETNET 取得了良好的扩展结果,并行 训练、低成本部署、高效推理。有趣的属性 使 RETNET 成为大型语言模型 Transformer 的强大继承者。代码 将在 https://aka.ms/retnet 上提供

二、关于RetNet的开源处

保留网络(RetNet)具有与相同大小的转换器相当的性能,可以并行训练,但支持递归模式,允许每个令牌的O(1)推理复杂性。

非官方但完整的实现可以在下面的我的回购中找到:

GitHub - syncdoth/RetNet:RetNet 的完整实现(Retentive Networks...

RetNet(保留网络,https://arxiv.org/pdf/2307.08621.pdf)的完整实现,包括并行...

github.com

三、生成序列模型的“不可能三角”

对于序列模型,尤其是生成模型,我们有上述三个特点:快速推理、并行训练和强大的性能。(在我看来,还有一个维度:序列长度外推。RetNet 可能支持这一点,但没有明确的实验。

RNN 具有快速推理但训练缓慢,线性变压器的性能较弱,变压器每个令牌推理具有 O(n)。RetNet满足所有三个条件: 并行训练、O(1) 推理和节拍变压器。

四、快速历史记录

有多种方法可以减轻生成变压器的昂贵推理。著名的作品包括Linear Transformers,Attention-Free Transformers(AFT;来自Apple)和RWKV(来自BlinkDL,基于AFT)。

这些值得单独发布,所以我不会详细介绍:但在我看来,它们在数学上都非常优雅,尤其是 RNN 如何并行化的推导。而我发现 RetNet 更有趣,因为它也有块表示和一些漂亮的技巧,如 xpos。

五、那么这是如何工作的呢?

RetNet 是在同一 Transformer 架构中将“注意力”替换为“保留”的即插即用替代。

我将以自上而下的方式介绍它们。

5.1. 每个 RetNet 块

每个 RetNet 块的公式。

在最高级别,RetNet 由几个相同的块堆栈组成,每个堆栈都包含 MultiScaleRetention (MSR) 和 FeedForwardNetwork (FFN)。它们还具有层规范和跳过连接,与变形金刚相同。FFN也几乎与变形金刚相同,后者是2层MLP,隐藏的暗光尺寸= 2倍嵌入尺寸,并具有gelu激活功能。

如果我们用MultiHeadAttention代替MSR,这只是Transformer。因此,所有差异都可以在MSR中找到。

5.2. 门控多尺度保留

多尺度类似于多头。在上面的等式中,γ是一些用于保留的超参数,这是为每个头部单独定义的。在群体规范之前,这是普通的多头关注,但保留。

门控MSR在输出端增加了组范数、旋门和输出投影,可视为辅助设计选择。(组规范允许缩放点积,但目前并不那么重要。 最重要的区别(保留模块)尚未到来。

5.3. 保留

最后,让我们看看什么是保留。保留有 3 种范式:并行、循环和块递归。让我们一一看一下。

并行保留

保留的并行表示

专注于最后一行。忽略 D,再次,这是没有 softmax 的点积关注。所以重要的细节又在DTheta中。

  • Theta(和bar(Theta),复共轭)是xpos编码”的复杂表示 - 它建立在旋转嵌入的基础上,以便模型可以更好地推断序列长度。在非复杂空间中存在相同的表示,这正是基于 RoPE 构建的 xpos。

请参阅 xpos 白皮书。我还发现这篇讲义有助于理解这一点。

  • D是因果掩蔽+衰变矩阵。

如果绘制 D则 D 如下所示:

gamma = 0.9
exponent = [[0, 0, 0, 0],
            [1, 0, 0, 0],
            [2, 1, 0, 0],
            [3, 2, 1, 0]]

D = tril(gamma**exponent)
# [[1.,     0.,     0.,     0.],
#  [0.9000, 1.,     0.,     0.],
#  [0.8100, 0.9000, 1.,     0.],
#  [0.7290, 0.8100, 0.9000, 1.]])
  • 上三角形为 0 →因果掩蔽。
  • 指数 = 前一个令牌表示被衰减的次数。当我们看到反复出现的表示时,这一点将变得更加清晰。

经常性保留

经常性保留

Sn类似于变压器中的KV缓存。RetNet 不是按顺序连接所有这些矩阵,而是将它们聚合成一个矩阵,循环在第一行。然后,此值乘以当前步骤的查询。

这与并行保留完全相同。

非正式证明草图:

设 S_0 = 0。 如果我们解决了S_n的复发

回想一下平行表示中 D 的指数矩阵的最后一行,即 [3, 2, 1, 0]。请注意,n=4。当我们计算第 4 个代币与第 1 个代币的保留期时,我们将其衰减 3 倍,相当于上式中的 n — i = 3! 由于其余部分相同,因此并行表示和循环表示彼此相同。

分块保留

这看起来很复杂,但它实际上是每个块的并行计算 + 块的循环连接。 唯一重要的是应用的衰减次数

5.4 论文中的错误

实际上,论文对 Ri 的分块表示(上面的等式)是错误的!事实上,它应该是

其中 X 运算符是叉积,D_B 是 D 矩阵的最后一行。直观地说,这是从平行表示和循环表示的衰减乘法得出的。

5.5 示意图

就是这样!以上是两种表示的摘要图。

六、为什么衰变?

所以基本上,最重要的细节是它使用了一种叫做衰减的东西,并且应用正确的衰减次数允许并行化。但我们必须了解这种衰败背后的动机是什么。推导(在高级别)非常简单。

  1. 我们将循环状态(s_n)定义为kv_cache。然后,递归关系在上图的第一行。
  2. 然后,我们将时间 n 的输出定义为 Q_n * s_n。上面的第二行写了这个并解决了重复周期以推出完整的依赖项。请注意,矩阵被多次应用。

3.现在,我们将A矩阵对角化为以下内容。

4. 然后,可以将 Λ 符号吸收到其他可学习的参数中(Q_n = X * W_k,因此 Λ 可以吸收到 W_k!因此,我们只剩下中间部分。

中间部分正是我们之前观察到的γ(衰变)和θ

直观地说,它们作为一种“封闭式位置编码”工作,它也具有递归形式,因此可以提前计算时间n的编码从而实现并行化。

七、实证发现

  • RetNet击败了Transformer,因为它变得更大了。(评论家:不确定这种趋势是否会持续下去)

  • RetNet在性能上击败了其他线性时间转换器。

  • RetNet很快。(批评者:根据架构,这是显而易见的。显示 3 个数字来强调这一点毫无意义。TBH,甚至不需要运行实验来绘制这些情节......

八、评论家

  • 论文中缺少一些细节,在官方代码出来之前不会明确。
  • RWKV也支持训练并行化,但在论文中被歪曲为不可能。
  • 有点吹嘘 RetNet 很快,有 3 个数字说同样的事情。:-)
  • 很好奇这种趋势是否会扩展到更大的模型。
  • 不确定他们是否会释放预先训练的体重。
  • 不确定他们是否会击败像LLaMA这样的模型。

九、优点

  • 快!(我批评他们吹牛,但确实很快,这很好)
  • 性能相当。如果这种趋势继续下去,并且大型型号的性能没有下降,这可能会成为LLM的事实,因为它们便宜得多。

    崔世贤

对于那些感兴趣的人,请看一下我对RetNet的实现:

GitHub - syncdoth/RetNet: Huggingface compatible implementation of RetNet (Retentive Networks, https://arxiv.org/pdf/2307.08621.pdf) including parallel, recurrent, and chunkwise forward.

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

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

相关文章

NeRF项目LLFF 解决新场景pose生成的问题

​​​​​​最近一直在做NeRF相关的项目,其中LLFF前向数据集,是NeRF常用数据集,本文讲下怎么对NeRF数据进行处理 几个重要的链接地址 github-llff : GitHub - Fyusion/LLFF: Code release for Local Light Field Fusion at SIGGRAPH 2019g…

0基础学习VR全景平台篇 第97篇:VR步进式漫游

蛙色VR步进式漫游正式上线! 为全行业室内场景提供三维空间重建能力,基于真实场景复刻,多维展示打破线下时空限制,提供高性价比的VR空间应用解决方案。 一、什么是步进式漫游? VR步进式漫游,基于AI特征点提…

QT 第五天 TCP通信与数据库

一、数据库增删改查 QT core gui sqlgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your comp…

第4章 【MySQL】InnoDB记录结构

4.1 准备工作 MySQL 服务器上负责对表中数据的读取和写入工作的部分是 存储引擎 ,而服务器又支持不同类型的存储引擎,比如 InnoDB 、 MyISAM 、 Memory 啥的,不同的存储引擎一般是由不同的人为实现不同的特性而开发的,真实数据在…

go-zerogo web集成redis实战

前言 上一篇:go-zero&go web集成JWT和cobra命令行工具实战 从零开始基于go-zero搭建go web项目实战-03集成redis实战 源码仓库地址 源码 https://gitee.com/li_zheng/treasure-box golang redis 客户端 Go-Redis 地址: GitHub: https://github.…

酒店常见十大突发事件应急处置方案

文章目录 1.处理客房门未关的程序2.客房内异常声响的处理程序3.酗酒客人应对程序4.预防打架斗殴、流氓滋事5.停电紧急处理6.客人差欠、拒付酒店费用的处理程序7.客人意外受伤、病危、身亡的处理程序8.防风、防汛等自然灾害应急处理9.发生盗窃案处理程序10.客人报告的“丢失/盗窃…

链表例题小总结:

链表: 第一种题型:双指针 力扣203:移除链表元素 力扣题目链接 题意:删除链表中等于给定值 val 的所有节点。示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]示例 2&#xff1…

浏览器窗口间的通信

一、汇总 二、同源策略 三、webSocket (无跨域限制) 优点:无跨域限制 缺点:成本高 四、客户端存储 1、localStorage onStorage 例子: 2、定时器 客户端存储 例子: 缺点: 五、postMessage (无跨域…

TypeScript类型判断

快速认知 TS允许我们为变量设置类型限制并进行检测判断 // 常见的类型判断 let age: number 20; let isDead: boolean true; let name: string abc; 但是上面的写法太啰嗦了。ts有一个类型推断机制,ts会根据为变量赋的值自动给该变量设置一个类型。上面可以写为…

SpringMvc--综合案例

目录 1.SpringMvc的常用注解 2.参数传递 基础类型(String) 创建一个paramController类: 创建一个index.jsp 测试结果 复杂方式 ​编辑 测试结果 RequestParam 测试结果 PathVariable 测试结果 RequestBody pom.xml依赖导入 输…

软件测试之登录测试详解-功能性

功能测试 一、功能测试–登录 功能性测试用例包括: 1.什么都不输入,点击提交按钮,看提示信息。(非空检查) 2.输入已注册的用户名和正确的密码,验证是否登录成功; 3.输入已注册的用户名和不…

面试中的问题提问:如何通过提问展示你的主动性

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

大型语言模型,第 1 部分:BERT

一、介绍 2017是机器学习中具有历史意义的一年,当变形金刚模型首次出现在现场时。它在许多基准测试上都表现出色,并且适用于数据科学中的许多问题。由于其高效的架构,后来开发了许多其他基于变压器的模型,这些模型更专注于特定任务…

Nginx详解 五:反向代理

文章目录 1. 正向代理和反向代理1.1 正向代理概述1.1.1 什么是正向代理1.1.2 正向代理的作用1.1.3 正向代理的基本格式 1.2 反向代理概述1.2.1 什么是反向代理1.2.2 反向代理可实现的功能1.2.3 反向代理的可用模块 2. 配置反向代理2.1 反向代理配置参数2.1.1 proxy_pass2.1.2 其…

(其他) 剑指 Offer 65. 不用加减乘除做加法 ——【Leetcode每日一题】

❓ 剑指 Offer 65. 不用加减乘除做加法 难度:简单 写一个函数,求两个整数之和,要求在函数体内不得使用 “”、“-”、“*”、“/” 四则运算符号。 示例: 输入: a 1, b 1 输出: 2 提示: a, b 均可能是负数或 0结果不会溢出 …

在 Windows 上远程对 Linux 进行抓包

文章目录 名词解释事先准备下载安装 Wireshark下载运行 libpcap设置 libpcap 环境变量在 Wireshark 中远程连接 libpcap 笔者的运行环境:(成功) 本地客户端: Windows: Windows 10 教育版(本文) …

基于STM32设计的生理监测装置

一、项目功能要求 设计并制作一个生理监测装置,能够实时监测人体的心电图、呼吸和温度,并在LCD液晶显示屏上显示相关数据。 随着现代生活节奏的加快和环境的变化,人们对身体健康的关注程度越来越高。为了及时掌握自身的生理状况&#xff0c…

Hololens2部署很慢可能是unity工程选择不对

这样就很快,几分钟就完成了。(虽然又遇到新问题了) 第一次使用时如下,直接运行了一个多小时还没有完

虚拟专用网络——VPN

VPN的英文全称是"Virtual Private Network",意为"虚拟专用网络"。它的本质是一种特殊的加密通讯协议,可以在不同地点的企业内部网之间建立一条专用的通讯线路,就像真正铺设了一条专线一样,但无需真正的物理线…

【图卷积神经网络】1-入门篇:为什么使用图神经网络

在本节中,将涵盖以下主要内容: 为什么使用图?为什么学习图?为什么使用图神经网络?为什么使用图? 首先需要回答的问题是:为什么对图感兴趣?图论是对图进行数学研究的学科,它已经成为理解复杂系统和关系的基本工具。图是一种将节点(也称为顶点)和连接这些节点的边的集…