La velocidad se une a la escala: cargue las pruebas de los puntos finales de SageMakerAI con la herramienta de prueba de Observe.AI

Esta publicación está coescrita con Aashraya Sachdeva de Observe.ai.

Puede utilizar Amazon SageMaker para crear, entrenar e implementar modelos de aprendizaje automático (ML), incluidos modelos de lenguaje grande (LLM) y otros modelos básicos (FM). Esto le ayuda a reducir significativamente el tiempo necesario para una variedad de tareas de desarrollo generativo de IA y ML. Un ciclo de desarrollo de IA/ML normalmente implica ciclos de vida de preprocesamiento de datos, desarrollo de modelos, capacitación, pruebas e implementación. Al utilizar SageMaker, sus equipos de ingeniería de aprendizaje automático y ciencia de datos pueden descargar gran parte del trabajo pesado indiferenciado que implica el desarrollo de modelos.

Si bien SageMaker puede ayudar a los equipos a descargar una gran cantidad de trabajo pesado, los equipos de ingeniería aún tienen que utilizar pasos manuales para implementar y ajustar los servicios relacionados que forman parte de los canales de inferencia, como colas y bases de datos. Además, los equipos deben probar varios tipos de instancias de GPU para encontrar el equilibrio adecuado entre rendimiento y costo.

Observe.ai proporciona un producto de inteligencia de conversación (CI) que se integra con soluciones de centro de contacto como servicio (CCaaS). La herramienta analiza las llamadas en tiempo real y una vez completadas para habilitar funciones como resúmenes de llamadas, comentarios de los agentes y respuesta automática. Las características de Conversation Intelligence (CI) deben escalar desde clientes que tienen menos de 100 agentes hasta clientes que tienen miles de agentes, lo que representa un aumento de diez veces en la escala. Para ayudar con esto, Observe.ai necesitaba un mecanismo para optimizar su infraestructura de ML y los costos de servicio de modelos. Sin tal mecanismo, los desarrolladores tuvieron que escribir múltiples scripts de prueba y desarrollar procesos de prueba y sistemas de depuración, lo que consumió mucho tiempo.

Para resolver este desafío, Observe.ai desarrolló One Load Audit Framework (OLAF), que se integra con SageMaker para identificar cuellos de botella y problemas de rendimiento en los servicios de ML, ofreciendo mediciones de latencia y rendimiento bajo cargas de datos estáticas y dinámicas. El marco también incorpora a la perfección pruebas de rendimiento de ML en el ciclo de vida de desarrollo de software, lo que facilita un aprovisionamiento preciso y ahorro de costos. Utilizando OLAF, el equipo de aprendizaje automático de Observe.AI pudo reducir el tiempo de prueba de una semana a unas pocas horas. Esto ayudó a Observe.AI a aumentar la frecuencia de implementación de terminales y la incorporación de clientes. La utilidad OLAF está disponible en GitHub y es de uso gratuito. Es de código abierto y se distribuye bajo la licencia Apache 2.0.

En esta publicación de blog, aprenderá cómo utilizar la utilidad OLAF para probar y validar su punto final SageMaker.

Descripción general de la solución

Una vez que haya implementado su modelo para realizar inferencias y haya verificado que es funcionalmente preciso, querrá mejorar el rendimiento de su modelo. El primer paso para hacer esto es realizar una prueba de carga del punto final de inferencia. Puede utilizar las métricas de prueba de carga para aplicar optimizaciones a su modelo, decidir sobre instancias de GPU y ajustar la canalización de aprendizaje automático para aumentar el rendimiento sin comprometer la precisión. Las pruebas de carga deben repetirse varias veces para medir el impacto de cualquier optimización. Para cargar la prueba, debe configurar los scripts de prueba de carga para integrarlos con las API de SageMaker relevantes y extraer métricas como latencia, CPU y utilización de la memoria. También debe configurar un panel para ver los resultados de la prueba de carga y exportar las métricas de la prueba de carga para su posterior análisis; y necesita un marco configurable para aplicar carga simultánea al punto final.

Cómo ayuda la OLAF

