当前位置: 首页 > news >正文

微软亚研院提出模型基础架构RetNet或将成为Transformer有力继承者

作为全新的神经网络架构,RetNet 同时实现了良好的扩展结果、并行训练、低成本部署和高效推理。这些特性将使 RetNet 有可能成为继 Transformer 之后大语言模型基础网络架构的有力继承者。实验数据也显示,在语言建模任务上:

  • RetNet 可以达到与 Transformer 相当的困惑度(perplexity)
  • 推理速度达8.4倍
  • 内存占用减少70%
  • 具有良好的扩展性

并且当模型大小大于一定规模时,RetNet 的表现会优于 Transformer。具体详情,一起来看。解决“不可能三角”Transformer 在大语言模型中的重要性毋庸置疑。无论是 OpenAI 的 GPT 系列,还是谷歌的 PaLM、Meta 的 LLaMA,都是基于 Transformer 打造。但 Transformer 也并非完美无缺:其并行处理机制是以低效推理为代价的,每个步骤的复杂度为 O(N);Transformer 是内存密集型模型,序列越长,占用的内存越多。在此之前,大家也不是没想过继续改进 Transformer。但主要的几种研究方向都有些顾此失彼:线性 Attention 可以降低推理成本,但性能较差;循环神经网络则无法进行并行训练。也就是说,这些神经网络架构面前摆着一个“不可能三角”,三个角代表的分别是:并行训练、低成本推理和良好的扩展性能。

e70bc02772ef5f499d425bd4ab1cd77d.jpeg


RetNet 的研究人员想做的,就是化不可能为可能。具体而言,RetNet 在 Transformer 的基础上,使用多尺度保持(Retention)机制替代了标准的自注意力机制。与标准自注意力机制相比,保持机制有几大特点:引入位置相关的指数衰减项取代 softmax,简化了计算,同时使前步的信息以衰减的形式保留下来。引入复数空间表达位置信息,取代绝对或相对位置编码,容易转换为递归形式。另外,保持机制使用多尺度的衰减率,增加了模型的表达能力,并利用 GroupNorm 的缩放不变性来提高 Retention 层的数值精度。 

75816db175da7d0c5452a55cb54a2acd.jpeg


RetNet 的双重表示每个 RetNet 块包含两个模块:多尺度保持(MSR)模块和前馈网络(FFN)模块。保持机制支持以三种形式表示序列:

  • 并行
  • 递归
  • 分块递归,即并行表示和递归表示的混合形式,将输入序列划分为块,在块内按照并行表示进行计算,在块间遵循递归表示。

其中,并行表示使 RetNet 可以像 Transformer 一样高效地利用 GPU 进行并行训练。递归表示实现了O(1)的推理复杂度,降低了内存占用和延迟。分块递归则可以更高效地处理长序列。这样一来,RetNet 就使得“不可能三角”成为可能。以下为 RetNet 与其他基础架构的对比结果:

98844505f5b1c5fcc2cf51301015b31d.jpeg


在语言建模任务上的实验结果,进一步证明了 RetNet 的有效性。结果显示,RetNet 可以达到与 Transformer 相似的困惑度(PPL,评价语言模型好坏的指标,越小越好)。同时,在模型参数为70亿、输入序列长度为8k的情况下,RetNet 的推理速度能达到 Transformer 的8.4倍,内存占用减少70%。在训练过程中,RetNet 在内存节省和加速效果方面,也比标准 Transformer+FlashAttention 表现更好,分别达到25-50%7倍。值得一提的是,RetNet 的推理成本与序列长度无关,推理延迟对批量大小不敏感,允许高吞吐量。

567fd1d06ad4f0842b6bd71415204833.jpeg


 另外,当模型参数规模大于20亿时,RetNet 的表现会优于 Transformer。

b6bedd7dea2089044b9aabd9dd450219.jpeg


相关文章:

