优化模型服务端点以适应生产环境

了解如何针对需要高吞吐量、低延迟和可靠性能的生产工作负荷优化模型服务终结点。

优化策略分为三类:

何时优化终结点

在遇到以下任一情况时,请考虑优化模型服务终结点:

  • 高查询量:应用程序每秒将超过 5 万个查询(QPS)发送到单个终结点
  • 延迟要求:您的应用程序需要低于100毫秒的响应时间
  • 扩展瓶颈:端点在流量高峰期间经历排队或返回 HTTP 429 错误
  • 成本优化:你想要在维护性能目标的同时降低服务成本
  • 生产准备:准备从开发负载迁移到生产负载

基础结构优化

基础结构优化可改善网络路由、缩放行为和计算容量。

路由优化

路由优化 为高吞吐量工作负荷提供最重要的基础结构改进。 在终结点上启用路由优化时,Databricks 模型服务可改进推理请求的网络路径,从而加快客户端和模型之间的直接通信速度。

性能优势:

功能 / 特点 标准终结点限制 路由优化终结点限制
每个工作区的每秒查询数(QPS) 200 50,000+ (请联系 Databricks 以了解更高的限制)
每个工作区的客户端并发性 192-1024(因区域而异) 无显式限制(受预配并发限制)
每个服务实体的终结点预配并发 1,024 1,024 (请联系 Databricks 以获取更高的限制)

何时使用路由优化:

  • 需要 200 多个 QPS 的工作负荷
  • 具有严格延迟要求的应用程序(处理开销低于 50 毫秒)
  • 为多个并发用户提供服务的生产部署

重要

路由优化仅适用于提供终结点的自定义模型。 基础模型 API 和外部模型不支持路由优化。 身份验证需要 OAuth 令牌;不支持个人访问令牌。

有关设置说明,请参阅服务终结点上的路由优化,有关查询详细信息,请参阅查询路由优化服务终结点

预配的并发

配置的并发决定了您的端点可以处理的同时请求数量。 根据预期的 QPS 和延迟要求配置预配的并发。

配置准则:

  • 最小并发性:设置足够高,无需排队即可处理基线流量
  • 最大并发性:设置足够高以适应流量高峰,同时控制成本
  • 自动缩放:启用自动缩放以按需动态调整容量

计算所需的并发性:

Required Concurrency = Target QPS × Average Latency (seconds)

例如,如果目标为 100 QPS,平均延迟为 200 毫秒:

Required Concurrency = 100 × 0.2 = 20

使用 负载测试 来测量实际延迟并确定最佳并发设置。

实例类型

根据模型的计算要求选择实例类型:

实例类型 最适用于 Trade-offs
CPU (小、中、大) 轻型模型,简单的推理逻辑 计算密集型模型具有较低的成本,但运行速度较慢。
GPU (小、中、大) 大型模型、复杂计算、图像/视频处理 深度学习的成本较高,同时可以实现最佳性能

小窍门

从用于开发和测试的 CPU 实例开始。 仅当观察到高推理延迟或模型需要专用计算(例如深度学习作)时,才切换到 GPU 实例。

模型优化

模型优化可提高推理速度和资源效率。

模型大小和复杂性

模型大小和复杂性:较小的、不太复杂的模型通常会导致更快的推理时间和更高的 QPS。 如果模型很大,请考虑模型量化或修剪等技术。

Batching

如果应用程序可以在单个调用中发送多个请求,请在客户端启用批处理。 这可以显著降低每次预测的开销。

预处理和后处理优化

从服务终结点卸载复杂的预处理和后期处理,以减少推理基础结构上的负载。

客户端优化

客户端优化可改进应用程序与服务终结点的交互方式。

连接池

连接池重复使用现有连接,而不是为每个请求创建新连接,这大大减少了开销。

  • 使用 Databricks SDK,它自动实现连接池最佳做法
  • 如果使用自定义客户端,请自行创建连接池。

错误处理和重试策略

实现可靠的错误处理,以正常处理临时故障,尤其是在自动缩放事件或网络中断期间。

有效负载大小优化

最大程度地减少请求和响应有效负载大小,以减少网络传输时间并提高吞吐量。

衡量和改进性能

性能监视

使用马赛克 AI 模型服务提供的工具监视终结点性能:

指标 它度量的内容 目标 超出时的应对措施
延迟(P50、P90、P99) 请求的响应时间 依赖于应用程序(通常 <为 100-500 毫秒) 检查队列、优化模型或客户端
吞吐量(QPS) 每秒完成的请求数 依赖于工作负荷 启用路由优化,增加预置并发量
错误率 失败请求的百分比 <1% 查看服务日志,检查容量问题
队列深度 正在等待处理的请求 0 (无排队) 增加预配置并发量或启用自动扩展
CPU/内存使用情况 资源利用率 <80% 扩大实例类型或增加并发能力

有关详细监视指南,请参阅监视模型质量和终结点运行状况,以及跟踪服务终结点运行状况指标并将其导出到 Prometheus 和 Datadog,以便将指标导出到可观测性工具。

负载测试

负载测试可衡量实际流量条件下的终结点性能,并帮助你:

  • 确定最佳预配的并发设置
  • 查明性能瓶颈
  • 验证延迟和吞吐量要求
  • 了解客户端并发与服务器并发之间的关系

请参阅 负载测试来提供终结点

排查常见性能问题

队列

模型服务支持自动缩放,以便根据流量模式调整容量。 但是,突然的流量激增可能会导致排队,因为自动缩放需要时间来检测增加的负载和预配额外的容量。 在此期间,传入请求可能会暂时超过可用容量,从而导致请求排队。

当请求速率或并发超过端点的当前处理容量时,会出现队列。 这通常在流量高峰、工作负荷突发或终结点预配的并发不足时发生。 模型服务端点支持临时排队以应对突发流量,但一旦超出定义的阈值,端点将返回 HTTP 429(请求数量过多)错误以保护系统稳定性。

排队会增加延迟,因为排队的请求需要在被处理前等待。 为了减少排队:

  • 将最小预配并发量设置得足够高,以处理基准流量和典型突发情况。
  • 为更高的容量上限启用路由优化
  • 在客户端应用程序中使用指数退避实现重试逻辑

外部 API 瓶颈

模型通常调用外部 API,以便在推理期间进行数据扩充、功能检索或其他任务。 这些外部依赖项可能会成为性能瓶颈:

  • 延迟:测量每个外部 API 调用的响应时间。 这些调用中的高延迟直接增加整体服务延迟并减少吞吐量。
  • 吞吐量限制:外部 API 可能会施加速率限制或容量限制。 超出这些限制可能会导致限流、错误和性能下降。
  • 错误率:来自外部 API 的频繁错误可能会触发重试并增加服务终结点上的负载。
  • 缓存:实现经常从外部 API 访问的数据的缓存,以减少调用次数并提高响应时间。

监视这些因素,确定瓶颈,并为高吞吐量工作负荷实现有针对性的优化。

其他资源