Skip to content

LLMs 推理性能面经

整理自:AI GC面试宝典 作者:宁静致远 更新时间:2024年01月27日


一、介绍一下 LLMs 的文本生成过程?

LLMs 的文本生成过程分为两个阶段:

  1. 【预填充(Prefill)】阶段:以并行方式处理输入提示中的所有词元;
  2. 【解码(Decoding)】阶段:文本以自回归方式逐个生成词元。每个生成的词元都会被添加到输入序列中,并重新喂入模型,以生成下一个词元。当 LLM 输出特殊的停止词元或满足用户定义的条件(例如达到最大生成长度)时,生成过程停止。

📝通俗解释:可以把LLMs生成文本想象成接龙游戏。Prefill阶段就像裁判一次性读完所有玩家的开场提示,然后Decoding阶段则是玩家一个接一个地给出下一个词元,每个人都要基于前面所有词元来思考自己该说什么。


二、如何准确衡量模型的推理速度呢?

  1. 首个词元生成时间(Time To First Token,简称 TTFT):用户输入查询后,模型生成第一个输出所需的时间。在实时交互中,低时延非常重要,但在离线工作负载中则不太重要。此指标受处理提示信息并生成首个输出词元的时间驱动;

  2. 单个输出词元的生成时间(Time Per Output Token,简称 TPOT):为每个查询生成一个输出词元所需的时间。这一指标与用户对模型"速度"的感知密切相关。例如,TPOT 为 100 毫秒/词元意味着每个用户每秒可处理 10 个词元,或每分钟约 450 个词,这一速度远超普通人的阅读速度;

  3. 时延:模型为用户生成完整响应所需的总时间。整体响应时延可使用前两个指标计算得出:

    时延 = TTFT + TPOT × 待生成的词元数

  4. 吞吐量:推理服务器在所有用户和请求中每秒可生成的输出词元数。

评估标准:以最短的时间生成首个词元、达到最高吞吐量以及在最短的时间内生成输出词元为目标——即模型能够尽可能快地为尽可能多的用户生成文本。

📝通俗解释: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 推理存在哪些挑战?

  1. 计算资源需求高:大型模型需要大量 GPU 显存和算力,部署成本高昂;

  2. 内存带宽瓶颈:推理过程中需要频繁读取模型权重,内存带宽成为主要瓶颈;

  3. 自回归生成效率低:逐词元生成的方式难以并行,导致 GPU 利用率不高;

  4. 长上下文处理困难:长序列推理对显存要求极高,且可能面临上下文信息衰减问题;

  5. 延迟与吞吐量的权衡:需要在大批量处理(高吞吐量)和低延迟响应之间取得平衡。

📝通俗解释:LLMs推理就像让一个知识渊博但反应较慢的教授同时回答很多人问题。教授脑子里有很多知识(模型参数),但每次只能回答一个字(自回归生成),而且同时回答太多人就会很慢(延迟与吞吐量权衡)。如何让教授既能快速回答,又能同时服务很多人,是推理优化的核心挑战。


致谢

感谢 AI GC面试宝典 提供的面试资料


整理时间:2024年8月11日

基于 MIT 许可发布