请输入关键字
搜索

太初资讯

跨越技术壁垒,打破固有模式,用智慧重新链接关系。

【元来如此】第一章——大模型技术 · 起航&推理篇(内含产品试用申请)!

TECORIGIN

大模型技术

起航&推理篇


                                 正文共:3149字 15图

预计阅读时间:5分钟

作者:思成

软件生态中心 · 应用平台部


前言


当前大家讨论的ChatGPT、LLaMA等都属于LLM(Large language model大语言模型),让我们简单回顾一下LLM的前世今生。




LM 语言模型

说到LLM就不得不提LM(language model语言模型)。语言模型是这样一个模型:对于一句话(由词组成的序列),它能够计算出这句话出现的概率。为了让模型给出这样的概率P,简单的方法就是将其用概率论中的方法进行展开,这样只要想办法得到每一个P(xm|x1x2...xm-1)即可。这样从另一个角度来看,如果我们可以找到一个模型:它能够计算P(xm|x1x2...xm-1),那么它就是一个语言模型。      



图1 什么是语言模型


基于这样的认知,不难想到我们只需要找到一个足够大的语料库,通过统计后就可以得到一个基本的“语言模型“。但是,可以想象基于统计的方法会遇到不可避免的稀疏问题,哪怕我们简化上面的统计量,假设每个词出现的概率只与前n个词有关(n-gram)。

在这之后出现了基于神经网络的语言模型,通过词向量(word embedding)和神经网络来计算上面的P(xm|x1x2...xm-1),这里以基于FnnLM和RNN两大类模型颇具代表性。



图2 基于统计的语言模型和基于神经网络的语言模型




LLM 大语言模型


2017年由Google提出《Attention is All you need》[1]Transformer模型。Transformer模型主体由Encoder(编码器)和Decoder(解码器)两部分组成。其中Encoder更擅长NLU(自然语言理解)任务,Decoder更擅长NLG(自然语言生成)任务。



图3 基于海量数据和大参数量的语言模型

在这之后的3-4年中,各大公司不断入局,先后提出了众多大语言模型[2]。其中OpenAI仅使用Transformer中的Decoder部分,提出了GPT模型系列,并基于此模型结构作为基础提出了今天耳熟能详的ChatGPT。区别与LM的显而易见的特点就是模型参数量的不断增加,以及训练数据的不断增加。



图4 大语言模型近3年发展时间线,引用自[2]


大模型的应用


LLM可以应用在搜索系统、自动对话系统、机器翻译、文本摘要、问答系统、辅助编程等众多领域。能够根据问题生成符合语法规则和语义的自然语言文本。



图5 大模型应用广泛的下游任务,引用自[3]



图6 大语言模型在搜索问答中的应用



图7 大语言模型在辅助编程上的应用



图8 大语言模型在智能客服场景上的应用


当大家都去挖金矿时,应该去卖铲子。如果将大模型比作金子,那么铲子是什么呢?答案是算力+推理服务,接下来我们来看Tecorigin准备了什么样的“铲子”。


大模型推理核心技术


下面我们将从几方面来介绍大模型推理技术以及Tecorigin为了降低用户成本,提高推理性能都做了什么。

对于大模型推理而言,有以下4个关键衡量维度。


1

Latency(时延),反应了在接收到用户请求之后,多久得到响应。


2

Throughput(吞吐),反应了每秒钟可以输出多少个token,对于大众的阅读速度来看,一般我们认为每秒钟 20-30 tokens是一个可接受的性能。


3

Utilization(利用率),反应了在线推理引擎必须要尽可能的提高利用率,达到满负载,否则会增加用户的成本。



4

Accuracy(精度),反应了推理结果的准确性,毋庸置疑,一味的追求速度和利用率,降低了Accuracy是不合理的。


在明确了目标之后,我们再来明确大模型推理的核心挑战。

Large memory footprint(大量显存开销),GPT/LLaMA等大模型的模型结构与解码方式直接导致了在推理过程中会产生大量的显存开销,由Parameter(参数)和Intermediate states(中间激活值)组成。

Low parallelizability(低并行度),当前主流自然语言模型均是Autoregressive(自回归),这种自回归的模式导致了非常低的并行度。



图9 大语言模型推理过程


基于以上的目标和挑战,为了更好的支持用户并提高大模型推理性能,Tecorigin从下面几方面入手。


Large  尽可能小的Memory footprint



支持多种推理框架

基于不同的业务场景,需要灵活选择一个合适的推理框架。当前比较主流的推理框架有vLLM,Fastertransformer+Triton Server,TGI(Text generation inference)等。


其中vLLM框架支持PagedAttention[3]和Continuous batching[4]等技术。


PagedAttention技术可以让KV Cache通过固定大小的“页”来实现显存的分配而不需要框架分配max_seq_len长度的连续内存,大大降低了不必要的显存开销,从而极大的提升了推理更大batch的可能,这意味着更高的Throughput。



图10 PagedAttention算法示意,引用自[4]


Continuous batching在进行batch>1的推理场景下,一旦batch中的某一个序列推理完成,那么就可以在之后插入一个新序列,从而充分利用GPU使用率。



图11 Continuous batching算法示意,引用自[5]


