优化和扩缩 Vertex AI Agent Engine 运行时

本页介绍了有关如何优化和扩展 Vertex AI Agent Engine Runtime 性能的最佳实践,涵盖以下场景:

这些场景展示了如何使用部署参数来解决常见的性能瓶颈问题,尤其是在实际应用中遇到不可预测的突发流量模式时。

冷启动问题

当请求到达时,如果没有空闲的实例或容器来处理该请求,Vertex AI Agent Engine 就必须启动一个新实例或容器,此时会发生冷启动。这会显著增加请求的延迟时间。

例如,向具有默认 min_instances=1 的代理发送 300 个并发请求可能会显示以下结果:

  • 冷启动(首次运行):平均延迟时间约为 4.7 秒。

  • 温启动(立即第二次运行):平均延迟时间约为 0.4 秒。

超过 4 秒的开销几乎完全是由于新实例启动来处理负载造成的。

您可以尝试以下方法来缓解冷启动问题:

  • 设置足够高的 min_instances 值,以处理您的基准流量。例如,将 min_instances=10 设置为示例代理可将冷启动的平均延迟时间缩短至大约 1.4 秒。对于流量波动较大或流量较高的应用,请将 min_instances 设置为可以处理典型负载的值,而无需从 1 开始扩缩。最大值为 10。

  • 使用队列向 Vertex AI Agent Engine 运行时发送稳定、持续、可预测的负载。例如,在基于代理开发套件 (ADK) 的代理上,使用 min_instances=10 和默认 concurrency (9) 持续运行每分钟 1,500 次查询(每秒 25 次查询)的负载测试 60 秒,可能会产生以下结果:

    • 平均延迟时间始终很短,约为 1.6 秒。

稳定、持续的负载可使服务保持暖机状态,从而实现最佳性能。

利用率不足的异步工作器

默认情况下,container_concurrency 配置为处理同步代码,其中每个 Agent Engine 实例一次只处理一个请求。基于智能体开发套件 (ADK) 的异步智能体可以同时处理多个 I/O 密集型请求(例如 LLM 或工具调用)。

例如,向基于 ADK 的代理发送 300 个并发请求,并将 min_instances=10 和默认 container_concurrency=9 设置为以下值,可能会产生以下结果:

  • 虽然延迟时间中位数约为 4 秒,但延迟时间峰值可达到 60 秒。这表示在服务缓慢横向扩缩时,请求会大量排队。

为了缓解异步工作器利用率不足的问题,请增加 container_concurrency,以允许每个 Agent Engine 实例处理多个请求。每个代理进程可处理的并发请求数为 container_concurrency / 9。值 9 表示每个容器中并行运行的代理进程数。

例如,向同一基于 ADK 的代理发送 300 个并发请求(包含 min_instances=10container_concurrency=36)可能会产生以下结果:

  • 延迟时间上限从 60 秒降至大约 7 秒。这表明现有实例可以更有效地吸收流量高峰。

对于异步代理(例如基于 ADK 的代理),请将 container_concurrency 设置为 9 的倍数(例如 36)作为起始值。这有助于提高对流量高峰的响应速度,并缩短扩容带来的延迟。

请注意,将 container_concurrency 值设置得过高可能会导致内存不足 (OOM) 错误。

后续步骤