Block Transformer:通过全局到局部的语言建模加速LLM推理

2024-06-08 10:36

本文主要是介绍Block Transformer:通过全局到局部的语言建模加速LLM推理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在基于transformer的自回归语言模型(LMs)中,生成令牌的成本很高,这是因为自注意力机制需要关注所有之前的令牌,通常通过在自回归解码过程中缓存所有令牌的键值(KV)状态来解决这个问题。但是,加载所有先前令牌的KV状态以计算自注意力分数则占据了LMs的推理的大部分成本。

在这篇论文中,作者提出了Block Transformer架构,该架构通过在较低层次之间的粗糙块(每个块代表多个令牌)的自注意力来模拟全局依赖性,并在较高层次的每个局部块内解码细粒度的令牌,如下图所示。

论文的主要贡献包括:

  • 发现了在自回归变换器中,全局和局部建模在推理时的核心作用和好处,特别是局部模块的重要性。
  • 利用这些见解可以优化架构中的推理吞吐量,与普通transformers相比,显著提高了性能与吞吐量

Block Transformer

Block Transformer包括三个组成部分:

  1. 嵌入器:嵌入器将每个LB令牌的块聚合成一个输入块嵌入。
  2. 块解码器:块解码器对整个块序列应用自注意力以模拟全局依赖关系。
  3. 令牌解码器:令牌解码器在每个块内应用自注意力以处理细粒度的局部依赖性并解码个别令牌。

为什么Block Transformer高效?

  • 全局到局部的方法可以通过将全局建模的昂贵瓶颈隔离到较低层并在上层的独立块内进行局部建模,这样可以减轻检索先前KV缓存的延迟和内存开销。
  • 粗粒度的全局建模(块级解码)通过块长度因子缓解了KV缓存的瓶颈,同时保持了考虑完整上下文的能力。局部解码几乎没有预填充的成本,并且几乎消除了KV缓存开销,因此在推理硬件上的利用率中受益。
  • 令牌解码器可以用更多的FLOPs进行细粒度的语言建模,对推理吞吐量的影响最小。
  • 虽然block transformer需要比普通transformer更多的参数以保持可比的性能,但实际的吞吐量瓶颈是KV缓存开销,并且仍然可以实现更高的速度提升。

嵌入器 Embedder

嵌入器优先考虑简单性,主要处理小块长度(2-8),使用查找表Eemb∈RV×Demb来检索和连接可训练的令牌嵌入,其中令牌嵌入维度Demb设置为D/LB,D是整个网络中使用的块表示维度。

块解码器 Block decoder

块解码器的目标是通过关注前面的块来使块表示具有上下文性,利用嵌入器的输出作为输入。这种自回归transformer在块级别操作,产生输出块嵌入(也称为上下文嵌入),使得令牌解码器能够自回归地解码后续块的令牌内容。从嵌入器得到的输入块嵌入,源自输入令牌x0:(i×LB−1),块解码器输出一个上下文嵌入,包含预测x(i×LB)😦(i+1)×LB−1)所需的信息。这种方法通过使用粗粒度块输入而不是单个令牌,减轻了自注意力的二次成本,从而减少了给定序列的上下文长度,同时保持了全局建模能力和硬件加速密集注意力的便利性。

令牌解码器 Token decoder

令牌解码器使用来自上下文块嵌入的全局上下文信息局部解码下一个块的个别令牌。令牌解码器也是一个标准的自回归transformer,具有自己的嵌入表Etok∈RV×Dtok和分类器。令牌解码器消除了预填充(仅在块解码器中必需),因为上下文信息由输出块嵌入提供,因此称之为上下文嵌入。KV缓存IO,批量解码期间的一个主要瓶颈,几乎被消除。与普通transformer相比,因为与完整上下文长度的成本是线性的,而普通注意力的KV缓存IO与完整上下文长度是二次的,因此计算单元的利用率更高。

实验结果

下表显示了普通transformer和块transformer模型之间的性能比较。

当块transformer模型的参数是普通模型的两到三倍时,在五个零样本评估任务上实现了可比的困惑度和准确度。而下图显示了吞吐量到语言建模性能的前沿。吞吐量表示每秒生成的令牌数量,每个点旁边的数字代表非嵌入参数的数量。

(左:(a),(d))参数分配比例之间的平均损失和位置损失。该比例表示为块解码器到令牌解码器的比例

(中:(b),(e))与块长度LB相关的平均损失和位置损失。

(右:(c),(f))嵌入器和令牌解码器变体的训练损失曲线 可以观察到,当块transformer的提示长度为8K时,其吞吐量超过了普通模型提示长度为2K的吞吐量。

所以这就是论文说的,虽然参数多了,但是吞吐量却提高了,下面我们详细分析参数分配比例和块长度:

