常见LLM推理服务性能评估指标
https://zhuanlan.zhihu.com/p/704649189
- 首Token生成时间(Time To First Token,简称TTFT):即用户输入提示后,模型生成第一个输出词元(Token)所需的时间。在实时交互中,低时延获取响应非常重要,但在离线工作任务中则不太重要。此指标受处理提示信息并生成首个输出词元所需的时间所驱动。通常,不仅对平均TTFT感兴趣,还包括其分布,如P50、P90、P95和P99等。
- 单个输出Token的生成时间(Time Per Output Token,简称TPOT):即为每个用户的查询生成一个输出词元所需的时间。这一指标与每个用户对模型“速度”的感知相关。例如,TPOT为100毫秒/词元表示每个用户每秒可处理10个词元,或者每分钟处理约450个词元,那么这一速度远超普通人的阅读速度。
- 端到端时延:模型为用户生成完整响应所需的总时间。整体响应时延可使用前两个指标计算得出:时延 = (TTFT)+ (TPOT)*(待生成的词元数)。
- 每分钟完成的请求数:通常情况下,我们都希望系统能够处理并发请求。可能是因为你正在处理来自多个用户的输入或者可能有一个批量推理任务。 单个请求的成本:API 提供商通常会权衡其他指标(如:时延)以换取成本。例如,可以通过在更多GPU上运行相同的模型或使用更高端的GPU来降低时延。
- 最大利用率下每百万Token的成本:比较不同配置的成本(例如,可以在1个A800-80G GPU、1个H800-80G GPU或1个A100-40GB GPU上提供Llama 2-7B模型等),估算给定输出的部署总成本也十分重要。
- 预加载时间:预加载时间只能通过对输入提示的首次oken的生成来间接估算。一些研究发现在250个输入词元和800个输入词元之间,输入词元与TTFT之间似乎并不存在明显的关系,且由于其他原因,它被TTFT中的随机噪声掩盖。通常情况下,输入词元对端到端时延的影响约为输出词元的1%。
- 生成Token吞吐量:推理服务在所有用户请求中每秒可生成的输出词元(Token)数。考虑到无法测量预加载时间,并且总推理时延所花时间更多地取决于生成的Token数量,而不是输入的Token数量,因此,将注意力集中在输出Token上通常是正确的抉择。
- 总吞吐量:包括输入的Token和生成的Token。
对于一些场景,需要考虑端到端推理延迟作为目标,需要注意如下几点:
- 输出Token长度决定总体响应延迟:对于总体平均时延,您通常只需将预期最大输出token长度乘以模型每个输出token的总体平均时延即可。
- 输入长度对端到端推理性能并不重要,但对硬件要求很重要:一些研究表明在 MPT 模型中, 512 个输入token增加的延迟小于生成 8 个额外输出Token的延迟。但支持长输入的需求可能会使模型更难以服务。通常建议使用 A100-80GB(或更新版本)来服务 MPT-7B,其最大上下文长度为 2048 个Token。我在 MindIE Service 上,使用羊驼中文数据集,针对百川和千问大模型做了一个简单测试,发现100Token以内,随着输入Token长度的增加,并没有显著增加首Token的时延,如下图所示。
- 端到端推理延迟与模型大小呈次线性关系:在相同的硬件上,较大的模型推理速度较慢,但推理速度比不一定与模型参数量比匹配。例如:MPT-30B 延迟约为 MPT-7B 延迟的 2.5 倍。Llama2-70B 延迟约为 Llama2-13B 延迟的 2 倍。