Minimiza la latencia de inferencia en tiempo real utilizando las estrategias de enrutamiento de Amazon SageMaker

Reducción de la latencia de inferencia en tiempo real mediante las estrategias de enrutamiento de Amazon SageMaker

Amazon SageMaker hace que sea sencillo implementar modelos de aprendizaje automático (ML) para inferencia en tiempo real y ofrece una amplia selección de instancias de ML que abarcan CPUs y aceleradores como AWS Inferentia. Como servicio completamente gestionado, puedes escalar tus implementaciones de modelos, minimizar los costos de inferencia y administrar tus modelos de manera más efectiva en producción con una carga operacional reducida. Un punto final de inferencia en tiempo real de SageMaker consta de un punto de enlace de HTTPs e instancias de ML que se implementan en múltiples zonas de disponibilidad para garantizar alta disponibilidad. El escalado automático de aplicaciones de SageMaker puede ajustar dinámicamente la cantidad de instancias de ML provisionadas para un modelo en respuesta a los cambios en la carga de trabajo. El punto final distribuye de manera uniforme las solicitudes entrantes a las instancias de ML utilizando un algoritmo de round-robin.

Cuando los modelos de ML implementados en instancias reciben llamadas de API de un gran número de clientes, una distribución aleatoria de las solicitudes puede funcionar muy bien cuando no hay mucha variabilidad en las solicitudes y respuestas. Pero en sistemas con cargas de trabajo de IA generativas, las solicitudes y respuestas pueden ser extremadamente variables. En estos casos, a menudo es deseable equilibrar la carga teniendo en cuenta la capacidad y la utilización de la instancia en lugar de la carga equilibrada aleatoria.

En esta publicación, discutimos la estrategia de enrutamiento de Least Outstanding Requests (LOR) de SageMaker y cómo puede minimizar la latencia para ciertos tipos de cargas de trabajo de inferencia en tiempo real teniendo en cuenta la capacidad y utilización de las instancias de ML. Hablamos sobre sus beneficios en comparación con el mecanismo de enrutamiento predeterminado y cómo puedes activar LOR para tus implementaciones de modelos. Finalmente, presentamos un análisis comparativo de las mejoras de latencia con LOR en comparación con la estrategia de enrutamiento predeterminado de enrutamiento aleatorio.

Estrategia de LOR de SageMaker

Por defecto, los puntos finales de SageMaker tienen una estrategia de enrutamiento aleatorio. SageMaker ahora admite una estrategia de LOR, que permite a SageMaker enrutar de manera óptima las solicitudes a la instancia que sea la más adecuada para atender esa solicitud. SageMaker hace esto posible al monitorear la carga de las instancias detrás de tu punto final, y los modelos o componentes de inferencia que se implementan en cada instancia.

El siguiente diagrama interactivo muestra la política de enrutamiento predeterminada donde las solicitudes que llegan a los puntos finales del modelo se envían de manera aleatoria a las instancias de ML.

El siguiente diagrama interactivo muestra la estrategia de enrutamiento donde SageMaker enrutará la solicitud a la instancia que tenga el menor número de solicitudes pendientes.

En general, el enrutamiento LOR funciona bien para modelos fundamentales o modelos de IA generativos cuando tu modelo responde en cientos de milisegundos a minutos. Si la latencia de respuesta de tu modelo es más baja (hasta cientos de milisegundos), es posible que obtengas mayores beneficios de un enrutamiento aleatorio. Independientemente, recomendamos que pruebes e identifiques el mejor algoritmo de enrutamiento para tus cargas de trabajo.

Cómo establecer las estrategias de enrutamiento de SageMaker

Ahora, SageMaker te permite establecer el parámetro RoutingStrategy al crear la EndpointConfiguration para los puntos finales. Los diferentes valores de RoutingStrategy que son admitidos por SageMaker son:

  • LEAST_OUTSTANDING_REQUESTS
  • RANDOM

A continuación se muestra un ejemplo de implementación de un modelo en un punto final de inferencia que tiene LOR activado:

  1. Crea la configuración del punto final estableciendo RoutingStrategy como LEAST_OUTSTANDING_REQUESTS:

    endpoint_config_response = sm_client.create_endpoint_config(    EndpointConfigName=endpoint_config_name,    ProductionVariants=[        {            "VariantName": "variant1",            "ModelName": model_name,            "InstanceType": "instance_type",            "InitialInstanceCount": initial_instance_count,  …..            "RoutingConfig": {                'RoutingStrategy': 'LEAST_OUTSTANDING_REQUESTS'}        },    ],)
  2. Crea el punto final usando la configuración del punto final (sin cambios):

    create_endpoint_response = sm_client.create_endpoint(    EndpointName="endpoint_name",     EndpointConfigName="endpoint_config_name")

Resultados de rendimiento

Ejecutamos pruebas de rendimiento para medir la latencia y el rendimiento de inferencia de extremo a extremo del modelo codegen2-7B alojado en instancias ml.g5.24xl con enrutamiento predeterminado y puntos finales de enrutamiento inteligente. El modelo CodeGen2 pertenece a la familia de modelos de lenguaje autoregresivos y genera código ejecutable cuando se le dan indicaciones en inglés.

En nuestro análisis, aumentamos el número de instancias ml.g5.24xl detrás de cada punto final para cada ejecución de prueba a medida que se aumentaba el número de usuarios concurrentes, como se muestra en la siguiente tabla.

Prueba Número de Usuarios Concurrentes Número de Instancias
1 4 1
2 20 5
3 40 10
4 60 15
5 80 20

Medimos la latencia P99 de extremo a extremo para ambos puntos finales y observamos una mejora del 4-33% en la latencia cuando el número de instancias se incrementó de 5 a 20, como se muestra en el siguiente gráfico.

De manera similar, observamos una mejora del 15-16% en el rendimiento por minuto por instancia cuando el número de instancias se aumentó de 5 a 20.

Esto demuestra que el enrutamiento inteligente puede mejorar la distribución del tráfico entre los puntos finales, lo que conduce a mejoras en la latencia de extremo a extremo y el rendimiento general.

Conclusión

En esta publicación, explicamos las estrategias de enrutamiento de SageMaker y la nueva opción para habilitar el enrutamiento LOR. Explicamos cómo habilitar LOR y cómo puede beneficiar a sus implementaciones de modelos. Nuestras pruebas de rendimiento mostraron mejoras en la latencia y el rendimiento durante la inferencia en tiempo real. Para obtener más información sobre las funciones de enrutamiento de SageMaker, consulte la documentación. Le recomendamos que evalúe su carga de trabajo de inferencia y determine si está configurado de manera óptima con la estrategia de enrutamiento.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Análisis en profundidad de la confiabilidad en los modelos GPT

Más de la mitad de los encuestados en una reciente encuesta global afirmaron que utilizarían esta tecnología emergent...

Inteligencia Artificial

Los agentes de IA personalizados ya están aquí. ¿Está el mundo listo para ellos?

La era de los asistentes de inteligencia artificial autónoma podría tener enormes implicaciones.

Inteligencia Artificial

Cerrando la brecha de inclusión en la informática

Los estudiantes del Instituto Politécnico y Universidad Estatal de Virginia buscan abordar la falta de diversidad en ...

Inteligencia Artificial

Este artículo de inteligencia artificial del MIT explora la escala de los modelos de aprendizaje profundo para la investigación química.

Investigadores del MIT investigaron el comportamiento de escalamiento de grandes modelos de lenguaje químico, centrán...