文本生成推理基准测试

Hugging Face 发布了一个用于文本生成推理(TGI)的基准测试工具,帮助开发者分析吞吐量与延迟之间的权衡。该工具使用户能够超越单纯的吞吐量指标,确定针对特定用例(如检索增强生成(RAG)或聊天)的最佳配置,从而降低部署成本并提升用户体验。

理解大语言模型推理性能

大语言模型(LLM)推理本质上效率低下,因为解码器在生成每个 token 时都需要进行一次新的前向传播。为缓解此问题,TGI 融入了多种提升性能的技术,包括 Flash Attention、Paged Attention、量化和推测。然而,这些技术的最佳配置在很大程度上取决于具体工作负载:

  • RAG 用例: 通常涉及较长的提示(因为检索到多个文档),以及中等长度的输出,常常逼近模型上下文窗口的限制。
  • 聊天场景: 通常涉及较短的提示和在多轮对话中的输出。

关键性能指标

为了有效地对部署进行分析,TGI 基准测试工具关注四个主要指标:

  • Token 延迟: 处理并向用户发送单个 token 所需的时间。
  • 请求延迟: 完全响应一次请求所需的总时间。
  • 首 token 时间(TTFT): 从发起请求到返回首个 token 的时长,包含预填充处理和首 token 的生成。
  • 吞吐量: 服务器在一定时间内能够返回的 token 数量。

吞吐量和延迟是相互独立的度量;优化其中一个通常需要在另一个上做出权衡。

两阶段推理过程

LLM 生成分为两个独立阶段,基准测试工具会分别对其进行分析:

  1. 预填充阶段: 整个提示在一次前向传播中处理,以生成首个 token。该阶段对确定 TTFT 至关重要。
  2. 解码阶段: 随后每个 token 逐个生成。生成的 token 会被追加到输入中用于下一次前向传播。该阶段通常占据大部分计算时间。

使用 TGI 基准测试工具

基准测试工具已集成到 TGI 中,可通过 CLI 运行。Hugging Face 提供了一个专用的 Space,将 TGI Docker 镜像与 Jupyter Lab 环境结合,便于进行测试。

分析结果

该工具会生成散点图,X 轴表示延迟(数值越低越好),Y 轴表示吞吐量(数值越高越好)。理想的性能点位于图表的左上角。

  • 垂直数据趋势: 如果曲线呈垂直状,吞吐量可以通过增大批量大小来提升,而不会导致延迟恶化。这表明系统还有余量,可“免费”容纳更多用户。
  • 水平数据趋势: 如果曲线呈水平状,系统受计算资源限制。增大批量大小会提升所有用户的延迟,却没有相应的吞吐量提升,提示需要更好的配置或硬件扩容。

部署策略

分析应当是一个迭代过程。鼓励开发者估算用户行为,运行基准测试,然后根据结果微调 TGI 设置。这些发现随后可以应用到 AWS、GCP 或 Hugging Face 推理端点的等价硬件上,以确保部署既具成本效益又具性能。

Sources