如何在高通 Cloud AI 100上使用推理解码 (SpD) 和微缩放(MX)格式将 LLM 解码性能提高四倍
发表于 2024-03-19 16:37:59

点击查看 动态视频演示

1高通 Cloud AI 100 Ultra 执行生成任务 (1) FP16 权重基线 (2) 使用 MX6 加速 (3) MX6 SpD 加速

推测采样 (SpS)也称为推测解码(SpS),和通过 MXFP6 微缩放格式进行权重压缩,是两种高级技术,可以显著提高大语言模型 (LLM) 推理 AI 工作负载的LLM解码速度。这两种技术都可用于高通数据中心人工智能加速器的LLM加速。要显著提高推理性能,请先了解 Amazon AWS EC2 Cirrascale 云服务

本文探讨了两种高级技术在两个大语言模型上的应用:CodeGen 1-7B Llama 2-7B-Chat-FT展示了加速 AI 处理和效率的潜力。我们将为您揭开这一进步的细节,您也可以先浏览 高通云人工智能 Github 上的推测解码功能文档。

语言模型(LM)和自回归生成

本节介绍基于传统自回归解码的LLM解码的基础知识,及其固有的多令牌生成顺序特性。

文本补全是 LM 的常见任务:给定提示文本,LM 会生成合理的最终文本。

LM 以令牌为文本原子单位粒度处理文本。令牌相当于单词中的子词。LM 可以处理的令牌集称为词汇表,用 Σ 表示。

语言模型将一系列令牌作为输入,并在词汇表中生成概率分布函数(pdf)。从此概率分布函数中抽样在输入后给出了一个合理的令牌。在实现过程中,Σ 上的 pdf 表示为长度为 |Σ|的向量,包含元素[0,1],总和为 1

自回归 AR 生成

通常,我们希望生成多个后续令牌,而不仅仅是一个令牌。给定 m 个令牌 u1,...,um 的提示语,生成 n 个令牌 v1,...,vn,但是需要 n 次调用 LM(作为仅解码器转换器模型实现),如下所示:

2 自回归 AR)生成概述

2 中,观察上述完成生成过程的以下内容:

Logits 和翘曲LM 生成一个词汇表大小的向量:logits。通过 softmax 对其进行归一化,在 Σ 上得到一个 pdf。从此 pdf 中采样一般称为多项式采样

这样的 pdf 也可以被翘曲,将概率质量重新分布于 Σ 的小子集。

多项式采样常用的特殊形式是贪婪采样,由top-1翘曲产生。它将所有概率质量置于具有最高 logit 值的令牌,而将 0 置于其他令牌。从此类分布中采样将始终产生具有最高概率/logit 值的令牌。

多次调用LM 每次被调用 n - 每个生成的令牌调用一次。每次调用都使用模型的所有参数。

自回归:在下一次迭代中,LM 的输出与其输入相结合。

因果关系:如果不生成所有先前的令牌,就不能生成v_i,因此,生成是一个连续的过程——vi vj ij 的生成不能并行处理。

重复计算LM 调用是独立的,并且 LM 不会在调用之间维护内部状态。这将导致同一输入被多次处理,从而生成相同的键值向量集。例如,提示语本身被处理 n 次,生成的令牌 vi 被处理 n-i 次。

使用 KV 缓存(KV$)减少计算,加速自回归生成

避免重复计算的常用方法是在调用之间维护 LM 的内部状态:键值缓存(KV$)。此模型 LM_with_KV$ 的功能与上述 LM 相同,但操作上存在以下差异:

  • 当首次调用提示语 u1,...,um 时,将创建 KV$ 并写入其中,即 m 提示语的键值向量。
  • 为后续令牌生成而调用时:
    • 仅将上一次迭代生成的单个令牌作为输入,而非不断累积的令牌输入。
    • 计算单个输入令牌的键查询值向量,并将键值附加到 KV$
    • 仅处理 LM 所有层的单个令牌,但使用 KV$ 中所有键值向量计算单个令牌的因果注意力(causal attention)。

