TriForce: 突破长序列生成瓶颈的分层投机解码技术

news2025/4/17 15:22:45

在人工智能领域,大型语言模型(LLMs)的长序列生成能力一直是研究的热点。然而,随着模型规模的增长,推理过程中的内存和计算瓶颈成为了限制其应用的主要障碍。为了解决这一问题,Carnegie Mellon University和Meta AI (FAIR)的研究团队联合推出了TriForce,一种创新的分层推测解码系统。TriForce通过利用注意力稀疏性和上下文局部性,有效地缓解了关键的键值(KV)缓存和模型权重瓶颈,实现了对长序列生成的无损加速。在A100 GPU上,TriForce为Llama2-7B-128K模型带来了高达2.31倍的推理速度提升,在RTX 4090 GPU上更是达到了惊人的7.78倍加速,显著减少了生成每个token所需的时间。而且TriForce在处理大型批量数据时也展现了出色的性能,在实际应用中有着高效性和可扩展性。

Figure 1展示了 TriForce 如何使用基于检索的草图和分层推测来有效解决双重瓶颈问题。整合了两个模型和三种缓存,包括草图模型、目标模型以及草图模型的 StreamingLLM 缓存,以及目标模型的检索缓存和完整缓存。过程首先通过重复草图 γ1 步,帮助目标模型使用检索的部分 KV 缓存生成超过 γ2 个 token,然后由目标模型使用完整的 KV 缓存进一步验证这些 token

TriForce的设计深受对大模型(LLMs)处理长上下文时注意力机制的观察所启发。研究揭示了一个关键的现象:在预训练的LLMs中,即使面对长达120K的上下文,通过仅使用4K的token,就能恢复超过96%的注意力得分。这一发现表明,LLMs在处理长序列时,其注意力分布呈现出显著的稀疏性。注意力稀疏性的发现对于TriForce来说至关重要,因为它意味着在进行推测解码时,可以只利用一小部分关键信息,而不必加载整个KV缓存。

a. 展示了随着序列长度增加,使用 StreamingLLM 或 Sliding-window 与 Llama2-7B-128K 之间的自然发散持续增加,表明推测解码的接受率随着更长上下文的增加而下降。温度敏感性表明缺乏鲁棒性。 b. 与模型权重相比,随着上下文长度的增加,KV 缓存逐渐成为另一个瓶颈。 c. 随着上下文长度的增加,KV 缓存占据了大部分内存


另一个关键的观察是上下文局部性。这一概念指出,相邻的token在长上下文中往往需要相似的信息。也就是说,对于任何给定的token,与其相关的信息在上下文中往往集中在一个局部区域内。这种局部性允许TriForce在多个解码步骤中重用特定的缓存段,而不是每次都重新构建整个缓存。通过这种方式,TriForce能够显著提高解码效率,同时保持对上下文的敏感度。

a. Llama2-7B-128K 模型在 120K 上下文中展示了显著的注意力稀疏性。除了前两层外,其余层表现出显著的稀疏性。 b. 可以使用部分 KV 缓存和完整模型权重进行自我推测。使用有限预算的现有方法可以实现高接受率。 c. 在大多数层中观察到明显的局部性,随着上下文的发展这种局部性逐渐减少

这两个观察结果为TriForce提供了坚实的理论基础,使其能够通过智能地选择和重用信息来优化长序列生成过程,从而在保持生成质量的同时,显著提高推理速度。

TriForce: 创新的分层推测解码系统

TriForce系统的核心在于其创新的检索式草稿方法。这种方法通过将KV缓存分割成小块,并计算给定查询与每个块中平均key缓存的注意力,有效地识别和选择最相关的信息。这一策略不仅直观,而且无损,与现有的基于逐出策略的方法相比,如StreamingLLM和H2O,它在保持低延迟的同时,能够更准确地检索详细的上下文信息。

基于检索的草图方法。在需要长期上下文依赖的情况下,StreamingLLM 和 H2O 等方法由于其缓存更新策略而表现不佳,因为它们不可避免地且不可恢复地丢弃 KV 对


为了应对KV缓存瓶颈之外的模型权重瓶颈,TriForce采用了分层推测架构。这一架构首先使用一个轻量级模型,配备StreamingLLM缓存,对目标模型进行初步推测。这种分层的方法显著降低了草稿阶段的延迟,从而加速了整个推理过程。

