LLMs 推理性能面经
整理自:AI GC面试宝典 作者:宁静致远 更新时间:2024年01月27日
一、介绍一下 LLMs 的文本生成过程?
LLMs 的文本生成过程分为两个阶段:
- 【预填充(Prefill)】阶段:以并行方式处理输入提示中的所有词元;
- 【解码(Decoding)】阶段:文本以自回归方式逐个生成词元。每个生成的词元都会被添加到输入序列中,并重新喂入模型,以生成下一个词元。当 LLM 输出特殊的停止词元或满足用户定义的条件(例如达到最大生成长度)时,生成过程停止。
📝通俗解释:可以把LLMs生成文本想象成接龙游戏。Prefill阶段就像裁判一次性读完所有玩家的开场提示,然后Decoding阶段则是玩家一个接一个地给出下一个词元,每个人都要基于前面所有词元来思考自己该说什么。
二、如何准确衡量模型的推理速度呢?
首个词元生成时间(Time To First Token,简称 TTFT):用户输入查询后,模型生成第一个输出所需的时间。在实时交互中,低时延非常重要,但在离线工作负载中则不太重要。此指标受处理提示信息并生成首个输出词元的时间驱动;
单个输出词元的生成时间(Time Per Output Token,简称 TPOT):为每个查询生成一个输出词元所需的时间。这一指标与用户对模型"速度"的感知密切相关。例如,TPOT 为 100 毫秒/词元意味着每个用户每秒可处理 10 个词元,或每分钟约 450 个词,这一速度远超普通人的阅读速度;
时延:模型为用户生成完整响应所需的总时间。整体响应时延可使用前两个指标计算得出:
时延 = TTFT + TPOT × 待生成的词元数
吞吐量:推理服务器在所有用户和请求中每秒可生成的输出词元数。
评估标准:以最短的时间生成首个词元、达到最高吞吐量以及在最短的时间内生成输出词元为目标——即模型能够尽可能快地为尽可能多的用户生成文本。
📝通俗解释:TTFT就像点外卖后第一口食物送达的时间,TPOT就像吃完每一道菜的时间,总时延就是整顿饭吃完的时间。吞吐量则相当于厨房同时能准备多少份外卖。TTFT短让人感觉响应快,TPOT短让人感觉流畅,吞吐量高则能同时服务更多用户。
三、如果对整体推理时延有具体目标,有哪些有效的启发式方法来评估模型?
输出长度决定了整体响应时延:对于平均时延,通常只需将预期/最大的输出词元长度与模型的每个输出词元的平均生成时间相乘;
输入长度对性能影响不大,但对硬件要求至关重要:在 MPT 模型中,添加 512 个输入词元增加的时延少于生成 8 个输出词元的时延。然而,支持长输入的需求可能使模型难以部署。例如,建议使用 A100-80GB(或更新版本)来为最大上下文长度为 2048 个词元的 MPT-7B 模型提供部署支持;
整体时延与模型大小呈次线性关系:在相同硬件上,较大的模型速度较慢,但速度比不一定与参数数量比相匹配。例如:
- MPT-30B 的时延约为 MPT-7B 时延的 2.5 倍
- LLaMA2-70B 的时延约为 LLaMA2-13B 时延的 2 倍
📝通俗解释:这就像写文章,读完一篇长文章(输入长)比写几个字(输出短)要快得多。大模型也是如此——处理很长的输入prompt很快,但一个个生成输出词元才是真正的挑战。另外,大模型虽然参数多,但推理时间不会成比例增长,30B模型并不比7B慢30倍。
四、LLMs 推理存在哪些挑战?
计算资源需求高:大型模型需要大量 GPU 显存和算力,部署成本高昂;
内存带宽瓶颈:推理过程中需要频繁读取模型权重,内存带宽成为主要瓶颈;
自回归生成效率低:逐词元生成的方式难以并行,导致 GPU 利用率不高;
长上下文处理困难:长序列推理对显存要求极高,且可能面临上下文信息衰减问题;
延迟与吞吐量的权衡:需要在大批量处理(高吞吐量)和低延迟响应之间取得平衡。
📝通俗解释:LLMs推理就像让一个知识渊博但反应较慢的教授同时回答很多人问题。教授脑子里有很多知识(模型参数),但每次只能回答一个字(自回归生成),而且同时回答太多人就会很慢(延迟与吞吐量权衡)。如何让教授既能快速回答,又能同时服务很多人,是推理优化的核心挑战。
致谢
感谢 AI GC面试宝典 提供的面试资料
整理时间:2024年8月11日