微软亚研院提出模型基础架构RetNet或将成为Transformer有力继承者

作为全新的神经网络架构,RetNet 同时实现了良好的扩展结果、并行训练、低成本部署和高效推理。这些特性将使 RetNet 有可能成为继 Transformer 之后大语言模型基础网络架构的有力继承者。实验数据也显示,在语言建模任务上: RetNet 可以达到与…...

探索单例模式:设计模式中的瑰宝

文章目录 常用的设计模式有以下几种:一.创建型模式(Creational Patterns):二.结构型模式(Structural Patterns):三.行为型模式(Behavioral Patterns):四.并发…...

Bobo String Construction 2023牛客暑期多校训练营4-A

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;给出一字符串t&#xff0c;求一个长为n的字符串&#xff0c;使tst中包含且仅包含两个t 1<n<1000;测试样例组数<1000 思路&#xff1a;一开始很容易想到如果t里有1&#xff0c;s就全0&#xff0c;否则s就全…...

【React学习】React父子组件通讯

1. 父到子传值 在React框架中&#xff0c;父组件可以通过 props 将数据传递给子组件。子组件通过读取 props 来访问父组件传递过来的数据。 当父组件的 props 发生变化时&#xff0c;React 会自动重新渲染子组件以确保子组件中使用的数据保持同步。 父组件 import React, {…...

NASM汇编

1. 前置知识 1. 汇编语言两种风格 intel&#xff1a;我们学的NASM就属于Intel风格AT&T&#xff1a;GCC后端工具默认使用这种风格&#xff0c;当然我们也可以加选项改成intel风格 2. 代码 1. 段分布 .text: 存放的是二进制机器码&#xff0c;只读.data: 存放有初始化的…...

第三章 HL7 架构和可用工具 - 使用 HL7 架构结构页面

文章目录 第三章 HL7 架构和可用工具 - 使用 HL7 架构结构页面使用 HL7 架构结构页面查看文档类型列表查看消息结构查看段结构 第三章 HL7 架构和可用工具 - 使用 HL7 架构结构页面 使用 HL7 架构结构页面 通过 HL7 架构页面&#xff0c;可以导入和查看 HL7 版本 2 架构规范。…...

spring注解驱动开发(一)

1、需要导入的spring框架的依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.12.RELEASE</version></dependency>2、Configuration 设置类为配置类 3、Annota…...

Vue3搭建启动

Vue3搭建&启动 一、创建项目二、启动项目三、配置项目1、添加编辑器配置文件2、配置别名3、处理sass/scss4、处理tsx(不用的话可以不处理) 四、添加Eslint 一、创建项目 npm create vite 1.project-name 输入项目名vue3-vite 2.select a framework 选择框架 3.select a var…...

阻塞队列(模拟实现)

概念 阻塞队列是带有阻塞功能的队列 特性 当队列满的时候&#xff0c;继续入队列&#xff0c;就会出现阻塞&#xff0c;阻塞到其他线程从队列中取走元素为止 当队列空的时候&#xff0c;继续出队列&#xff0c;也会发生阻塞&#xff0c;阻塞到其他线程往队列中添加元素为止 特…...

VScode中python的相对路径与绝对路径 FileNotFoundError: [Errno 2] No such file or directory

VScode中&#xff0c;python里的相对路径是相对于当前工作目录来定位的&#xff0c;而当前的工作目录在VScode中下方的终端窗口会有提示&#xff1a; 说明此时的工作目录并非当前python文件所在的目录&#xff0c;而是C:\Users\xxxxx(你的用户名)。因此&#xff0c;使用VScode…...

Unity XML2——C#读写XML

一、XML 文件的存放位置 &#xff08;一&#xff09;只读不写的 XML ​ 放在 Resouces 或者 StreamingAssets 文件夹下&#xff0c;详见 Unity基础3——Resources资源动态加载_weixin_53163894的博客-CSDN博客。 &#xff08;二&#xff09;动态存储的 XML ​ 放在 Applica…...

