TACO-LLM发布!助力大模型极致加速

2023-11-17 10:54:48 浏览数 (1)

TACO-LLM 是基于腾讯云异构计算产品推出的一款大语言模型推理加速引擎,用于提高语言模型的推理效能。通过充分利用计算资源的并行计算能力,TACO-LLM能够同时处理更多的语言模型推理请求,已成功为客户提供了兼顾高吞吐和低时延的优化方案,吞吐性能提高了78%。TACO-LLM可以减少生成结果的等待时间,提高推理流程效率,助您优化业务成本。

本篇文章将介绍TACO-LLM的优化原理

如果您希望了解更多产品合作信息

>> 欢迎点击链接联系我们 <<

TACO-LLM 应用场景

TACO-LLM适用于生成式语言模型的推理加速业务,可满足多种业务场景下推理提效的需求。以下是一些典型业务场景:

1

时延敏感的在线对话系统

在线对话系统通常是在诸如医疗咨询、教师辅导、商品导购、心理医生等场景下和终端客户进行专业领域长对话的场景,会输出大量长文本,输出时延对终端客户的留存和转换有高度的影响。TACO-LLM针对这种时延敏感的场景提供有竞争力的加速方案,帮助您获得业界有优势的终端客户体验。

2

高吞吐的离线文本生成

在离线文本生成场景中,需要处理大批量的文本数据,主要应用于To B场景如文本摘要、邮件自动生成、舆情分析、内容审核分类等,此类场景诉求是高效处理大批量文本生成任务,要求高吞吐高算力利用率,对时延无硬性要求。TACO-LLM针对此类场景可帮助您最大效率地利用算力资源实现高吞吐,大幅降低单任务平均算力成本,获得最佳成本优化方案。

3

高并发的搜索工具辅助

通过在语言模型中嵌入搜索引擎,可以大幅提高搜索结果的准确性,此类场景面向C端用户,请求量动态波动较大,在业务负载峰值客户请求常会因为资源限制或者扩容时间较长而长时间等待。高并发场景下使用TACO LLM可以提高单位时间内处理的请求数量,即使在一定的请求波动下,仍然可以护航业务稳定运行。

除了适配多种业务场景,TACO-LLM也兼容Hugging Face当前全部主流语言模型,无需模型转换,仅需指定模型名称及可自动加载并即刻体验TACO-LLM带来的极致性能优化。

TACO-LLM设计理念

LLM部署的挑战

传统AI场景不同,大语言模型服务关注多个维度的性能指标,它们最终对应不同层次的用户体验和服务质量。这些指标大体概括起来分为4个。

首字延迟(L1)

这决定了用户从输入请求到获得响应的时间。对于实时的在线应用,低延迟很重要。但对偏离线的应用则该指标没有那么重要。该指标的好坏通常取决于推理引擎处理prompt并生成首字的时间。

解码延迟(L2)

定义为每个用户请求生成后续输出的平均响应时间。这也是用户直观体验模型执行快慢的时间。假设执行速度是平均每token 100毫秒,则用户平均每秒可以得到10个tokens的输出,每分钟450英文词左右。

请求延迟(L3)

定义为对给定用户产生完整响应的延迟。它可以这么计算:L3 = L1 L2 * 生成的token数。

吞吐

定义为推理服务器面对全部用户和他们请求的流量时每秒可以生成的Token数量。

部分推理引擎只关注或对上述某个指标有较好效果。而TACO-LLM均衡关注上述全部指标,并对各指标的实际部署效果均实现了全流程的优化。

事实上,LLM部署的挑战来源于几个方面。首当其冲是当前主流的decoder-only模型都具备自回归解码属性。简单说,模型生成输出是一个串行的计算过程。下一个输出依赖上一个输出。因此很难发挥出GPU或其他加速硬件的并行加速能力。同时,较低的Arithmetic Intensity对显存带宽的利用也提出了挑战。再者,大模型的“大”对显存容量提出了最直接的挑战。

此外,传统的Transformer推理框架将KV-Cache按batchsize和sequence length维度组织数据,这会导致两个潜在的性能陷阱。

