为什么有效吞吐量比吞吐量对LLM服务更重要

为什么有效吞吐量比吞吐量对LLM服务更重要

💡 原文英文,约2000词,阅读约需8分钟。
📝

内容提要

本文通过vLLM在单GPU上的基准测试,对比了吞吐量与“有效吞吐量”(goodput,即满足延迟目标的请求数)。结果显示,仅优化吞吐量会牺牲TPOT延迟,导致服务体验变差。作者强调,应设定TTFT和TPOT目标,通过自动化搜索寻找最佳配置,而非盲目追求高吞吐量,并指出配置需随流量和模型变化持续调整。

🔎

延伸解读

吞吐量与有效吞吐量的本质区别

文章通过餐厅比喻形象说明:吞吐量只统计完成的请求数,而有效吞吐量(goodput)要求请求同时满足延迟目标(如TTFT和TPOT)。一个请求即使完成,若延迟超标,也不计入有效吞吐量。这提醒我们,在评估LLM服务性能时,不能只看吞吐量,必须结合延迟指标,否则可能牺牲用户体验。

配置调优的陷阱:约束不足导致延迟恶化

实验显示,仅约束TTFT(首字延迟)而忽略TPOT(输出字延迟),会导致TPOT从50毫秒飙升至494毫秒,近十倍差距。这说明调优时需全面考虑所有延迟目标,否则系统会“钻空子”牺牲未约束的指标。实际部署中,应同时设定TTFT和TPOT的SLO,避免顾此失彼。

自动化搜索优于手动调参

文章指出,配置空间存在“小悬崖”,相近的设置可能性能差异巨大,手动调参容易陷入局部最优。通过自动化数据驱动搜索,可以系统性地探索更多配置组合,找到真正满足SLO的最佳方案。这强调了在复杂系统中,采用自动化优化工具的重要性。

配置需随流量和模型动态调整

作者强调,流量、提示词和模型的变化都会影响最佳配置,因此调优不是一次性的,需要持续进行。这提醒运维人员,应建立定期重新调优的机制,以适应动态变化的生产环境,确保服务始终在最优状态运行。

Q&A

什么是有效吞吐量(goodput)?它与吞吐量有什么区别?

有效吞吐量是指每秒完成的、满足延迟目标(如TTFT和TPOT)的请求数。吞吐量只计算每秒处理的请求数,不关心延迟是否达标。有效吞吐量更关注用户体验,只有满足延迟目标的请求才算数。

为什么仅优化吞吐量会导致LLM服务体验变差?

因为吞吐量只关注请求处理数量,不关注延迟。优化吞吐量时,可能会增加批处理大小或并发数,导致每个请求的TPOT(每个输出token的时间)变长,用户感受到的响应变慢,即使吞吐量上升,服务体验却下降。

在vLLM中,哪些配置参数会影响吞吐量和延迟的权衡?

主要参数包括gpu_memory_utilization(GPU内存利用率)、max_num_batched_tokens(批处理token预算)和max_num_seqs(并发序列上限)。这些参数共同决定KV缓存大小、批处理步骤的工作量和并发请求数,从而影响吞吐量和延迟。

在聊天机器人场景中,为什么两个配置的TTFT相近但TPOT差异很大?

因为TTFT由prefill阶段决定,而TPOT由decode阶段决定。优化吞吐量时,如果只约束TTFT,系统会通过增加批处理大小来提升吞吐,这会导致decode阶段每个步骤处理更多请求,从而增加TPOT。因此,即使TTFT相近,TPOT也可能差异很大。

为什么说吞吐量数字没有SLO就是营销而非工程?

因为吞吐量数字没有结合延迟目标,无法反映真实用户体验。只有满足延迟目标的吞吐量(即有效吞吐量)才是工程上真正需要优化的指标。没有SLO的吞吐量可能掩盖延迟问题,导致服务体验下降。

为什么手动调优vLLM配置可能无法找到最佳配置?

因为配置空间存在许多小的性能悬崖,看似相似的配置可能性能差异很大,手动调优往往在找到第一个看起来不错的配置后就停止,而不会探索更多可能性。自动化数据驱动的搜索可以尝试更多配置,找到真正满足SLO的最佳配置。

为什么LLM服务的配置需要持续调整?

因为流量、提示词和模型都会随时间变化,最佳配置也会随之改变。因此,配置搜索需要定期重新运行,以保持服务在满足SLO的前提下最大化吞吐量。

在推理工作负载中,为什么最佳吞吐量的配置不一定是最佳选择?

因为推理工作负载通常有较长的输出(如4000 tokens),对TPOT敏感。最佳吞吐量的配置可能牺牲TPOT,导致用户等待时间过长。如果设置更严格的TPOT目标,最佳配置可能会改变。

🏷️

标签

➡️

继续阅读