La OLAF le ahorra el trabajo pesado proporcionándole los elementos anteriores en un paquete. OLAF está integrada con Locust, un marco de pruebas de carga, para brindar la capacidad de crear cargas simultáneas y un panel para ver los resultados a medida que avanza la prueba. OLAF se integra con la API de SageMaker para invocar la API y extraer las métricas para medir el rendimiento.

En la siguiente solución, aprenderá cómo implementar OLAF en su estación de trabajo como un contenedor Docker. Al utilizar la interfaz de usuario de configuración de la prueba de carga (como se muestra en la siguiente figura), se proporciona la configuración de la prueba de carga y el marco OLAF utiliza el SDK de Boto3 para enviar solicitudes de inferencia a un punto final de inferencia de SageMaker. La OLAF supervisa la latencia y las métricas de rendimiento disponibles utilizando el panel de informes de rendimiento proporcionado por la OLAF.

Requisitos previos

Para este tutorial de solución, necesita lo siguiente:

Una cuenta de AWS Docker instalada en su estación de trabajo. La interfaz de línea de comandos de AWS (AWS CLI) instalada y configurada. Si utiliza credenciales a largo plazo, como claves de acceso, consulte administrar claves de acceso para usuarios de IAM y claves de acceso seguras para conocer las mejores prácticas. Esta publicación utiliza credenciales temporales a corto plazo generadas por AWS Security Token Service (AWS STS).

Genere sus credenciales de AWS utilizando AWS STS

Para comenzar, utilice la CLI de AWS para generar sus credenciales.

Nota: Asegúrese de que el rol o usuario a partir del cual se generan las claves de acceso tenga permiso de AmazonSageMakerFullAccess. Su rol de AWS CLI debe tener la política de confianza necesaria para asumir el rol desde el cual se generan las claves de acceso.

Obteniendo el rol-arn

En su AWS CLI, escriba el siguiente comando:

aws iam get-role –nombre-role sagemaker_role

El comando generará la salida JSON a continuación. El rol arn es el valor de la propiedad arn en el siguiente JSON.

