NeuIPS 2024 | YOCO的高效解码器-解码器架构

该研究提出了一种新的大模型架构,名为YOCO(You Only Cache Once),其目的是解决长序列语言模型推理中的内存瓶颈。YOCO通过解码器-解码器结构的创新设计,显著减少推理时的显存占用并提升了长序列的处理效率。

现有大模型的挑战:长序列缓存的瓶颈

当前的大规模语言模型通常采用基于解码器的Transformer架构,通过缓存前序生成的键值对(KV缓存)来提升推理效率。然而,随着输入序列的增长,KV缓存占据的显存也在急剧增加。例如,一个65B参数量的语言模型,在处理512K长度的序列时,需要约86GB显存,超过了一张H100-80GB GPU的容量。此外,预填充(prefilling)长输入序列的延迟也非常高,限制了模型的实际部署。

YOCO架构:解码器-解码器的新范式

为了应对上述问题,YOCO架构应运而生。它由两个部分组成:

  1. 解码器(Self-Decoder):用于生成全局KV缓存。

  2. 交叉解码器(Cross-Decoder):通过交叉注意力机制复用自解码器生成的KV缓存。

整个模型从外部看起来依然像传统的解码器模型,能够自然适应自回归生成任务。YOCO的独特之处在于,它只需要在自解码器中缓存一次KV对,然后在交叉解码器中多次复用。这种设计不仅大幅降低了显存消耗,还保留了传统模型的全局注意力能力。

YOCO的三大核心优势

1. 显存节省,支持更长序列

YOCO通过只缓存一次全局KV对,将显存需求显著降低。与传统Transformer相比,YOCO在处理长序列时的显存占用得到了大幅优化。实验数据显示,在65B参数量的模型中,YOCO将KV缓存的显存需求减少了80倍,使得在处理1M长度的输入时,YOCO仅需12.4GB显存,而Transformer则需占用超过100GB显存。

2. 预填充加速,优化用户体验

在推理阶段,YOCO利用交叉解码器复用自解码器的输出,使得模型在预填充阶段可以提前退出,节省计算资源。例如,在处理512K长度的序列时,YOCO的预填充时间仅为6秒,相较于传统Transformer的180秒,实现了约30倍的加速。

3. 提升推理吞吐量,降低部署成本

YOCO显著提升了推理的吞吐量,使每秒生成的token数量大幅增加。在512K长度下,YOCO的吞吐量为每秒43个token,而传统Transformer仅为4.5个,达到了近10倍的提升。这意味着,YOCO能够以更少的硬件资源完成更多的推理任务,从而降低了部署成本。

YOCO的实验表现

实验结果表明,YOCO在多个语言建模任务中展现了极强的竞争力。与同等规模的Transformer模型相比,YOCO在处理长序列任务时,不仅性能更优,而且显存占用和推理延迟也明显更低。

在“针尖查找(Needle-in-a-Haystack)”测试中,YOCO将上下文长度扩展至1M,依然保持了高精度的查询结果。这表明,YOCO在长序列任务中的记忆与处理能力非常出色,适合处理如长文档摘要、代码理解等需要长上下文的任务。

此外,下表展示了YOCO与其他模型在语言建模任务中的性能对比。实验数据显示,YOCO的性能与现有最优模型相当,甚至在某些任务上有所超越,进一步验证了YOCO架构的有效性。

技术实现细节:高效的自解码器模块

YOCO的自解码器模块采用了两种高效的注意力机制来减少计算复杂度:

  1. 滑动窗口注意力(Sliding-Window Attention):通过限制注意力的窗口范围,将KV缓存的复杂度从线性降低到常量级,极大减少了显存的消耗。

  2. 门控保留机制(Gated Retention):结合数据驱动的门控机制,提升了模型的计算效率和生成效果。

YOCO在书籍和代码数据集上的实验结果表明,其累积平均负对数似然(NLL)随着上下文长度的增加而不断降低,显示了其在长序列任务中的优越性能。

总结:未来前景

YOCO通过创新性的解码器-解码器架构,突破了长序列语言模型在推理阶段的内存和延迟瓶颈。在保持模型性能的前提下,显著提升了显存利用率和推理速度,使其成为未来大模型架构的有力候选。未来,YOCO的设计理念或许还可以拓展到更多任务场景中,如长文本生成、对话系统等需要高效长序列处理的领域。

论文链接:

https://openreview.net/forum?id=25Ioxw576r

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webrtc视频会议学习(三)

文章目录 关联:源码搭建coturn服务器nginx配置ice配置需服务器要开放的端口 效果 关联: webrtcP2P音视频通话(一) webrtcP2P音视频通话(二) webrtc视频会议学习(三) 源码 WebRTC…

C++ 红黑树 【内含代码】

1. 红黑树 1.1 红黑树的概念 红黑树,是一种二叉搜索树,但在每个节点上增加一个存储为表示节点的颜色,可以使Red或Black。通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍&…

黑马程序员Java笔记整理(day05)

1.面向对象编程 2.用法 3.对象是什么 4.对象在计算机中是啥 5.无参与有参构造器 小结: 6.this的作用 7.小结 8.封装 9.小结 10.实体类 11.小结 12.static 13.小结 14.static修饰方法 15.static应用前景 16.几个注意事项 17.java中可以直接用类的名字创建数组,如: M…

Flink在Linux系统上的安装与入门

一、Flink的引入 这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有Hadoop、Storm,以及后来的Spark,他们都有着各自专注的应用场景。Spark 掀开了内存计算的先河,也以内存为赌注,赢得了内存计…

服务器命令行复制文件

服务器拷贝大文件太慢,而且容易断线,可以采用命令行复制文件 复制windows server服务器文件到linux服务器 scp D:\bim\uploadPath.zip ruoyixx.xx.xx.xx:/home/ruoyi/temp/uploadPath.zip 复制linux服务器文件到windows server服务器 scp ruoyixx.xx.…

