GiantPandaCV | 一文理解RetNet(内含公式详解!)

news/2025/3/27 12:33:17/

本文来源公众号“GiantPandaCV”,仅用于学术分享,侵权删,干货满满。

原文链接:一文理解RetNet

0 前言

paper:https://arxiv.org/pdf/2307.08621.pdf

code:https://github.com/microsoft/un

微软研究院最近提出了一个新的 LLM 自回归基础架构 Retentive Networks (RetNet)[1,4],该架构相对于 Transformer 架构的优势是同时具备:训练可并行、推理成本低和良好的性能,打破了“不可能三角”。

论文中给出一个很形象的示意图,RetNet 在正中间表示同时具备三个优点,而其他的架构 Linear Transformer、Recurrent Network 和 Transformer 都只能同时具备其中两个优点。

实验数据也显示,在语言建模任务上:

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

并且当模型大小大于一定规模时,RetNet 的表现会优于 Transformer。

接下来看一下论文给出的 RetNet 和 Transformer 的对比实验结果:

当输入序列长度增加的时候,RetNet 的 GPU 显存占用一直是稳定的和权值差不多,而 Transformer 则是和输入长度成正比。

首先看红色线和紫色线,都是输入长度在 8192 下,RetNet 和 Transformer 推理延时的对比。

可以看到当 batch size 增加的时候, RetNet 的推理延时也还是很稳定,而 Transformer 的推理延时则是和 batch size 成正比。

而 Transformer 即使是输入长度缩小到 1024 ,推理延时也还是比 RetNet 要高。

1 RetNet 架构解读

RetNet 架构和 Transformer 类似,也是堆叠 L 层同样的模块,每个模块内部包含两个子模块:一个 multi-scale retention(MSR)和一个 feed-forward network (FFN)

下面详细解读一下这个 retention 子模块。

2 Retention 机制

关于复数向量相乘可以参考文章: 

一文看懂 LLaMA 中的旋转式位置编码(Rotary Position Embedding)

2.1 Retention 的训练并行表示

2.2 Retention 的推理循环表示

3 Gated Multi-Scale Retention

4 参考资料

  • [1] https://arxiv.org/pdf/2307.08621.pdf

  • [2] https://en.wikipedia.org/wiki/Euler's_formula

  • [3] https://en.wikipedia.org/wiki/List_of_trigonometric_identities

  • [4] https://github.com/microsoft/torchscale/blob/main/torchscale/architecture/retnet.py

THE END!

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。


http://www.ppmy.cn/news/1367015.html

相关文章

Aws Ec2服务器设置密码登录

通过密钥,ssh登录到服务器 切换到root sudo -i开始设置root的新密码 passwd root输入并确认新密码即可 5.修改ssh配置文件 vim /etc/ssh/sshd_config6.重启sshd配置 systemctl restart sshd

windows/linux下其他位置调用指定nodejs脚本报错Error: Cannot find module ‘esm’

问题: 有一个nodejs脚本名为html2word,同目录下还有它对应的package.json,正常在html2word所在目录下执行脚本没问题,但是在其他目录执行时报错:Error: Cannot find module ‘esm’ 原因: 在其他位置执行node脚本时…

[pdf]《软件方法》2024版部分公开-共196页

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 潘加宇《软件方法》2024版部分公开pdf文件,共196页,已上传CSDN资源。 也可到以下地址下载: http://www.umlchina.com/url/softmeth2024.html 如果…

【Python】变量的引用

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

three.js 向量叉乘cross

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs"></div><div></div></div></el-main></el-container>…

Vue3自定义文件列表页面(含上传、搜索、复制链接)

文章目录 一、代码展示二、代码解读三、结果展示 一、代码展示 <template><div class"container"><h1>文件列表</h1><div class"header-actions"><a-input placeholder"输入关键词搜索" v-model:value"…

智慧灌区项目案例(甘肃省兰州市某重点灌区)

​甘肃省兰州市某重点灌区自上个世纪80年代建成后,灌溉面积达到30万亩,对推动当地农业发展发挥了重要作用。但长期以来,该灌区的水利管理仍主要依靠人工统计记录,缺乏实时监测和精细化管理。为实现灌区管理的现代化升级,甘肃水利局委托星创易联公司设计实施水利信息化项目。 项…

Redis 8种基本数据类型及常用命令和数据类型的应用场景

小伙伴们好&#xff0c;欢迎关注&#xff0c;一起学习&#xff0c;无限进步 文章内容为学习的一些笔记及工作中遇到的一些问题 文章目录 Redis 五大数据类型keyStringListSetHashSorted Set 三种特殊类型Geospatial 地理位置HyperloglogBitmap Redis 五大数据类型 redis 官方网…