{ "Role":{ "Ruta":"/", "RoleName":"sagemaker_role", "RoleId":"AROA123456789EXAMPLE", "Arn":"arn:aws:iam::111122223333:role/sagemaker_role", "CreateDate":"2025-12-05T13:02:33+00:00", "AssumeRolePolicyDocument":{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"ec2.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }, "Description":"Permite que las instancias EC2 llamen a los servicios de AWS en su nombre.", "MaxSessionDuration":3600, "RoleLastUsed":{ } } }

Ejecute el siguiente comando en su AWS CLI:

aws sts asumir-role –role-arn –role-session-name –duración-segundos

Establezca el valor de rol arn del paso anterior en el argumento –role-arn.

Proporcione el valor olaf_session al argumento —role-session-name y establezca un valor equivalente a cuánto tiempo espera que se ejecute su prueba de carga en el argumento –duration-segundos. En este blog lo configuramos en 1800 segundos, lo que proporciona 30 minutos de tiempo de prueba de carga.

El comando asumir rol generará credenciales temporales de AWS como se muestra a continuación

{ "Credenciales":{ "AccessKeyId":"ASIAIOSFODNN7EXAMPLE", "SecretAccessKey":"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken":"IQoJb3JpZ2luX2VjEJf//////////wEaCXVzLWVhc3QtMSJFMEMCIFdzSaxLya/E71xi2SeG8KFDF46 DkxvsWt6Ih0I5X2I6Ah9FYGmWi3fnQfyPQWuzE0Co44xp+qOAxbfaHJ53OYbBKpkCCF8QARoMNjE1NTE1NDU5MjM5IgyoWu 5a5DJX3BMn7LYq9gHiRr2sQvStZT9tvvdS8QFjTntBYFEkDL636Crj4xw5rDieBoYFB9h+ozSqMXOtze79DHQLyCduT+McW OlB9Ic5x/xtzPT9HZsfMaEMUOPgI9LtKWUK367rVdcqBV8HH8wOwUS9RhwIyXg2vsGa+WanaS8o6sO8PVkvqOs4ea3CFgunc GgSqIftJvgMg0OswzkAoUKXG6jMwL3Ppu13Dg9NV3YKOsS80vejhEJ8QFiKiTsJKX2QmQz/wUN4DN83y8qeFfYEpuYC92oZ zv2gErrsXqFd+7/+2w97mInPlD6g1tyd8FlGdXg821WckmwdPu7TYqsCR9kwiM3LyQY6nwFM3U7f/sCre28o2Js31dig0WH b1iv3nTR6m/bIKqsQL4EtYXPGjHD6Ifsf9nQYtkPQC/PqzXg7anx6Q6OW5CzVvk4xU/G9+HcCej84MutK/hQGp3xnRPuJvU Es/q/QlddURk/MFZW9X3njLCn89FRmJ/tI1Mzy/yctwgLcBetE7RIPgaM/90HNXp62vBMK0tzqR1orm6/7eOGV5DXaprQ=", "Expiración":"2025-12-05T14:34:56+00:00" }, "AssumedRoleUser":{ "AssumedRoleId":"AROA123456789EJEMPLO:olaf-session", "Arn":"arn:aws:sts::111122223333:función-asumida/función-blog-sm/sesión-olaf" } }

Tome nota de la clave de acceso, la clave secreta y el token de sesión que utilizará para configurar la prueba en la herramienta OLAF.

Configure su punto final de inferencia de SageMaker

En este paso, configurará un punto final de inferencia de SageMaker. El siguiente es un script de CloudFormation para configurar el punto final. Copie el contenido a continuación y guárdelo como un archivo yaml para usarlo en los pasos a continuación.

Recursos: SageMakerExecutionRole: Tipo: AWS::IAM::Role Propiedades: AssumeRolePolicyDocument: Versión: '2012-10-17' Declaración: – Efecto: Permitir principal: Servicio: sagemaker.amazonaws.com Acción: sts:AssumeRole ManagedPolicyArns: – arn:aws:iam::aws:policy/AmazonSageMakerFullAccess – arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess SageMakerModel: Tipo: AWS::SageMaker::Model Propiedades: ModelName: !Sub '${AWS::StackName}-flan-t5-model' ExecutionRoleArn: !GetAtt SageMakerExecutionRole.Arn EnableNetworkIsolation: true PrimaryContainer: Imagen: !Sub '763104351884.dkr.ecr.${AWS::Region}.amazonaws.com/huggingface-pytorch-inference:1.13.1-transformers4.26.0-gpu-py39-cu117-ubuntu20.04' Entorno: HF_MODEL_ID: !Sub 'google/flan-t5-${ModelSize}' SageMakerEndpointConfig: Tipo: AWS::SageMaker::EndpointConfig Propiedades: EndpointConfigName: !Sub '${EndpointName}-config' ProductionVariants: – VariantName: AllTraffic ModelName: !GetAtt SageMakerModel.ModelName InstanceType: !Ref InstanceType InitialInstanceCount: 1 SageMakerEndpoint: Tipo: AWS::SageMaker::Endpoint Propiedades: EndpointName: !Ref EndpointName EndpointConfigName: !GetAtt SageMakerEndpointConfig.EndpointConfigName Parámetros: ModelName: Tipo: Cadena Predeterminado: flan-t5-model Descripción: Nombre del modelo de SageMaker EndpointName: Tipo: Cadena Predeterminado: flan-t5-endpoint-blog Descripción: Nombre del punto final de SageMaker InstanceType: Tipo: Cadena Predeterminado: ml.g5.xlarge Descripción: Tipo de instancia para el punto final de SageMaker AllowedValues: – ml.g4dn.xlarge – ml.g4dn.2xlarge – ml.g5.xlarge – ml.g5.2xlarge – ml.p3.2xlarge ModelSize: Tipo: Cadena Predeterminado: base Descripción: Tamaño del modelo FLAN-T5 AllowedValues: – pequeño – base – grande – xl – xxl Salidas: SageMakerEndpointId: Descripción: ID del punto final de SageMaker Valor: !Ref SageMakerEndpoint SageMakerEndpointName: Descripción: Nombre del punto final de SageMaker Valor: !Ref EndpointName ModelName: Descripción: Nombre del modelo implementado Valor: !Ref ModelName AWSTemplateFormatVersion: '2010-09-09' Descripción: 'Plantilla de CloudFormation para implementar el modelo FLAN-T5 en Amazon SageMaker'

Abra una ventana de AWS CloudShell seleccionando el icono de CloudShell en la parte superior de la Consola de administración de AWS en la región de AWS donde desea que se cree el punto final.

Barra de navegación de AWS con el icono de CloudShell resaltado con una flecha roja

En su ventana de CloudShell, elija Acciones y seleccione Cargar archivo. Seleccione y cargue el archivo YAML de CloudFormation compartido al comienzo de esta sección.

Ventana de terminal de AWS CloudShell que muestra el menú contextual con la opción Cargar archivo resaltada entre otras acciones

Ejecute el siguiente comando en el indicador de CloudShell

aws cloudformation create-stack –stack-name flan-t5-endpoint-stack –template-body file:// –capabilities CAPABILITY_IAM

Navegue hasta la consola de Amazon SageMaker AI Studio. Es posible que deba cambiar la región para que coincida con el lugar donde implementó su punto final de SageMaker. Seleccione Inferencia y luego Puntos finales en el panel de navegación para ver el punto final implementado. El punto final de SageMaker tardará unos minutos en completar el aprovisionamiento. Cuando esté listo, el valor del campo Estado será En servicio. Tenga en cuenta el nombre del punto final.

Consola de AWS SageMaker que muestra el punto final activo con el estado de InService y los detalles de creación

Instalar OLAF

Está listo para instalar y configurar OLAF para ayudarle a probar la carga de su punto final de inferencia de SageMaker AI.

Clona el repositorio de OLAF desde el repositorio de OLAF en GitHub:

clon de git https://github.com/Observeai-Research/olaf.git

Navegue hasta el directorio olaf y cree la imagen de la ventana acoplable para OLAF:

cd olaf ventana acoplable build -t olaf.

Ejecute OLAF:

ejecución de la ventana acoplable -p 80:8000 olaf

Abra una ventana del navegador e ingrese la siguiente URL para abrir la interfaz de usuario de OLAF. Introduzca olaf como nombre de usuario y contraseña para iniciar sesión en el panel de OLAF. A la izquierda hay una serie de botones de opción para seleccionar el recurso que se va a probar, incluidos SageMaker, S3, etc. A la derecha hay una pantalla de configuración que cambia según el recurso seleccionado.

Página de inicio para la herramienta de prueba Olaf con opciones de selección de servicios de AWS

La OLAF admite opciones adicionales, entre ellas:

Multimodelo Habilitar modo por lotes

Pruebe el punto final de SageMaker

Abra la interfaz de usuario de OLAF en http://localhost:80/. Seleccione Sagemaker en el panel de navegación y configure la prueba: Punto final de SageMaker: ingrese aquí el nombre del punto final de SageMaker desde la consola de SageMaker Unified Studio. Tipo de predictor: OLAF admite predictores de pytorch, sklearn y tensorflow. Mantenga los valores predeterminados. Serializador de entrada: las opciones de serialización son numpy y json. Mantenga los valores predeterminados. Serializador de salida: las opciones de serialización son numpy y json. Mantenga los valores predeterminados. Región de AWS: seleccione la región donde se implementa el punto final de SageMaker. Clave de acceso de AWS: ingrese la clave de acceso de AWS generada a partir de AWS STS en la sección "Genere sus credenciales de AWS utilizando AWS STS" arriba. Clave secreta de AWS: ingrese la clave secreta de AWS generada a partir de AWS STS en la sección "Genere sus credenciales de AWS utilizando AWS STS" anterior. Token de sesión de AWS: ingrese el token de sesión generado desde AWS STS en la sección "Genere sus credenciales de AWS utilizando AWS STS" arriba. Ingrese la consulta json: para esta prueba, ingrese el siguiente mensaje para traducir una frase del inglés al francés.

[ { "inputs": "traducir la siguiente frase del inglés al francés : Hola, ¿cómo estás?" } ]

Elija INICIAR SESIÓN DE CARGA para iniciar una sesión de prueba de carga. La sesión se inicia y se proporciona un enlace a la sesión en la parte inferior de la página. Si el enlace no aparece en unos segundos, elija INICIAR CARGAR SESIÓN para generar el enlace a la sesión.

Página de configuración de pruebas de carga de endpoints de SageMaker con configuraciones de predictor de PyTorch

Al seleccionar el enlace, accederá a un panel de LOCUST. Ingrese la cantidad de usuarios simultáneos que desea que la prueba simule en el campo Número de usuarios y el intervalo (en segundos) en el que los usuarios deben iniciarse en la tasa de generación. Elija Iniciar enjambre para iniciar la prueba de carga.

Interfaz OLAF Locust configurada para pruebas de carga de endpoints de SageMaker con 10 usuarios y parámetros personalizados

Al iniciar la prueba, se presenta una página de informes, que se muestra en la siguiente figura, que puede utilizar para monitorear los diversos parámetros de rendimiento a medida que avanza la prueba. La información de esta página proporciona un resumen de las estadísticas, los valores de latencia p50 y p95, y el uso de CPU y memoria de los trabajadores de SageMaker.

Panel de control de Locust que muestra estadísticas de rendimiento del predictor de PyTorch

Elija Gráficos en la parte superior de la pantalla para ver gráficos que muestran el total de solicitudes por segundo y los tiempos de respuesta en milisegundos. El gráfico Total de solicitudes por segundo muestra las solicitudes exitosas en verde y las solicitudes fallidas en rojo. El gráfico de Tiempos de respuesta muestra los tiempos de respuesta del percentil quincuagésimo en verde y los tiempos de respuesta del percentil noventa y cinco en amarillo.

Panel de control de Locust que muestra RPS y gráficos de tiempo de respuesta con 7 trabajadores y una tasa de falla del 0 %

Elija Trabajadores en la parte superior de la pantalla para ver las estadísticas de los trabajadores. Los trabajadores se crean para generar la carga deseada. El número de usuarios muestra la cantidad de usuarios generados por el trabajador, el uso de CPU y el uso de memoria muestran la utilización de recursos por parte del trabajador.

Panel de monitoreo de Locust que muestra los procesos de los trabajadores, el uso de la CPU y el consumo de memoria en múltiples instancias.

Puede ver y descargar las estadísticas finales para su análisis. Elija Descargar datos en la parte superior de la pantalla para ver las opciones de descarga de datos. Puede descargar los datos como un archivo CSV desde las páginas de informes de Estadísticas, Fallos, Excepciones y Gráficos.

Pantalla de resumen de la prueba de Locust para mostrar las métricas finales y las capacidades de descarga de CSV

Debe detener la sesión de carga actual antes de poder ejecutar una nueva sesión. Elija DETENER LA SESIÓN DE CARGA EN EJECUCIÓN para detener la sesión. Si está configurado, los datos se pueden cargar en un depósito específico de Amazon Simple Storage Service (Amazon S3). Siga las instrucciones del elemento 3 de Uso avanzado de OLAF, Copia de seguridad automatizada del informe de prueba de carga, para configurar la carga de los resultados de las pruebas en Amazon S3.

Cargue la interfaz de prueba con la advertencia

Hospedaje del cliente

Para la solución descrita en esta publicación, utilizó un escritorio para alojar el contenedor OLAF y configurar las pruebas de carga. La elección de utilizar su escritorio o una instancia de Amazon Elastic Compute Cloude (Amazon EC2) puede afectar la latencia porque el tiempo de ida y vuelta se verá afectado. El ancho de banda de la red también puede afectar la latencia. La clave es estandarizar el entorno que utiliza para ejecutar las pruebas en función de cómo sus clientes utilizan los puntos finales.

Limpiar

Cuando haya terminado con esta demostración, elimine los recursos que ya no necesite para evitar incurrir en costos futuros.

En la terminal de CloudShell, ejecute el siguiente comando para eliminar el punto final de SageMaker:

aws cloudformation eliminar-pila –nombre-pila flan-t5-endpoint-stack

Ejecute el siguiente comando para enumerar las imágenes de Docker en ejecución. Tenga en cuenta el contenedor_id y luego ejecute el siguiente comando para detener las imágenes de Docker.

Conclusión

En esta publicación, aprendió cómo configurar OLAF y usarlo para probar la carga de un punto final de SageMaker con algunos pasos básicos. La OLAF representa un importante paso adelante en la racionalización de la optimización de la infraestructura de aprendizaje automático y los costos de servicio de modelos. A través de esta demostración, ha visto cómo OLAF se integra perfectamente con SageMaker para proporcionar información valiosa sobre el rendimiento de los endpoints en diversas condiciones de carga. Los beneficios clave de la OLAF incluyen:

Configuración e integración sencillas con puntos finales de SageMaker existentes Monitoreo en tiempo real de métricas de rendimiento, incluida la latencia y el rendimiento Estadísticas detalladas e informes descargables para análisis Capacidad para probar diferentes patrones de carga y niveles de concurrencia Soporte para múltiples tipos de modelos y opciones de serialización

Para organizaciones como Observe.ai que necesitan escalar sus operaciones de aprendizaje automático de manera eficiente, OLAF elimina la necesidad de desarrollar una infraestructura de prueba y sistemas de depuración personalizados. Esto significa que los equipos de desarrollo pueden centrarse en las características principales de sus productos y, al mismo tiempo, garantizar un rendimiento óptimo y una rentabilidad de su infraestructura de aprendizaje automático. A medida que la adopción de ML continúa creciendo, herramientas como OLAF se vuelven cada vez más valiosas para ayudar a las organizaciones a optimizar sus operaciones de ML. Ya sea que esté ejecutando algunos modelos o administrando una infraestructura de aprendizaje automático a gran escala, OLAF proporciona la información necesaria para tomar decisiones informadas sobre los tipos de instancias, el escalado y la asignación de recursos.

En esta solución de muestra, utilizó credenciales a corto plazo generadas por el servicio AWS STS para conectarse a SageMaker desde OLAF. Asegúrese de que se tomen las medidas necesarias para proteger sus claves de acceso y credenciales en un entorno de producción.

Para comenzar con OLAF, visite el repositorio de GitHub y siga los pasos de instalación descritos en esta publicación. La interfaz intuitiva del marco y sus capacidades integrales de monitoreo lo convierten en una herramienta esencial para las organizaciones que desean optimizar sus implementaciones de SageMaker.

Sobre los autores

Aashraya Sachdeva es un líder tecnológico con amplia experiencia en genAI, desarrollo de productos e ingeniería de plataformas. Como Director de Ingeniería en Observe, supervisa equipos que crean soluciones agentes y escalables que mejoran tanto la experiencia del cliente como la eficiencia operativa. Con una amplia experiencia guiando iniciativas de aprendizaje automático desde la exploración temprana de datos hasta la implementación y operaciones a gran escala, aporta un enfoque pragmático y centrado en la confiabilidad para ofrecer plataformas de alto rendimiento. A lo largo de su carrera, ha desempeñado un papel clave en el lanzamiento de múltiples productos, aprovechando su experiencia en aprendizaje automático para crear soluciones innovadoras pero prácticas, al tiempo que fomenta constantemente la colaboración, la tutoría y la excelencia técnica entre los equipos de ingeniería.

Shibu Jacob es arquitecto senior de soluciones en Amazon Web Services (AWS), donde ayuda a los clientes a diseñar e implementar soluciones nativas de la nube. Con más de dos décadas de experiencia en arquitectura y desarrollo de software, Shibu se especializa en contenedores, microservicios y arquitecturas basadas en eventos. Le apasiona especialmente el potencial transformador de la IA en el desarrollo de software y el diseño arquitectónico. Antes de unirse a AWS, pasó 20 años trabajando con empresas y nuevas empresas, aportando una gran experiencia práctica a su puesto actual. Fuera del trabajo, a Shibu le gusta seguir las carreras de Fórmula 1, trabajar en proyectos automotrices de bricolaje, realizar largos viajes por carretera y pasar tiempo con su familia.