TriForce的算法伪代码进一步阐释了其工作流程。系统首先初始化目标模型和草稿模型,然后构建检索缓存,并根据上下文局部性的洞察进行更新。在每次迭代中,草稿模型首先预测一定步数的token,然后目标模型使用完整的KV缓存进行自我验证。这个过程不仅构建了一个效率层级,还通过两个瓶颈的有效管理,提高了整体的推理速度。

以下是一个简化的伪代码示例,概述TriForce算法的主要步骤和结构:

# 输入参数:
# Prefix: 输入前缀序列 [x1,...,xt]
# Mp: 目标模型与完整缓存 Cp
# Mq: 草稿模型与StreamingLLM缓存 Cq
# T: 目标序列长度
# γ1, γ2: 推测长度参数
# Draft: 自回归草稿阶段
# Verify: 验证阶段
# Correct: 校正阶段

# 初始化阶段
Initialize(Prefix, Mp, Mq, T)
Prefill(Mp, C_p, Prefix)
Prefill(Mq, C_q, Prefix)
Construct(Cr, Prefix[-1])

# 迭代推断,直到达到目标序列长度 T
while N < T:
    # 草稿模型推测阶段
    for i in 1 to γ1:
        qi = Draft(Mq, Cq, x≤N)
    
    # 采样与验证阶段
    for i in 1 to γ1:
        ~xi ~ qi
        p_hat = Mp(Cr, x≤N, ~x≤i)
        if Verify(~xi, qi, p_hat):
            n += 1
        else:
            xi = Correct(qi, p_hat)
            n += 1
            break
    
    # 如果所有推测的token都被接受,则采样下一个token
    if all tokens accepted:
        xn+1 ~ p_hat
        N += 1
    
    # 更新缓存
    Update(Cr, Cq, accepted tokens)

# 返回生成的序列
return Generated_Sequence

系统实现采用了Transformer架构,并利用PyTorch CUDA图形和FlashAttention技术来最小化推测解码期间的内核启动开销,并加速注意力操作。为了保持在固定的KV缓存预算内,系统实现了额外的推测缓存结构,包括检索缓存和StreamingLLM缓存。

实验

在实证评估部分,研究团队展示了TriForce在不同硬件配置下对长序列生成的加速能力。实验结果表明,在A100 GPU上,TriForce为Llama2-7B-128K模型实现了高达2.31倍的速度提升。而在两个RTX 4090 GPU上,通过卸载设置,TriForce实现了7.78倍的速度提升,将每个token的生成时间降至0.108秒,仅是A100 GPU上自回归基线的一半。

在 A100 GPU 上的本地实验结果。给出了 TriForce 与 StreamingLLM 方法(Naive Policy)的比较,包括不同采样温度下的速度提升和接受率


除了速度提升,TriForce在处理更长上下文和不同温度设置下也展现了出色的扩展性和稳健性。实验数据显示,随着上下文长度的增加,TriForce能够保持高接受率,理论上甚至可以达到13.1倍的速度提升。即使在温度参数设置为1.0的情况下,TriForce的接受率仍然能够保持在0.9以上,显示了其在不同条件下的稳定性和可靠性。TriForce在处理大批量数据时同样表现出色,实验结果显示,在批量大小为六的情况下,每个样本包含19K上下文,TriForce能够实现1.9倍的效率提升。

(a) KV缓存预算对加速和接受率的影响
图6(a)展示了不同KV缓存预算对加速比和接受率的影响。实验结果揭示了一个重要发现:当KV缓存预算设置为4K时,可以在保持高接受率的同时,平衡草稿阶段的开销。这意味着,4K缓存预算是最优选择,它在加速模型推理和维持解码质量之间找到了一个平衡点。增加缓存预算超过4K,虽然可能进一步提高接受率,但对整体性能的提升贡献有限,反而可能增加计算和内存的负担。
(b) KV缓存块大小的选择
图6(b)探讨了在给定4K缓存预算下,KV缓存块大小对性能的影响。结果表明,过小的块大小可能导致过度拟合个别token,损害了对未来token的泛化能力。相反,过大的块大小可能会使高得分token的重要性被周围低得分token所抵消,从而限制了在有限缓存预算下的选择多样性。因此,选择合适的块大小对于实现高效的缓存利用和保持解码步骤的多样性至关重要。
(c) 与基于树的推测解码的兼容性
图6(c)说明了TriForce与基于树的推测解码方法(如Sequoia和Independent Sequences)的兼容性。这些方法通过使用多个候选来提高接受率让更多的token被接受。当TriForce与这些树状结构结合时,可以利用更大的推测预算,提高目标模型每个解码步骤生成的理论平均token数量。这表明TriForce不仅可以独立提高性能,还可以与其他先进的推测技术相结合,进一步提升LLMs的推理效率。