使用 LM_with_KV$() 的文本补全可以重写如下:

值得强调的是,具有适当 KV$ 内容的 LM_with_KV$() LM() 是相同的函数——两者均计算可用于预测 vi 之后下一个令牌的词汇表上相同条件概率分布。

LM(u1..um v1…vi ) ≡ LM_with_KV$(vi) ≡ p( .|u1,u2,…,um,v1,…vi)

LM 补全生成性能配置文件

LM_with_KV$() 执行阶段将提示语作为输入并生成第一个令牌,称为预填充阶段。以自回归方式生成后续令牌(一次生成一个令牌)的执行阶段称为解码阶段

这些阶段使用完全不同的性能配置文件。预填充阶段只需要对 LM 调用一次,需要从 DRAM 获取一次模型的所有参数,并重用 m 次,处理提示语中的所有 m 个令牌。如果m值足够大,则预填充阶段的计算受限高于内存带宽受限。

另一方面,解码阶段对 DRAM 带宽的限制则高于计算限制,因为需要获取模型的所有参数,处理一个输入令牌。此外,加速器计算资源的利用率非常低,因为一次只处理一个令牌。换句话说,解码阶段可以在不影响延迟的情况下执行额外的计算。

对于一阶近似值,在解码阶段,LM 可以生成的令牌数量可以使用以下公式计算:DRAM-Read-Bandwidth(字节/秒)除以模型的容量(以字节为单位)。

推测解码

AR 解码无法并行处理,因为其因果性只能连续处理:令牌v i+1 只能在令牌 vi 生成后生成。下面我们来看看 SpD 是如何克服这个障碍的。

检查 K (>1) 令牌序列是否是提示语的合理延续比生成该 K 令牌延续更快——因为前者只需要调用一次 LM,‌SpD 正是利用了这样的特点。

SpD 中,合理补全由另一个容量较低的 LM(称为草稿语言模型 DLM))生成。在这种情况下,与此相对的原始 LM 称为目标 LM TLM)。

要检查v_1,...,v_K是否是u1‌…um 的合理补全,需要检查以下 K 条件:

v1...vi u1‌…um的合理补全(i=1,..,K

由于检查上述 K 条件内在并行性,可以通过调用一次 LM 实现——而生成 K 个令牌需要 K 次顺序调用。

为使整体推测解码方案更快,需要适当选择以下参数:

  • TLM 相比,DLM 的相对容量需要足够小,以自回归方式生成快速推测,同时相对容量又需要足够大,以生成 TLM 合理补全。
  • 推测长度 K 需要足够小,确保 TLM 单次调用检查补全和 DLM 生成时间不会过分消耗计算资源。

更正式地说,给定 u1‌…um 的提示语和可能的补全 v1...vK,可以有效地评估以下条件 pdf

pLM(.|u1…um)

pLM(.|u1…um,v1)

pLM(.|u1…um,v1,…,vi-1) for i=2..K

以上表示 LM_with_KV$() 的一次调用,输入 K 个令牌 v1,...,vK KV$,其中包含 u1‌…um 键值向量。此调用也称为对 K 个令牌 v1,...,vK 的序列进行评分。

总之,SpD 依赖于这样一个事实,即对于较小的 K 值,对 K 令牌进行评分产生的延迟与自回归生成单个令牌相比,没有区别,或者略高,因为计算单元在 AR 解码阶段未得到充分利用。

推测解码的组件

SpD 中有三个功能组件,可以根据给定 m 个令牌 u1,um 提示语生成 n 个后续令牌。

TLM: 我们用于生成补全的 LM 称为目标或真 LMTLM)。

DLM: 一个较小的 LM 用于猜测 K 令牌的补全,称为草稿 LM DLM),一次自回归生成一个令牌。

    • n 相比,K 是一个较小的数字。由于 DLM 很小,因此增加的延迟也应该是最小的。
    • DLM 生成的序列是 TLM 推测补全

