En esta página, se describen las prácticas recomendadas para optimizar y escalar el rendimiento del entorno de ejecución de Vertex AI Agent Engine, que abarcan las siguientes situaciones:
En las situaciones, se muestra cómo usar los parámetros de implementación para resolver los cuellos de botella comunes del rendimiento, en especial para los patrones de tráfico impredecibles y con picos en las aplicaciones del mundo real.
Problema de inicio en frío
Un inicio en frío ocurre cuando llega una solicitud y no hay instancias o contenedores inactivos para atenderla, lo que obliga a Vertex AI Agent Engine a iniciar uno nuevo. Esto agrega una latencia significativa a la solicitud.
Por ejemplo, enviar 300 solicitudes simultáneas a un agente con el valor predeterminado de min_instances=1 puede mostrar los siguientes resultados:
Inicio en frío (primera ejecución): Latencia promedio de aproximadamente 4.7 segundos
Inicio semicaliente (segunda ejecución inmediata): Latencia promedio de aproximadamente 0.4 segundos
La sobrecarga de más de cuatro segundos se debe casi por completo a que se inician instancias nuevas para controlar la carga.
Prueba los siguientes métodos para mitigar el problema de inicio en frío:
Establece un valor de
min_instanceslo suficientemente alto como para controlar tu tráfico de referencia. Por ejemplo, establecermin_instances=10en el agente de ejemplo puede reducir la latencia promedio de un inicio en frío a aproximadamente 1.4 segundos. Para las aplicaciones con tráfico alto o picos de tráfico, establecemin_instancesen un valor que pueda controlar tu carga típica sin necesidad de escalar desde 1. El valor máximo es 10.Envía una carga estable, continua y predecible al entorno de ejecución de Vertex AI Agent Engine con una cola. Por ejemplo, ejecutar una prueba de carga sostenida de 1,500 consultas por minuto (25 consultas por segundo) durante 60 segundos en un agente basado en el Kit de desarrollo de agentes (ADK) con
min_instances=10y elconcurrencypredeterminado (9) puede producir el siguiente resultado:- La latencia promedio es constantemente baja, de aproximadamente 1.6 segundos.
Una carga estable y continua mantiene el servicio activo y genera un rendimiento óptimo.
Trabajadores asíncronos subutilizados
De forma predeterminada, container_concurrency se configura para código síncrono, en el que cada instancia de Agent Engine controla solo una solicitud a la vez. Los agentes asíncronos, como los basados en el Kit de desarrollo de agentes (ADK), pueden controlar varias solicitudes vinculadas a E/S (como llamadas a LLM o herramientas) de forma simultánea.
Por ejemplo, enviar 300 solicitudes simultáneas a un agente basado en el ADK con min_instances=10 y el container_concurrency=9 predeterminado puede producir el siguiente resultado:
- Si bien la latencia mediana es de aproximadamente 4 segundos, la latencia máxima alcanza los 60 segundos. Esto indica que las solicitudes se ponen en cola en gran medida mientras el servicio se expande lentamente.
Para mitigar el problema de los trabajadores asíncronos subutilizados, aumenta container_concurrency para permitir que cada instancia de Agent Engine controle varias solicitudes. La cantidad de solicitudes simultáneas que puede controlar cada proceso del agente es container_concurrency / 9. El valor 9 representa la cantidad de procesos del agente que se ejecutan en paralelo dentro de cada contenedor.
Por ejemplo, enviar 300 solicitudes simultáneas al mismo agente basado en el ADK con min_instances=10 y container_concurrency=36 puede producir el siguiente resultado:
- La latencia máxima se reduce de 60 segundos a aproximadamente 7 segundos. Esto demuestra que las instancias existentes pueden absorber el aumento repentino del tráfico de manera más eficaz.
Para los agentes asíncronos (como los basados en el ADK), establece container_concurrency en un múltiplo de 9 (por ejemplo, 36) como punto de partida. Esto mejora la capacidad de respuesta a los aumentos repentinos de tráfico y reduce la latencia del escalamiento horizontal.
Ten en cuenta que establecer el valor de container_concurrency demasiado alto puede generar errores de memoria insuficiente (OOM).
¿Qué sigue?
- Obtén más información sobre la administración de cuotas.
- Usa el agente.
- Administra los agentes implementados.
- Soluciona problemas de implementación de un agente.
- Obtén asistencia.