其一,请求的输出有长有短。这种数据组织方式需要等一个Batch中最长输出长度的请求计算完才能完成整个Batch的计算。在此之前,新的请求无法开始计算。而已计算完的请求,只能进行无效计算,消耗有效算力。同时,这种方式管理显存效率较低,无法做到“实用实销”,且随着不同请求计算过程中的显存使用,会造成显存碎片,进一步加剧资源瓶颈。

其二,目前很多优秀的attention加速技术实际上是按上述数据layout来实现的。例如flash-attention, flash-decoding等。这意味着更高效的重新设计,例如下文中提到的"Paged Attention"技术将无法直接享受到社区优化红利,仍给我们留出了进一步的优化空间。

为了有效应对上述挑战,腾讯云异构计算研发团队倾力打造了一款面向生产的LLM推理引擎。全方位应对上述挑战。

Continuous Batching

传统的Batching方式被称为Static Batching。如上文所述,Static Batching方式需要等一个batch中最长输出长度的请求完成计算,整个batch才完成返回,新的请求才能重新batch并开始计算。因此,Static Batching方式在其他请求计算完成,等待最长输出请求计算的过程中,严重浪费了硬件算力。

TACO-LLM通过Continuous Batching的方式来解决这个问题。

Continuous Batching 无需等待batch中所有请求都完成计算,而是一旦有请求完成计算,即可以加入新的请求,实现迭代级别的调度,提高计算效率。从而实现较高的GPU计算利用率。

图1 Static Batching

图2 Continuous Batching

Paged Attention

大模型推理计算性能优化一个常用的方式是KV-Cache技术。Transformer层的attention组件计算当前token value值的时候,需要依赖之前token序列的Key和Value值。KV-Cache通过存储之前token序列的Key和Value的值,避免后续计算中,重复计算Key和Value值,提高整体计算性能,是一种以空间换时间的优化策略。

传统的KV-Cache实现机制是在显存中提前预留一块连续的存储空间来存储Key和Value值。但是,随着存储资源的分配和释放,显存中会存在很多“碎片”。某些情况下,虽然剩余的显存总量大于KV-Cache所需,但是由于不存在一块连续的存储空间可以满足KV-Cache,计算也无法进行。

Paged Attention是一种新的KV-Cache实现方式,它从传统操作系统的概念中获得灵感,例如分页和虚拟内存,允许KV-Cache通过分配固定大小的“页”或“块”在物理非连续内存上实现逻辑连续。然后可以将注意力机制重写为在块对齐的输入上运行,从而允许在非连续的内存范围内执行注意力计算。TACO-LLM通过Paged Attention技术,实现了较高的显存利用效率。

图3 PagedAttention

投机采样

大语言模型的自回归解码属性要求每次生成新的token,都需要依赖所有已解码的token,且需要重新加载模型全部权重进行串行解码。这种计算方式无法充分利用GPU的算力,计算效率不高,解码成本高昂。而TACO-LLM通过投机采样的方式,从根本上解决了计算访存比的问题。通过引入一个“小模型”辅助解码,可以让真正部署的大模型实现“并行”解码,从而大幅提高解码效率。我们称之为"Specutive Sampling(SpS)"技术。

Sps算法过程如下:

1)使用小模型连续产生K个token。

2)将小模型产生的K个token组成的序列提交真正部署的模型进行验算,保证输出序列的正确性。

3)可采用拒绝采样算法等统计方法选择性接受小模型产生序列的子序列。

利用SpS算法,当小模型和目标模型达成较高共识的时候,目标模型在一次解码迭代内,获得多个有效token,从而加速解码过程。

在实践中,SpS技术可以有多种实现方式。广义SpS可以使用一个能力较弱规模较小的模型,也可以使用向量数据库辅助,甚至在部分场景可以使用n-gram模型。

异步调度

SpS能够有效地提升大模型解码性能,但是小模型也会引入额外的运行时开销。为了隐藏小模型开销并进一步提升性能,TACO-LLM设计开发了异步流水线机制,使得“小模型”和目标模型并发执行,从而完美隐藏掉小模型执行的开销。此外,我们还将请求的调度和更新步骤也纳入到异步流水线,进一步隐藏掉请求调度和更新的开销,以提升性能。