MRS: 用于决定 TLM 是否接受推测补全或其前缀的概率接受方案,即修改拒绝采样 MRS)。

    • 这是解码过程的核心,保证了推测采样的正确性。请注意,从 DLM 的角度来看,推测补全可能是合理补全,但对于 TLM 来说可能并非如此。因此,TLM 可能只接受推测的前缀,甚至不接受任何前缀。接受决定本质上基于概率的。作为 MRS 核心的概率推理是确保接受 u1,..umt1,..ti‌‌  的概率确实匹配 TLM 分配的概率pTLM(u1,..umt1,..ti)

推测解码过程

首先,我们从较简单的情况入手,即 DLM TLM 使用贪婪采样而不是一般的多项式采样。这种情况较为简单的原因是,当 pdf 变成 1-hot pdf 时,所有的概率推理都可以简化为确定性推理。

3DLM K 令牌 AR 生成

贪婪采样

对于给定的 m 个令牌提示语,DLM 自回归生成 K 个令牌 t1,..,tK,一次一个,并调用 K 次(如上图 3 所示)。

TLM 将处理序列 u1,u2,..um,t1,..,tK,调用一次 TLM 并计算 v1,,vK+1(如下图 4 所示)。

    • v1 TLM 根据  u1‌…um 预测的下一个令牌。

4 推测时 TLM 单次调用

    • vi TLM 根据 u1,u2,..um,t1,..,ti-1 预测的下一个令牌(1 < i K + 1)。

改进的拒绝采样(MRS)算法:该组件从 DLM t1‌,…tK 中获取 K 个推测令牌,通过评分过程从 TLM v1‌,…v(K+1) 获取 K+1 个推测令牌。输出是提示语 u1…um期望的合理补全。从左到右扫描推测令牌,一次扫描一个,查看其是否与 TLM 在评分期间采样的相应令牌匹配。如果是,则被接受为合理补全;如果不是,则该过程将停止,来自 TLM 的令牌作为被拒绝令牌的替代,而其余的推测则被拒绝。如果全部接受,则接受额外的令牌。参见图 7,了解 K=3 时可能的接受情况。 5 DLM TLM 上使用贪婪采样的 MRS

6:推测的可能补全

此时,我们只需调用 1 TLM K 次调用 DLM,即可为 TLM 生成至少 1 个且最多 K+1 个令牌。

重复上述推测-接受过程,直至生成所需数量的 n 个令牌。

有一个重要的实现细节,我们在这里不作详述,即 DLM TLM KV$ 应该清除被拒绝的令牌。

多项式采样

高通 Cloud AI 100支持 DLM TLM 执行多项式采样的一般用例。在这种情况下,当 TLM 对输入序列进行评分并输出条件 pdf 时,MRS 方案需要以适当的概率做出概率决策,以便从所需的目标分布中对补全采样。有关多项式采样的进一步说明,请参阅此处本文的扩展版本。

总之,SpD 使用自回归的较小容量模型 DLM),推测多令牌补全。由于 DLM 较小,因此执行速度远快于  TLMMRS 算法仅调用一次 TLM 并接受推测的前缀,验证推测是否是 TLM 的合理补全。理论上可以保证,DLM TLM 之间的推测-接受握手过程不会损失准确性。

使用微缩放(Mx)格式执行仅权重量化

除推测采样之外,使用微缩放(Mx)格式的仅权重量化还可以在 LLM 解码上实现 ~2 倍的加速。

2023 年,AMDArm、英特尔、MetaMicrosoftNVIDIA Qualcomm 成立了微缩放格式(MX)联盟,创建用于 AI 训练和推理的下一代 6 位和 4 位数据类型并形成标准。高通 Cloud AI 100 已将 MxFP66 位数据类型)作为权重压缩格式。当用户选择此编译选项时,编译器将在离线编译阶段自动将 FP32 FP16 中的权重压缩为 MxFP6 格式。以这种形式压缩可节省 61% 的权重,从而减轻 DRAM 容量压力。