Fastertransformer是一个用于加速基于Transformer模型结构的模型推理加速引擎。通过高度优化的融合算子、Shared buffer(共享缓冲)、KV Cache等核心技术极大提高了推理Latency。
 
TGI当前也支持了continuous batching和paged attention等关键技术。


多卡模型并行推理

下图展示了基于模型并行的大模型推理切分方案,通过模型纵向切分,充分利用多卡访存/算力,并深度优化通信算子,高效降低多卡并行推理带来通信开销。



图12 模型并行推理模型切分方案示意


Tecorigin开发了Teco-Inference-Engine,对基于Transformer的大模型推理算子进行了积木化式的深度优化。可以像拼乐高积木一样,灵活高效的支持以下模型的单卡/多卡推理。


同时,我们也开发了Shard buffer、KV Cache等核心技术减少显存开销和提高推理性能。以此作为后端,前端接入了vLLM/Triton Server等主流框架。

另一个方面,常见的作法包括模型量化、模型蒸馏、模型剪枝等,其中模型蒸馏和模型剪枝虽然可以很好的减少模型参数量从而提升推理性能,但是在大模型时代也会带来一些显著的问题。

对于模型蒸馏,考虑到训练一次大语言模型的成本开销是巨大的,同样在做模型蒸馏的过程中也不可避免的引入了硬件、人力成本。所以在大语言模型场景下实际通过模型蒸馏的方式减少模型参数量的方式还很少。

对于模型剪枝,会破坏完整的dense(稠密)参数,引入sparse(稀疏)参数,这样的方式在推理硬件和工程上也需要额外的工作量才会带来性能的提升。

最后模型量化的方案,这个方案也是当前大模型推理领域被用户选择多的方式。



图13 模型量化、模型蒸馏、模型剪枝算法示意,来自网络


模型量化。模型量化通过将weight(权重)或者activation(激活值)进行低精度(int8/4/3)表示,通过减少访存量以及Kernel(核函数)优化等手段加速推理。模型量化在带来性能提升的同时往往都会带来一定的精度折损,为了衡量这部分精度折损,学术界更多的用PPL(perplexity 困惑度)指标用于衡量量化之后的精度折损,在我们的实验中发现PPL并不是一个很完美的指标,原因是PPL是一种衡量句子流畅性的指标,这样量化后的模型虽然可能是流畅的,但是从严格意义上是否和量化之前的模型推理效果是否一致是无法简单通过PPL指标表现出来。
 
基于这样的原因,我们提出了用BLEU值辅以评估模型量化后的精度,更高质量的保障用户推理结果精度。这里我们将模型量化当作一个“翻译”任务,源语是在高精度(fp32)下进行的模型推理结果,目标语是在低精度(fp16/int8/int4/int3)下进行的模型推理结果。
 
通常,PTQ(Post-Training Quantization 后训练量化)和QAT(Quantization-Aware Training 量化感知训练)是两种常见的量化方案。PTQ可以直接在模型上进行量化,不需要引入额外的训练。QAT需要在训练过程中应用量化方案,这虽然通常来说有更好的量化精度,但是也需要额外的训练代价。
 
GPTQ是PTQ中的一种方案,下表给出了我们基于开源的Baichuan-7B模型进行模型量化之后的效果。


GPTQ(weight only)


除此之外……

Low 尽可能高的parallelizability


为了解决Low parallelizability,我们在8月份提出了RecycleGPT[6],一种可重复利用模型状态加速解码过程的模型,在近乎无效果损失的前提下,实现了1.4倍的推理加速,并引起了广泛关注。



图14 RecycleGPT算法示意


RecycleGPT[6]在传统的自回归语言模型基础上增加了一个Recyclable Module(再利用模块)。这个结构很好的回收了当前step输出的隐状态并再利用于Next Next token(下下个令牌)生成。通过这样的方式提高了一次推理的利用率,从而端到端提升模型的推理性能。





图15 RecycleGPT得到广泛关注


至此,本文简要介绍了大语言模型的近3年发展现状,以及大模型推理的核心挑战及其对应的主流优化方案,并简要介绍了Tecorigin在大模型推理上已有的技术能力,《大模型技术·起航&推理篇》到此结束。未来,会有更多的大模型技术跟大家一起分享、交流、讨论。


入局者,厚积方可薄发。太初元碁Tecorigin将持续深耕产业创新沃土,与时代发展同频共振,共育数智卓越人才,凭借深厚技术沉淀与领先研发实力,驱动算力之轮驶向未来智能世界!

免费试用申请


如果您对我们的产品感兴趣,可点击底部“阅读原文”,进行试用申请;

复制下方链接:https://shimo.im/forms/KrkElNNyO7uWeRqJ/fill 在浏览器中打开,即可抢先试用!


参考文献

[1] [1706.03762] Attention Is All You Need (arxiv.org)

[2] [2303.18223] A Survey of Large Language Models (arxiv.org)

[3] [2108.07258] On the Opportunities and Risks of Foundation Models (arxiv.org)

[4] [2309.06180] Efficient Memory Management for Large Language Model Serving with PagedAttention (arxiv.org)

[5] Achieve 23x LLM Inference Throughput & Reduce p50 Latency (anyscale.com)

[6] [2308.03421] RecycleGPT: An Autoregressive Language Model with Recyclable Module (arxiv.org)