You Only Cache Once:YOCO 基于Decoder-Decoder 的一个新的大语言模型架构

这是微软再5月刚刚发布的一篇论文提出了一种解码器-解码器架构YOCO,因为只缓存一次KV对,所以可以大量的节省内存。

以前的模型都是通过缓存先前计算的键/值向量,可以在当前生成步骤中重用它们。键值(KV)缓存避免了对每个词元再次编码的过程,这样可以大大提高了推理速度。

但是随着词元数量的增加,KV缓存占用了大量GPU内存,使得大型语言模型的推理受到内存限制。所以论文的作者改进了这一架构:

YOCO是为自回归建模而设计的,例如大型语言模型(llm)。所提出的解码器-解码器架构有两部分,即自解码器和交叉解码器,如下图所示

2个解码器架构

YOCO采用L块堆叠,其中前L/2层为自解码器,其余模块为交叉解码器,自解码器和交叉解码器都遵循与Transformer类似的块(即,交叉注意力和FFN)。

自解码器与交叉解码器的区别在于它们各自的注意力块不同,自解码器使用高效的自注意机制(例如,滑动窗口注意力)。而交叉解码器使用全局交叉注意力来关注自解码器输出产生的共享KV缓存。

自解码器:

以词元嵌入X0作为输入,计算中间向量表示M = X * u /²

这里的ESA(·)表示自注意力实现,SwiGLU(X) = (swish(XWG)⊙XW1)W2,其中的 LN(·)使用RMSNorm。

还在自注意力中使用了mask(遮蔽掉后面的内容),这个自注意力的模块在推理时的内存占用是 O(1),即KV缓存数为常数。

交叉解码器:

自解码器的输出X * u /²产生交叉解码器的全局KV缓存K, V:

其中,WK,WV∈Rd×d为可学习权重。

交叉解码器层在自解码器之后堆叠,获得最终输出向量XL。KV缓存{K}、{V}被所有L/2交叉解码器模块重用:

其中Attention(·)是标准的多头注意力,Wˡᵩ∈Rd×d为可学习矩阵。

交叉注意也应用了mask,并且使用分组注意力,进一步节省了KV缓存的内存消耗,在获得Xᴸ后,使用softmax分类器执行下一个词元的预测

推理的优势

1、节省GPU内存

下表比较了transformer和YOCO的存储复杂度,其中N、L、D分别为序列长度、层数和隐藏维数

全局KV缓存被重用,并且只需要恒定的缓存,数量为O (N + CL),其中N为输入长度,C为常数(如滑动窗口大小),L为层数。这样对于长序列,CL远小于N,因此只需要大约O(N)个缓存,就是论文名字说的 “只缓存一次”。相比之下,Transformer解码器在推理期间必须存储N × L个键和值,与Transformer解码器相比,YOCO大约为缓存节省了L倍的GPU内存

2、减少预填充时间

下图显示了YOCO 推理时的并行编码和逐个解码输出。

如上图所示,由于交叉解码重用了自解码的输出,使得预填充可以在不改变最终输出的情况下提前得到结果,从而大大加快了预填充阶段。

自解码器的选择

1、门控保留率

门控保留(gRet,又名gRetNet或RetNet-3)通过数据依赖的门控机制增强了保留,从而在序列建模中同时实现了训练并行性、良好的性能和较低的推理成本。该方法统一了并行、递归和块递归计算范式

并行表示的门控保留率定义为:

其中W,Wₖ,Wᵥ∈Rd×d和Wγ∈Rd×1是可学习的权重,并且温度项τ鼓励γ到1以更好地记忆

2、递归表示

门控保持的输出等价于并行表示,可以循环计算。对于第n个时间步长,通过以下方式获得输出:

其中Q K V γ和并行表示的定义是一样的

3、分段递归表示

分段表示是循环表示和并行表示的统一形式。给定块大小B,输出以块为单位计算,计算分为块内部分和跨块部分设[i]为第i个块,即x[i] = x(i−1)B+1,····,xiB,则第i个块计算为:

其中Ri是第i块的中间态,β总结了数据控制的衰变γ。

4、多头门控保留

与多头注意[VSP+17]和多尺度保留类似,作者对每个头部应用门控保留,并将输出组合在一起:

其中WG,WO∈Rd×d是可学习的矩阵,GroupNorm对每个头进行规范化,swish gate应用于增加非线性

5、滑动窗口的注意力

滑动窗口注意将注意范围限制为固定的窗口大小C,在推理过程中,KV缓存复杂度可以从O (N)降低到O ©,即内存占用是恒定的,而不是随着序列长度的增加而增加。与多头自注意力类似,可以通过以下方式计算滑动窗口注意的输出:

这里的WQ,WK,WV,WO∈Rd×d为可学习矩阵,窗口因果掩码B控制每个查询只关注距离小于C

实验结果

作者通过增加训练词元的数量来训练一个3B大小的YOCO语言模型。然后与基于transformer的语言模型进行比较。