研究团队还进行了详细的分析和消融研究,以确定KV缓存预算和块大小对系统性能的影响。实验结果表明,4K的KV缓存预算是最有效的设置,能够平衡高接受率和减少额外草稿开销之间的关系。同时,对于4K的KV缓存预算,选择适当的块大小对于性能至关重要,过小或过大的块大小都可能影响性能。

TriForce通过利用注意力稀疏性和上下文局部性,有效地缓解了KV缓存和模型权重的双重瓶颈,显著提高了长上下文服务的效率。其在不同硬件配置上的实验结果证明了TriForce在加速长序列生成方面的潜力,有望为长上下文模型的服务带来革命性的变革。

论文链接:https://arxiv.org/abs/2404.11912

GitHub 地址:https://github.com/Infini-AI-Lab/TriForce

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

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

相关文章

[数据集][目标检测]盲道检测数据集VOC+YOLO格式2173张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2173 标注数量(xml文件个数)&#xff1a;2173 标注数量(txt文件个数)&#xff1a;2173 标注…

网络安全快速入门(十五)(下)手动创建用户及su,sudo命令

15.8 序言 前面我们已经大概了解了创建用户一些相关文件&#xff0c;接下来我们来手动创建用户&#xff0c;话不多说&#xff0c;我们直接开搞&#xff01;&#xff01;&#xff01; 15.9 手动创建用户&#xff1a; 一般来讲&#xff0c;我们创建用户通过useradd和passwd命令来…

如何合理使用群发短信呢?(短信接口JSON实例)

随着时代的发展&#xff0c;越来越多的营销推广也开始有线下转移到了线上&#xff0c;短信也变成了企业与用户之间交流沟通的桥梁&#xff0c;那么这么多的企业选择使用短信平台&#xff0c;到底群发短信好不好用呢&#xff1f;今天乐讯通短信平台就为大家来介绍一下群发短信营…

3D Gaussian Splatting for Real-Time Radiance Field Rendering

辐射场方法最近在基于多张照片或视频进行新视角合成方面取得了革命性进展。然而&#xff0c;实现高视觉质量仍然需要耗时且计算成本高的神经网络&#xff0c;而最近的快速方法不可避免地在速度和质量之间进行了权衡。对于无界和完整的场景&#xff08;而不是孤立的物体&#xf…

MacOS_奇安信天擎卸载指南,无需管理员密码

背景 奇安信天擎是一款基于云端的终端安全管理软件,在某些情况下,用户可能需要卸载该软件,例如 1、入职企业后使用的是自己的电脑,离职后监控软件还在 2、自己无意下载的软件或被病毒感染后强制下载的垃圾软件 3、员工看不惯企业监控自己的这个行为,使用技术手段屏蔽企业…

微信小程序 画布canvas

属性说明 属性类型默认值必填说明最低版本typestring否指定 canvas 类型&#xff0c;支持 2d (2.9.0) 和 webgl (2.7.0)2.7.0canvas-idstring否canvas 组件的唯一标识符&#xff0c;若指定了 type 则无需再指定该属性1.0.0disable-scrollbooleanfalse否当在 canvas 中移动时且…

python中的函数递归

函数递归&#xff0c;就是一个函数&#xff0c;自己调用自己。 如上图所示&#xff0c;是一段通过定义函数&#xff0c;编写函数体来实现for循环。实现的是从1到n的累乘。即求n的阶乘&#xff0c; 如上图所示&#xff0c;是一段函数的递归来实现1到n的累乘操作&#xff0c;将1*…

问题:前肢的前方称() #微信#经验分享#微信

问题&#xff1a;前肢的前方称&#xff08;&#xff09; A . 掌侧 B . 跖侧 C . 背侧 D . 胫侧 E . 桡侧 参考答案如图所示

数学模型:操作系统中FCFS、SJF、HRRN算法的平均周转时间比较 c语言

摘 要 研究目的&#xff1a;比较操作系统中进程调度FCFS、SJF、HRRN算法的平均周转时间和带权周转时间的大小关系。 研究方法&#xff1a;在建模分析时&#xff0c;分别举4个进程的例子&#xff0c;1个进程用两个字母分别表示到达时间和执行时间。分两种极端情况&#xff0c…

python数据分析-心脏衰竭分析与预测

