概述#
执行摘要#
本文档深入介绍了如何对大型语言模型 (LLM) 的部署进行基准测试,常用的指标和参数,以及分步指南。借助本指南,LLM 应用程序开发人员和企业系统所有者将能够回答以下问题
衡量 LLM 推理延迟和吞吐量的最重要指标是什么?
我应该为 LLM 使用哪些基准测试工具?它们的主要区别是什么?
如何使用 NVIDIA GenAI-Perf 衡量我的 LLM 应用程序的延迟和吞吐量?
LLM 推理基准测试简介#
过去几年见证了生成式 AI 和大型语言模型 (LLM) 的兴起,这是更广泛的 AI 革命的一部分。随着基于 LLM 的应用程序越来越多地在企业中推广,迫切需要对不同的服务解决方案进行基准测试,并确保其成本效益。LLM 应用程序的成本取决于它在保持响应能力和最终用户互动性的同时可以处理多少查询。请注意,所有成本衡量都应基于达到应用程序用例定义的可接受的准确性衡量标准。本指南侧重于成本衡量,不涵盖准确性衡量。
LLM 性能的标准化基准测试可以使用许多工具完成,包括 Locust 和 K6 等长期使用的工具,以及 NVIDIA GenAI-Perf 和 LLMPerf 等专门用于 LLM 的新型开源工具。这些客户端工具为基于 LLM 的应用程序提供了特定的指标,但在如何定义、衡量和计算不同指标方面并不一致。本指南试图阐明常用指标及其差异和局限性。我们还提供了关于使用我们首选工具 (GenAI-Perf) 对您的 LLM 应用程序进行基准测试的分步指南。
值得注意的是,性能基准测试和负载测试是评估大型语言模型部署的两种不同方法。负载测试,例如 K6 等工具,侧重于模拟大量并发请求到模型,以评估其模拟真实世界流量和扩展能力。这种类型的测试有助于识别与服务器容量、自动扩展策略、网络延迟和资源利用率相关的问题。相比之下,性能基准测试,如 NVIDIA 的 GenAI-Perf 工具所演示的那样,关注于衡量模型本身的实际性能,例如其吞吐量、延迟和令牌级指标。本文档侧重于这种类型的测试,并有助于识别与模型效率、优化和配置相关的问题。虽然负载测试对于确保模型可以处理大量请求至关重要,但性能测试对于理解模型高效处理请求的能力至关重要。通过结合这两种方法,开发人员可以全面了解其大型语言模型部署的功能,并确定需要改进的领域。
注意
服务器端指标也可用于 NVIDIA NIM,但不在本文档的范围内,请参阅 NIM 可观测性文档。
LLM 推理工作原理背景#
在检查基准指标之前,重要的是要了解 LLM 推理的工作原理以及相关的术语。LLM 应用程序通过推理产生结果。对于给定的特定 LLM 应用程序,这些是大致的阶段。
用户提供查询(提示),
查询进入队列,并等待轮到它被处理,即排队阶段。
应用程序的底层 LLM 模型处理提示,即预填充阶段。
LLM 模型输出响应,一次一个令牌,即生成阶段。
令牌是 LLM 特有的概念,是核心 LLM 推理性能指标。它是 LLM 用于分解和处理自然语言的单位。所有令牌的集合称为词汇表。每个 LLM 都有自己的 分词器,它是从数据中学习的,以便有效地表示输入文本。作为近似值,对于许多流行的 LLM,每个令牌约为 0.75 个英文单词。
序列长度是数据序列的长度。输入序列长度 (ISL) 是 LLM 获取的令牌数量。它包括用户查询、任何系统提示(例如模型的指令)、之前的聊天记录、思维链推理以及来自检索增强生成 (RAG) 管道的文档。输出序列长度 (OSL) 是 LLM 生成的令牌数量。上下文长度是 LLM 在每个生成步骤中使用的令牌数量,包括到目前为止生成的输入和输出令牌。每个 LLM 都有一个最大上下文长度,可以分配给输入和输出令牌。要更深入地了解 LLM 推理,请参阅我们的博客 掌握 LLM 技术:推理优化。
流式传输是一种选项,允许将部分 LLM 输出以模型到目前为止增量生成的一块令牌的形式返回给用户。这对于聊天机器人应用程序很重要,在聊天机器人应用程序中,希望快速收到初始响应。当用户消化部分内容时,下一块结果会在后台到达。
相比之下,在非流式传输模式下,完整答案会一次性返回。