与LM Eval Harness上的OpenLLaMA-v2-3B、StableLMbase-alpha-3B-v2和StableLM-3B-4E1T进行比较结果如下:

跨端任务的实验结果表明,YOCO与Transformer语言模型取得了相当的结果,同时在训练方面具有可扩展性。

Llama Transformer、带门控的YOCO (YOCOgRet)和带滑动窗口注意力的YOCO (YOCOSWA)使用相同的训练数据和设置训练不同规模(160M、400M、830M、1.4B、2.7B、6.8B、13B)的语言模型。Transformer架构增强了Llama的改进,如RMSNorm、SwiGLU和消除偏差。

与llama优化架构相比,YOCO在160M到13B的范围内获得了相当的性能,这表明YOCO在模型尺寸方面可以有效地扩展。YOCOgRet优于Transformer和YOCOSWA是因为注意力和混合架构,它们的归纳偏差往往是相互补充的。

将YOCO-3B的上下文长度扩展到1M标记,并对长上下文模型在检索和语言建模任务上进行评估。

YOCO- 3b - 1m以近乎完美的精度通过了“Needle-In-A-Haystack”测试,表明YOCO具有较强的长上下文建模能力

下表报告了N needles的精度。N = 1为参考单针检索,N > 1为多针检测。评估以128K长度进行,因为大多数以前的长上下文模型都是用这个长度进行调优的。

YOCO-3B-1M可以用一半的模型尺寸达到相当的性能。与MiniCPM-128K和ChatGLM3-128K相比,YOCO-3B-1M也优于这些语言模型。

下表显示了累积平均负对数似然(NLL)作为上下文长度的函数

NLL随序列长度的增加而降低,表明YOCO可以有效地利用远程依赖进行语言建模。

推理的优势

将YOCOgRet与Transformer进行比较

1、GPU内存

推理内存消耗由模型权重、中间激活和KV缓存三部分组成。

随着上下文长度的增加,KV缓存成为主要的内存瓶颈,而模型权重消耗恒定的内存,表明YOCOgRet减轻了激活成本和KV缓存内存占用。下图显示了Transformer和YOCO在不同长度上的推理内存,由此得出使用YOCO可以显著降低内存成本的结论

下图显示了不同模型大小的每个词元的KV缓存的GPU内存消耗

由于YOCO只缓存一层全局键值对,所以它需要的内存比Transformer大约少L倍。

在预填充阶段,模型并行地对输入进行编码。下图显示了不同长度的预填充延迟,即给定输入提示符在生成第一个结果之前的编码时间

Transformer的时间呈二次增长,而YOCO的时间呈线性增长。即使对于较短的输入长度,例如32K, YOCO仍然可以加速2.87倍

吞吐量表示模型每秒可以处理多少词元,包括预填充时间和生成时间下图显示了Transformer和YOCO在改变上下文长度时的推理吞吐量。

YOCO实现了更高的跨上下文长度的吞吐量。

总结

论文提出了一种用于大型语言建模的解码器-解码器体系结构(YOCO)。与Transformers相比,YOCO具有更好的推理效率和竞争性能。实验结果表明,在各种设置下,YOCO在大型语言模型上取得了良好的效果,即扩大训练词元数量,扩大模型大小,将上下文长度扩大到1M词元。分析结果还表明,YOCO将推理效率提高了几个数量级,特别是对于长序列建模

论文地址:

https://avoid.overfit.cn/post/90e0bd170644476cbccabb039e7105ae

作者:SACHIN KUMAR

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WHAT - CSS Animationtion 动画系列(一)

目录 一、介绍二、animation-name三、animation-duration四、animation-timing-function4.1 介绍4.2 具体实践:抛物线 五、animation-delay六、animation-iteration-count七、animation-direction八、animation-fill-mode九、animation-play-state 今天我们主要学习…

HackMyVM-Minimal

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 gobuster 文件包含漏洞 提权 web信息收集 main方法 question_1 question_2 question_3 prize.txt 软连接 信息收集 arp ┌──(root?0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: E…

中职智慧校园建设内容规划

1. 渠道先行 1) IT根底设施渠道是支撑智慧学校使用体系所必需的运转环境,是首要需求建造的内容,但是要遵从有用准则,IT设备开展很快,更新很快,不要片面追求全而新; 2) 使用根底渠道是支撑智慧学校使用体系作…

SCI一区论文蛇优化器(SO)独家原创改进!适合发表paper!

购买改进/原创算法避坑指南 这会触及很多人的利益,但是不得不发声,教大家避坑!因为现在元启发式/群智能算法改进、原创算法市场太乱了,导致产生了很多受害者。 1、增加复杂度的不要买,大家可以叫商家给出运行时间比较…

Java 修饰符