a) 困惑度在不同分配比例中呈现U型模式

在上图(a)中展示了三种模型大小的五个不同比例的训练损失,并发现对于LB=4的模型,一对一的比例在所有模型大小中始终是最优的。如果任一侧太小,性能会明显下降,这证明了块解码器和令牌解码器在语言建模中的协同效应和同等重要性。

b) 更大的块解码器和令牌解码器分别在初始位置和后期位置降低困惑度

在上图(d)中测量了块内每个位置的平均损失。位置损失通常呈现U型模式,与以前的多尺度语言模型和块并行解码方法的发现一致。较大的块解码器由于仅基于上下文嵌入进行预测,显著降低了初始位置的损失。相比之下,较大的令牌解码器通过更好地利用局部上下文,提高了后期令牌的预测准确性。

c) 较短的块长度有利于较大的块解码器,而较长的块长度则更适合令牌解码器

上图(b)显示,训练损失仍然在不同分配比例中呈现U型模式,无论块长度如何。最佳比例随块长度变化:较短的块受益于较大的块解码器,而较长的块在令牌解码器中拥有更多参数时表现更好,这是由块解码器的FLOPs与块长度成反比关系导致的。

d) 较大的令牌解码器和较长的块长度有助于实现高吞吐量

从吞吐量的角度评估分配比例和块长度。配备较大令牌解码器的模型通过在轻微性能妥协下实现更高的吞吐量达到最优。增加块长度改善了吞吐量,因为块解码器中的KV缓存长度按比例减少。

全局到局部的语言建模分析:

1、全局到局部的语言建模有效优化了相对于性能的吞吐量

下图显示了不同块长度的训练损失曲线。括号中的数字代表最大吞吐量,以每秒1K令牌计算,分别用于预填充和解码的设置。

随着块长度的增加,训练损失以对数线性变化,吞吐量呈指数增长,清楚地展示了全局到局部建模的效率。

2、块transformer可以有效利用完整上下文

下图显示了PG19测试集上不同令牌位置的损失。平均每128个序列进行平滑。

后期令牌的预测概率始终较高,表明论文的架构,区分了块级和令牌级解码器,有效地利用了至少2K令牌的上下文。

总结

Block Transformer架构突出了自回归变换器中全局到局部建模的推理时优势,实证发现表明全局和局部组件都扮演了至关重要的角色,对于全局和局部的理解不仅可以加速推理,可能还会对以后的架构改进产生新的方向。

论文地址:

https://avoid.overfit.cn/post/6867c4c1e9f24d3fb5fef2cd2ecfd989

作者:SACHIN KUMAR

这篇关于Block Transformer:通过全局到局部的语言建模加速LLM推理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1041945

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

时间服务器中,适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?   NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。 NTP 实现什么目的?   目的很简单,就是为了提供准确时间。因为我们的手表、设备等,经常会时间跑着跑着就有误差,或快或慢的少几秒,时间长了甚至误差过分钟。 NTP 服务器列表 最常见、熟知的就是 www.pool.ntp.org/zo

C语言 将“China”译成密码

将“China”译成密码,密码规律是:用原来的字母后面的第4个字母代替原来的字母。例如,字母“A”后面的第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。编译程序用付赋初值的方法使c1,c2,c3,c4,c5这五个变量的值分别为“C”,“h”,“i”,“n”,“a”,经过运算,使c1,c2,c3,c4,c5分别变成“G”,“l”,“m”,“r”,“e”。分别用put

C语言入门系列:探秘二级指针与多级指针的奇妙世界

文章目录 一,指针的回忆杀1,指针的概念2,指针的声明和赋值3,指针的使用3.1 直接给指针变量赋值3.2 通过*运算符读写指针指向的内存3.2.1 读3.2.2 写 二,二级指针详解1,定义2,示例说明3,二级指针与一级指针、普通变量的关系3.1,与一级指针的关系3.2,与普通变量的关系,示例说明 4,二级指针的常见用途5,二级指针扩展到多级指针 小结 C语言的学习之旅中,二级

[ip核][vivado]Block Menory Gennerator 学习

<刘东华的xilinx系列FPGA芯片IP核详解>读书摘录: 1. 2. 3.

axios全局封装AbortController取消重复请求

为什么? 问题:为什么axios要配置AbortController?防抖节流不行吗? 分析: 防抖节流本质上是用延时器来操作请求的。防抖是判断延时器是否存在,如果存在,清除延时器,重新开启一个延时器,只执行最后一次请求。节流呢,是判断延时器是否存在,如果存在,直接return掉,直到执行完这个延时器。事实上,这些体验感都不算友好,因为对于用户来说,得等一些时间,尤其是首次请求,不是那么流畅