图4. 异步调度

分布式推理

TACO-LLM通过支持分布式推理解决了“模型大,一张GPU放不下”以及部分极致延迟的业务需求。在分布式推理场景中,TACO-LLM通过优化的调度策略智能地管理和调度推理任务,以确保计算资源的高效利用。通过合理地分配任务,在推理过程中实现异步请求和高效的流水处理,能够最大程度地减少等待时间,提高整体推理效率。

图5. 分布式推理

业界框架对比

随着大模型的广泛使用,开源社区涌现出多个优秀的大模型推理框架,如vLLM,Text-Generation-Inference(TGI),LightLLM等。各个大模型推理框架设计理念各具特色,可谓百花齐放,各领风骚。为了评估TACO-LLM的性能表现,我们使用TACO-LLM与业界性能十分优秀的两个大模型推理框架vLLM和TGI进行了性能对比测试。

测试设置如下:

测试模型:WizardCoder-15b

计算硬件:A100-80G 单卡

测试数据:request num=32, 4 < input length <512, 300 < output length < 1024

测试指标: latency per output token/throughput (tokens/s)

性能数据如下:

图6. TACO-LLM与业界框架对比-输出token延时

图7. TACO-LLM与业界框架对比-吞吐

测试数据显示:

1)token解码延时,TACO-LLM比vLLM低52.7%,比TGI低10.3%

2)总吞吐,TACO-LLM比vLLM高42.8%,比TGI高35.2%

客户案例

1

智能客服场景案例

晓多科技是国内领先的智能客服解决方案提供商,具有自主研发的人工智能交互问答系统在迁移学习、动态计算回答、自动学习、多轮对话、意图识别多项核心技术,晓多科技目前在客服领域使用晓模型(XPT),关注在应答场景的大模型推理的单次请求处理成本,终端客户输出延时等性能指标。TACO-LLM 团队根据客户的场景诉求给出了兼顾高吞吐和低响应时延的优化方案,帮助客户的吞吐性能提高了78%。

本次测试中,我们在V100机型上使用客户的业务数据集,挑选200条输入输出长度各异的请求,模拟客户真实场景来进行性能测试。TACO-LLM在客户场景中的性能表现远优于社区开源大模型推理框架LightLLM在客户场景的性能表现。

测试数据如下所示:

测试结果显示:

TACO-LLM的吞吐性能是LightLLM的1.78倍。

2

人机对话场景案例

客户是国内一家上市AI平台公司,致力于人机协同系统的开发,在金融咨询、智慧城市、营销等多个领域有人机对话场景落地的诉求。具备To B和To C等不同业务场景。在To B场景中,客户重点关注吞吐指标。希望为其下游业务提供高性能的LLM服务。

在A100-80G机型上,TACO-LLM对客户业务场景进行了性能测试。采用与客户模型接近的Llama-2-13B模型,以及业界公开的对话数据集 ShareGPT,挑选512条输入输出长度各异的请求模拟客户真实业务场景,对比了业界非常具有影响力的大模型推理框架TGI,同时也是客户初期默认使用的框架,在相同场景下的吞吐性能。

性能数据如下图所示:

测试结果显示:

对比最新版本TGI,TACO-LLM单请求吞吐性能提升31.5%,总吞吐性能提升22.2%

未来演进

TACO-LLM的目前已实现分布式推理、动态Batching、Paged Attention等多种特性。支持Hugging Face全部主流模型。在性能上相较于业界开源框架具有明显的优势。

未来TACO-LLM将持续迭代,通过不断的技术创新和优化,进一步提高推理效率,并支持更多加速芯片,护航客户在腾讯云异构计算平台上业务高性能、高效率、高性价比稳定运行。

如您希望了解更多TACO-LLM合作信息

>>欢迎扫描二维码,联系我们<<

图片出处:

https://www.anyscale.com/blog/continuous-batching-llm-inference

https://blog.vllm.ai/2023/06/20/vllm.html

0 人点赞