在推理运行时,高通云人工智能 100 高通 Cloud AI 100使用矢量引擎和优化的解压缩内核,在软件中执行动态解压缩。解压缩可以与权重获取和计算并行执行,因此开销大多是不明显的。解压缩后,和以前一样以 FP16 精度执行计算。由于 LLM 仍然受到 DRAM 的约束,因此计算不会成为瓶颈,所以‌可以使用FP16FP16 还允许保留更高精度的激活,从而克服量化造成的精度损失。

实验结果

本节详细介绍了在高通 Cloud AI 100上使用贪婪 SpD MX6 权重压缩实现的性能加速,基线为无推测解码,并使用 FP16 的参数格式。

3 种不同的高通 Cloud AI 100版本实现的加速:

  • 标准(75W TDP),
  • Pro75W TDP)和
  • Ultra (150W TDP)

为确保多样性,我们报告了两个网络 CodeGen 1-7B mono Llama 2-7B-chat-FT 的加速,均包含不同的上下文长度。CodeGen 1 是用于程序合成的模型系列mono 子系列经过微调,可根据自然语言的规范生成 python 程序。Llama 2-7B-chat-FT 模型是高通根据 Meta 发布的 Llama 2-7B 微调的模型。

1 从博客的开头,显示了同时开始的使用特定提示语三次运行的 Llama 2 7B-chat-FT。左列为模型在基线条件下的执行情况,参数格式为 FP16;中间一列是 MX6 压缩下加速的模型;右列则是使用 MX6 压缩和 SpD 加速的模型。

从最右列生成和补全令牌的速度可以看到明显的加速。值得注意的是,MX6 + SpD 列中突出显示为蓝色的文本是已被接受的 DLM 的推测补全。

7 记录了图 1 中观察到的每秒生成令牌数(t/s)指标的加速。

7:云 AI 100 Ultra 加速 Llama 2 7B

使用高通 Cloud AI 100 Standard Pro 版本可以实现类似的加速,如图 8 所示。

8高通 Cloud AI 100Standard Pro 的加速范围

配置

本节讲述用于测量此加速的配置。

CodeGen 1-7B

Llama 2-7B 聊天微调

TLM

~~7B 参数格式:MXFP6

~7B 参数格式:MXFP6

DLM

~350M 参数格式 FP16

115M 参数格式:FP16

最大提示语长度

32

128

最大生成长度

224

896

推测长度 (K)

7

7

批量规模

1

1

各种提示语

Hello World、BFS、拓扑排序、Tarjan SCC、线性回归

获取有关天气、旅行指南、餐厅建议、汽车控制、音乐搜索、航班搜索的信息

结语和下一步行动

大语言模型可以通过推理解码进行加速,从而在不损失准确性的情况下提高性能效率。使用 MXFP6 进行权重压缩是另一种 2 倍提升 LLM 速度的技术。通过协同作用,这两个功能共为 LLM 解码加速 ~4 倍。这两种技术都可以在高通 Cloud AI 100推理加速器上使用,可用于 Amazon AWS Cirrascale 云服务. 请务必查看 高通云人工智能Github 存储库中为推测解码提供的模型方案  ,以简化您的 LLM 工作流程!

如果您对本文中的常见问题解答、附录和参考资料感兴趣,请浏览此页面

CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
微博关注
【免责声明:CSDN本栏目发布信息,目的在于传播更多信息,丰富网络文化,稿件仅代表作者个人观点,与CSDN无关。其原创性以及文中陈述文字和文字内容未经本网证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本网不做任何保证或者承诺,请读者仅作参考,并请自行核实相关内容。您若对该稿件有任何怀疑或质疑,请立即与CSDN联系,我们将迅速给您回应并做处理。】