带wiringPi库的交叉编译 ---宿主机x86Ubuntu,目标机ARMv8 aarch64(香橙派)

带wiringPi库的交叉编译如何进行 先交叉编译wiringPi库&#xff0c;编译出的库适合香橙派&#xff0c;这时候交叉编译可执行程序的平台和链接库的格式也是正确的&#xff0c;然后通过-I和-L来指定链接的wiringPi库的头文件和库的位置&#xff0c;但是现在还没有学习过&#xf…...

数据仓库基础知识

什么是数据仓库&#xff1f; 数仓&#xff0c;DataWarehouse&#xff0c;是一个 面向主题的、集成的、稳定的、与时间相关的 数据集合。 而这个数据集合的建立&#xff0c;是为了支持管理者的决策过程。 也就是说&#xff0c;我们通过建设数仓&#xff0c;为业务中的流程改进、…...

M 芯片的 macos 系统安装虚拟机 centos7 网络配置

centos 安装之前把网络配置配好或者是把网线插好 第一步找到这个 第二步打开网络适配器 选择图中所指位置 设置好之后 开机启动 centos 第三步 开机以后 编写网卡文件保存 重启网卡就可以了&#xff0c;如果重启网卡不管用&#xff0c;则重启虚拟机即可 “ ifcfg-ens160 ” 这…...

AcWing 3708. 求矩阵的鞍点

输入样例&#xff1a; 3 4 1 2 3 4 1 2 3 4 1 2 3 4输出样例&#xff1a; 1 4 4 2 4 4 3 4 4 #include<bits/stdc.h> using namespace std; const int N1010; int n,m,a[N][N],x[N],y[N],flag1; int main(){scanf("%d%d",&n,&m);for(int i1;i<n;i…...

web前端开发工程师的具体职责范本(合集)

web前端开发工程师的具体职责范本1 职责&#xff1a; 1.负责web前端架构的搭建&#xff0c;核心业务功能开发和核心代码编写。 2.配合产品经理&#xff0c;实现产品UI和交互方面的需求&#xff0c;持续界面优化&#xff0c;提升用户体验。 3.参与相关业务需求变更评审。 4.…...

从源程序到可执行文件的四个过程

从源程序到可执行文件的四个过程 预处理编译汇编链接 程序要运行起来&#xff0c;必须要经过四个步骤&#xff1a;预处理、编译、汇编和链接&#xff0c;如下图所示&#xff1a; -E选项&#xff1a;提示编译器执行完预处理就停下来&#xff0c;后边的编译、汇编、链接就先不执…...

C++部署学习

gcc -E src/main.c -o src/main.i gcc -S src/main.c -o src/main.s gcc -C src/main.c -o src/main.o gcc src/main.c -o exec ./exec...

linux下lazarus开发ide里 BGRAControls控件库comboBox示例

下载开发工具 ftp://ftp.freepascal.org/pub/lazarus/releases/Lazarus%20Linux%20amd64%20DEB/Lazarus%202.2.6/https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%202.2.6/ sourceforge下载可能比较慢&#xff0c;选择 下载有问题&…...

Redis学习路线(9)—— Redis的场景使用

默认做好了其它的前提&#xff0c;只专注于Redis使用 一、短信登录 在没有Redis数据库时&#xff0c;我们会基于Session实现登录&#xff08;利用令牌进行授权&#xff09;&#xff0c;是怎么实现的呢&#xff1f; &#xff08;一&#xff09;基于Session的短信登录功能 1、…...

Java观察者模式深度解析:构建松耦合事件驱动系统的艺术

目录 观察者模式基础解析核心结构与实现原理Java内置观察者实现Spring框架中的高级应用典型应用场景与实战案例观察者模式变体与优化常见问题与最佳实践总结与未来展望1. 观察者模式基础解析 1.1 模式定义与核心思想 观察者模式(Observer Pattern)是一种行为型设计模式,它…...