(超详细图文详情)Navicat 配置连接 Oracle

1、下载依赖文件 Oracle官网下载直链:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html 夸克网盘下载(oracle19c版本):https://pan.quark.cn/s/5061e690debc 官网下载选择对应 Oracle 版…

内网不出网上线cs

一:本地正向代理目标 如下,本地(10.211.55.2)挂好了基于 reGeorg 的 http 正向代理。代理为: Socks5 10.211.55.2 1080python2 reGeorgSocksProxy.py -l 0.0.0.0 -p 1080 -u http://10.211.55.3:8080/shiro/tunnel.jsp 二:虚拟机配置proxifer 我们是…

[2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(2))

方法一&#xff08;string&#xff09;&#xff1a; #include <iostream> #include <string> using namespace std;// 检查是否为回文数 bool isPalindrome(int n) {string str to_string(n);int left 0, right str.size() - 1;while (left < right) {if (s…

Spring MVC练习(前后端分离开发实例)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f439;今日诗词:二十五弦弹夜月&#xff0c;不胜清怨却飞来&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; ⛳️点赞 ☀️收藏⭐️关注&#x1f4…

【ArcGIS Pro实操第11期】经纬度数据转化成平面坐标数据

经纬度数据转化成平面坐标数据 数据准备ArcGIS操作步骤-投影转换为 Sinusoidal1 投影2 计算几何Python 示例 另&#xff1a;Sinusoidal (World) 和 Sinusoidal (Sphere) 的主要区别参考 数据准备 数据投影&#xff1a; 目标投影&#xff1a;与MODIS数据相同&#xff08;Sinu…

丹摩|丹摩智算平台使用教学指南

本指南旨在为新用户提供一个详细的操作步骤和实用的入门指导&#xff0c;帮助大家快速上手丹摩智算平台。 一、平台简介 丹摩智算平台是一款强大的数据分析和计算平台&#xff0c;支持多种编程语言&#xff0c;提供丰富的数据处理和机器学习工具。无论您是数据分析师、开发者…

LLAVA论文简记

LLAVA 1. 研究动机 近年来&#xff0c;随着大语言模型&#xff08;LLM&#xff09;的发展&#xff0c;因此想向着多模态方向扩展。多模态任务&#xff08;例如图像分类、检测、生成等&#xff09;往往需要结合视觉和语言信息&#xff0c;传统的视觉模型在处理这些任务时通常将…

【嵌入式——QT】QT制作安装包

第一步 QT程序写好之后&#xff0c;编译release版本 第二步 拿到release生成的.exe文件 第三步 新建文件夹deploy 第四步 将.exe文件复制到deploy目录下 第五步 在该目录下输入cmd指令&#xff0c;回车 第六步 在打开的命令窗口下输入 windeployqt TegNetCom_1.0.…

YOLOv8模型pytorch格式转为onnx格式

一、YOLOv8的Pytorch网络结构 model DetectionModel((model): Sequential((0): Conv((conv): Conv2d(3, 64, kernel_size(3, 3), stride(2, 2), padding(1, 1))(act): SiLU(inplaceTrue))(1): Conv((conv): Conv2d(64, 128, kernel_size(3, 3), stride(2, 2), padding(1, 1))(a…

分布式储能监控系统为储能电站高效运维与精细化管理赋能

1、引言 随着全球对可持续发展和环境保护意识的增强&#xff0c;能源结构正在经历深刻的转型。传统化石能源因其不可再生性和环境污染问题而逐渐受到限制&#xff0c;而可再生能源如太阳能、风能等因其清洁、可持续的特性而受到广泛关注和推广。这一转型推动了储能技术的快速发…

课题组自主发展了哪些CMAQ模式预报相关的改进技术?

空气污染问题日益受到各级政府以及社会公众的高度重视&#xff0c;从实时的数据监测公布到空气质量数值预报及预报产品的发布&#xff0c;我国在空气质量监测和预报方面取得了一定进展。随着计算机技术的高速发展、空气污染监测手段的提高和人们对大气物理化学过程认识的深入&a…

Avalonia11中读取外部配置文件

背景&#xff1a; 在使用Avalonia开发的过程中需要使用Http请求Api&#xff0c;把Api的BaseUrl appKey等信息写在了代码中&#xff0c;当Api提供发生变化时&#xff0c;需要重新打包客户端程序&#xff0c;于是想着把此部分信息从代码中剥离出来。 需求&#xff1a; 请求服务…

解析客服知识库搭建的五个必要性

在当今竞争激烈的商业环境中&#xff0c;客服知识库的搭建已成为企业提升服务质量、优化客户体验的重要手段。一个完善的客服知识库不仅能帮助企业高效管理客户服务流程&#xff0c;还能显著提升客户满意度和忠诚度。以下是搭建客服知识库的五个必要性&#xff1a; 1. 提升服务…

Springboot 修改post请求接口入参或重新赋值

前言 很久之前写过一篇就是自动填充接口参数的&#xff0c;利用的 HandlerMethodArgumentResolver 自定义注解 Springboot Controller接口默认自动填充 业务实体参数值_springboot设置入参默认值-CSDN博客 现在这一篇也差不多&#xff0c;达到的目的就是重新去给post请求的参数…

如何创建一个Next.js项目(超简单)

1、安装Node.js&#xff08;官网Node.js下载也行&#xff0c;但Windows更加推荐nvm工具&#xff09; 2、运行node -v和npm -v两条命令&#xff08;检验是否下载成功Node.js&#xff09; 3、npx create-next-applatest&#xff08;使用 启动一个新的 Next.js 应用 create-next…