Java 修饰符 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类、方法或者变量,通常放在语句的最前端。我们通过下面的例子来说明: public class ClassName { // … } private boolean myF…

74从零开始学Java之排序算法中的冒泡和选择排序

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们要想成为一个优秀的程序员,其实非常关键的一点就是要锻炼培养自己的编程思维,就好比一个狙击手,要通过大量的射击训练要用大量的子弹喂出来。同样的…

第十三篇:智慧之网:深度探索关系型数据库的数学奥秘与实战技艺

智慧之网:深度探索关系型数据库的数学奥秘与实战技艺 1. 引言 1.1 数据时代的基石 在数字化的浪潮中,数据已成为新时代的石油,而关系型数据库则是这座数据矿藏的精炼厂。自E.F. Codd在1970年提出关系模型以来,关系型数据库以其坚…

新iPadPro是怎样成为苹果史上最薄产品的|Meta发布AI广告工具全家桶| “碾碎一切”,苹果新广告片引争议|生成式AI,苹果倾巢出动

Remini走红背后:AI生图会是第一个超级应用吗?新iPadPro是怎样成为苹果史上最薄产品的生成式AI,苹果倾巢出动Meta发布AI广告工具全家桶,图像文本一键生成解放打工人苹果新iPadPro出货量或达500万台,成中尺寸OLED发展关键…

Zynq开发-使用PYNQ快速入门摄像头MIPI驱动(OV5640)

目录 1. 简介 2. 配置代码 2.1 初始化寄存器 2.2 分辨率寄存器 2.3 白平衡寄存器 2.4 配置寄存器代码 2.5 顶层代码 3. 细节指引 4. 总结 1. 简介 PYNQ是一种基于Python的开发环境,专门设计用于快速、简便地在Xilinx的Zynq平台上进行开发。在《Zynq开发之…

关于‘==’与equals的区别

我写的也不清楚,有兴趣的可以看这位大佬的文章链接,说的很清楚 https://www.cnblogs.com/Latiny/p/8099581.html#!comments 与 equals 方法 判断两个变量是否相等有两种方式:一种是利用 运算符,另一种是利用equals方法。 注意…

【C++11】C++11类与模板语法的完善

目录 一,新的类功能 1-1,默认成员函数 1-2,强制生成关键字 二,可变参数模板 2-1,模板参数包 2-2,STL容器empalce的相关接口 一,新的类功能 1-1,默认成员函数 C11之前的类中有…

自拍欺骗成为流行的身份证件欺诈技术

据 Socure 称,文档图像叠加是 2023 年最流行的身份证件欺诈技术,在所有被拒绝的身份证件中,有 63% 发生这种情况。 自拍欺骗和冒充在与文件相关的身份欺诈中占主导地位 当用户拍摄照片或使用 ID 的屏幕截图图像(而不是提供文档的…

【牛客】SQL201 查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t

1、描述 有一个薪水表,salaries简况如下: 请你查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t,以上例子输出如下: 2、题目建表 drop table if exists salaries ; CREATE TABLE salaries ( emp_no int(11) NOT N…

现代制造之Solidworks三维建模篇

现代制造 有现代技术支撑的制造业,即无论是制造还是服务行业,添了现代两个字不过是因为有了现代科学技术的支撑,如发达的通信方式,不断发展的互联网,信息化程度加强了,因此可以为这两个行业增加了不少优势…

【微服务】spring aop实现接口参数变更前后对比和日志记录

目录 一、前言 二、spring aop概述 2.1 什么是spring aop 2.2 spring aop特点 2.3 spring aop应用场景 三、spring aop处理通用日志场景 3.1 系统日志类型 3.2 微服务场景下通用日志记录解决方案 3.2.1 手动记录 3.2.2 异步队列es 3.2.3 使用过滤器或拦截器 3.2.4 使…

唤醒手腕 Go 语言 并发编程、Channel通道、Context 详细教程(更新中)

并发编程概述 ​ 一个进程可以包含多个线程,这些线程运行的一定是同一个程序(进程程序),且都由当前进程中已经存在的线程通过系统调用的方式创建出来。进程是资源分配的基本单位,线程是调度运行的基本单位&#xff0c…

CSS---Emmet(二)

一、Emmet语法 Emmet语法是一种用于快速编写HTML和CSS的缩写技术。它允许开发者通过简洁的表达式快速生成复杂的代码结构,极大地提高了编码效率。使用Emmet,你只需要写出一些简短的缩写符号和操作符,然后通过快捷键(通常是Tab键&…

[单机]完美国际_V155_GM工具_VM虚拟机

[端游] 完美国际单机版V155一键端PC电脑网络游戏完美世界幻海凌云家园 本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是…

定时任务的几种实现方式

定时任务实现的几种方式: 1、JDK自带 (1)Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。…

kali linux2024.1版安装

1 基于 VMware 安装 Kali 系统 打开已经安装好的 VMware 程序,点击选项卡中的“主页”--》而后点击“创建新的虚拟机” 选择“典型(推荐)”,并点击“下一步” 客户机操作系统镜像选择:选择“稍后安装操作系统”,并点击“下一步”…