Redux 实践与中间件应用

Redux 异步处理的挑战 Redux 核心设计是同步的、单向数据流&#xff0c;但现代应用中异步操作无处不在。Redux 中间件填补了这一缺口&#xff0c;专门解决异步流程管理、副作用隔离等复杂场景。 中间件架构原理 中间件位于 action 被发起之后、到达 reducer 之前&#xff0c…...

如何有效删除 iPhone 上的所有内容?

“在出售我的 iPhone 之前&#xff0c;我该如何清除它&#xff1f;我担心如果我卖掉它&#xff0c;有人可能会从我的 iPhone 中恢复我的信息。” 升级到新 iPhone 后&#xff0c;你如何处理旧 iPhone&#xff1f;你打算出售、以旧换新还是捐赠&#xff1f;无论你选择哪一款&am…...

Python----目标检测(使用YOLO 模型进行线程安全推理和流媒体源)

一、线程安全推理 在多线程环境中运行YOLO 模型需要仔细考虑&#xff0c;以确保线程安全。Pythons threading 模块允许您同时运行多个线程&#xff0c;但在这些线程中使用YOLO 模型时&#xff0c;需要注意一些重要的安全问题。本页将指导您创建线程安全的YOLO 模型推理。 1.1、…...

CppCon 2015 学习:3D Face Tracking and Reconstruction using Modern C++

1. 3D面部追踪和重建是什么&#xff1f; 3D面部追踪&#xff08;3D Face Tracking&#xff09;&#xff1a; 实时检测并追踪人脸在三维空间中的位置和姿态&#xff08;如转头、点头、表情变化等&#xff09;&#xff0c;通常基于摄像头捕获的视频帧。3D面部重建&#xff08;3D…...

联软NSPM自动化策略管理 助力上交所加速国产化替代提升运维效率

在金融行业核心基础设施国产化浪潮与网络安全强监管的双重背景下&#xff0c;上海证券交易所&#xff08;以下简称“上交所”&#xff09;积极拥抱变革&#xff0c;携手长期合作伙伴联软科技&#xff0c;成功部署了联软安全策略管理系统&#xff08;NSPM&#xff09;。该项目不…...

Flask + ECharts+MYSQL物联网数字化大屏

基于Flask+ECharts的物联网数字化大屏系统,包含中国地图实时数据更新功能。这个系统模拟了物联网设备在全国范围内的分布和运行状况,并实时更新数据。 一、系统架构设计 技术栈 后端:Flask(轻量级路由+API支持) 前端:ECharts(地图+动态图表)、WebSocket(实时更新)…...

DisplayPort 2.0协议介绍(1)

最近开始学习DisplayPort 2.0协议&#xff0c;相比于DP1.4a&#xff0c;最主要的是速率提升到了10Gbps/lane&#xff0c;还有就是128b/132b编码方式的修改。至于速率13.5Gbps和20Gbps还只是可选项&#xff0c;在DP2.1协议才成为必须支持选项。 那在实现技术细节上有哪些变化呢…...

[蓝桥杯]取球博弈

取球博弈 题目描述 两个人玩取球的游戏。 一共有 NN 个球&#xff0c;每人轮流取球&#xff0c;每次可取集合 n1,n2,n3n1​,n2​,n3​中的任何一个数目。 如果无法继续取球&#xff0c;则游戏结束。 此时&#xff0c;持有奇数个球的一方获胜。 如果两人都是奇数&#xff…...

边缘计算应用实践心得

当数据中心的光纤开始承载不了爆炸式增长的物联网数据流时&#xff0c;边缘计算就像毛细血管般渗透进现代数字肌理的末梢。这种将算力下沉到数据源头的技术范式&#xff0c;本质上是对传统云计算中心化架构的叛逆与补充——在智能制造车间里&#xff0c;实时质检算法直接在工业…...