研究背景 人的心脏有四个瓣膜&#xff0c;主动脉银、二尖、肺动脉和三尖源 不管是那一个膜发生了病变&#xff0c;都会导致心脏内的血流受到影响&#xff0c;这就是通常所说的心脏期膜病&#xff0c;很多是需要通过手术的方式进行改善的。随着人口老龄化的加剧,&#xff0c;心…

如何在快团团上找到优质的供货团长和挑选合适的产品进行推广?

在快团团上找到优质的供货团长和挑选合适的产品进行推广的方法如下&#xff1a; 筛选优质供货团长&#xff1a; 选择专业品类&#xff1a;根据你熟悉的领域和目标客户的需求&#xff0c;选择相应的专业供货团长。查看帮卖口碑标签&#xff1a;通过查看团长的帮卖口碑标签&#…

【排序算法】计数排序(CountSort)

一、定义 计数排序&#xff08;CountSort&#xff09;是一种非比较的排序&#xff0c;它的优势在于在对一定范围内的整数排序时&#xff0c;它的时间夫扎渡为为Ο(nk)&#xff08;其中k是整数的范围&#xff09;&#xff0c;快于任何比较排序算法。 这是一种通过空间换取时间的…

vue antdesgin table 动态表头动态数据示例

以下是一个基于 Vue 和 Ant Design Vue 的示例&#xff0c;可以动态生成表格的表头和数据&#xff1a; <template><div><a-button click"addColumn">添加列</a-button><a-table :columns"columns" :dataSource"dataSource…

2024年全国一高考数学压轴题

(3) 证明: 显然, 等差数列 { a 1 , . . . , a 4 n 2 } \{a_{1},...,a_{4n2}\} {a1​,...,a4n2​} 是 ( i , j ) (i, j) (i,j)-可分的等价于等差数列 { 1 , . . . , 4 n 2 } \{1,...,4n2\} {1,...,4n2} 是 ( i , j ) (i,j) (i,j)-可分的. 前推后显然, 我们考虑后推前, 在去…

U盘文件系统结构损坏的应对与预防

在数字化时代&#xff0c;U盘作为便携式存储设备&#xff0c;其重要性不言而喻。然而&#xff0c;当U盘文件系统结构损坏时&#xff0c;我们可能会面临数据丢失的风险。本文将深入探讨U盘文件系统结构损坏的问题&#xff0c;分析其产生的原因&#xff0c;并给出相应的数据恢复方…

JMS VS AMQP

JMS&#xff08;Java Message Service&#xff09;是一个为Java平台设计的API&#xff0c;主要针对Java开发者提供了一套用于企业级消息服务的标准接口。而AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;是一个应用层协议&#xff0c;它提供了一个开放的、标准…

如何维护Mac系统 苹果电脑怎么维护保养 MacBook日常保养

你的Mac就像一辆豪华跑车&#xff0c;不仅外观时尚&#xff0c;性能也强劲。但即使是最顶级的跑车&#xff0c;如果不定期保养&#xff0c;也会渐渐失去光彩。维护Mac系统其实并不复杂&#xff0c;只需简单的日常关怀&#xff0c;就可以让你的电脑保持最佳状态。下面&#xff0…

姿态估计_超简易demo

// 所以所谓姿态估计到底怎么实现&#xff1f; // paper核心代码有点难找&#xff0c;所以先看个简单实现感受一下 Mediapipe Mediapipe是主要用于构建多模式音频&#xff0c;视频或任何时间序列数据的框架。借助MediaPipe框架&#xff0c;可以构建令人印象深刻的ML管道&…

【无标题】2024.6.7

2024.6.7 【高考咯&#xff01;&#xff01;&#xff01;学长们加油啊&#xff01;&#xff01;&#xff01;】 Friday 五月初二 A. 双色球 【题目描述】 机房来了新一届的学弟学妹&#xff0c;邪恶的chenzeyu97发现一位学弟与他同名&#xff0c;于是他当起了善良的学长233 “…

【Text2SQL 论文】PET-SQL:用 Cross-Consistency 的 prompt 增强的两阶段 Text2SQL 框架

论文&#xff1a;PET-SQL: A Prompt-enhanced Two-stage Text-to-SQL Framework with Cross-consistency ⭐⭐⭐ arXiv:2403.09732&#xff0c;商汤 & 北大 Code&#xff1a;GitHub 一、论文速读 论文一开始提出了以往 prompt-based 的 Text2SQL 方法的一些缺点&#xff1…