预配吞吐量中的每秒令牌范围意味着什么?

本文介绍了 Databricks 如何以及为何测量基础模型 API 工作流上预配吞吐量模式的每秒标记数。

大型语言模型 (LLM) 的性能通常以每秒标记数来衡量。 配置服务终结点的生产模型时,请务必考虑应用程序发送到终结点的请求数。 这样做有助于了解终结点是否需要配置为缩放,以免影响延迟。

为在部署时采用了预配吞吐量的终结点配置横向扩展范围时,Databricks 发现使用令牌推断进入系统的输入会更容易。

什么是令牌?

LLM 将按照所谓的令牌来读取和生成文本。 标记可以是单词或子单词,用于将文本拆分为标记的确切规则因模型而异。 例如,可以使用联机工具来了解 Llama 的 tokenizer 将单词转换为标记的方式。

为什么以每秒标记数衡量 LLM 性能?

传统上,服务终结点是根据每秒并发请求数 (RPS) 配置的。 但是,LLM 推理需要不同的时间,具体取决于传入和生成的令牌数,这在请求之间可能存在不平衡。 因此,确定终结点所需的横向扩展量需要根据请求内容(令牌)来衡量终结点规模。

不同的用例具有不同的输入和输出令牌比率:

  • 输入上下文的不同长度:虽然某些请求可能只涉及寥寥几个输入令牌(例如简短的问题),但其他请求可能涉及数百甚至数千个令牌(例如用于汇总的长文档)。 这种可变性使得仅基于 RPS 配置服务终结点极具挑战性,因为它没有考虑到不同请求具有不同的处理需求。
  • 输出长度因用例而异:LLM 的不同用例可能会导致完全不同的输出令牌长度。 生成输出令牌是 LLM 推理中最耗时的部分,因此这可能会极大地影响吞吐量。 例如,摘要涉及更短、更简洁的回答,但文本生成(如撰写文章或产品说明)可能会生成更长的答案。

如何为终结点选择每秒令牌范围?

预配吞吐量服务终结点根据每秒可以发送到终结点的标记数范围进行配置。 终结点可以纵向扩展和缩减,以处理生产应用程序的负载。 我们将根据你的终结点缩放到的每秒标记数范围按小时收费。

对于预配吞吐量服务终结点上的每秒标记数,如需了解适用于你的用例的范围,最佳方法是使用具有代表性的数据集执行负载测试。 请参阅实施自己的 LLM 终结点基准测试

需要考虑两个重要因素:

  • Databricks 如何测量 LLM 的每秒令牌数性能

    Databricks 针对表示摘要任务的工作负载对终结点进行基准测试,这些任务在检索增强型生成样式用例中很常见。 具体而言,工作负载包括:

    • 2048 个输入标记
    • 256 个输出标记

    显示的令牌范围结合了输入和输出令牌吞吐量,并在默认情况下通过优化在吞吐量与延迟之间进行平衡。

    Databricks 基准测试,用户可以以每秒 1 个请求的批大小并发将每秒多个令牌发送到终结点。 这会模拟多个同时命中终结点的请求,这更准确地表示在生产环境中实际使用终结点的方式。

  • 自动缩放的工作原理

    模型服务具有快速自动缩放系统,可缩放基础计算以满足应用程序的每秒标记数需求。 Databricks 以每秒标记块的形式纵向扩展预配吞吐量,因此,只有在你使用了额外的预配吞吐量时,才需要就所用单位付费。