Inferencia sin servidor de Amazon SageMaker es una opción de inferencia especialmente diseñada que le facilita implementar y escalar modelos de aprendizaje automático (ML). Proporciona un modelo de pago por uso, que es ideal para servicios donde las invocaciones de puntos finales son poco frecuentes e impredecibles. A diferencia de un punto final de alojamiento en tiempo real, que está respaldado por una instancia de ejecución prolongada, los recursos informáticos para los puntos finales sin servidor se aprovisionan a pedido, lo que elimina la necesidad de elegir tipos de instancias o administrar políticas de escalado.
La siguiente arquitectura de alto nivel ilustra cómo funciona un punto final sin servidor. Un cliente invoca un punto de enlace, que está respaldado por una infraestructura administrada por AWS.
Sin embargo, los puntos finales sin servidor son propensos a inicios en frío del orden de segundos y, por lo tanto, son más adecuados para cargas de trabajo intermitentes o impredecibles.
Para ayudar a determinar si un punto final sin servidor es la opción de implementación correcta desde una perspectiva de costo y rendimiento, hemos desarrollado el Kit de herramientas de evaluación comparativa de inferencia sin servidor de SageMaker, que prueba diferentes configuraciones de puntos finales y compara la más óptima con una instancia de alojamiento en tiempo real comparable.
En esta publicación, presentamos el kit de herramientas y brindamos una descripción general de su configuración y resultados.
Resumen de la solución
Puede descargar el kit de herramientas e instalarlo desde el Repositorio GitHub. Comenzar es fácil: simplemente instale la biblioteca, cree un modelo de SageMakery proporciona el nombre de tu modelo junto con un archivo con formato de líneas JSON que contiene un conjunto de muestra de parámetros de invocación, incluido el cuerpo de la carga útil y el tipo de contenido. Se proporciona una función conveniente para convertir una lista de argumentos de invocación de muestra en un archivo de líneas JSON o un archivo pickle para cargas binarias como imágenes, video o audio.
Instalar el juego de herramientas
Primero instale la biblioteca de evaluación comparativa en su entorno de Python usando pip:
Puede ejecutar el siguiente código desde un Estudio Amazon SageMaker ejemplo, Instancia de cuaderno de SageMaker, o cualquier instancia con acceso programático a AWS y el apropiado Gestión de identidades y accesos de AWS (IAM) permisos. Los permisos de IAM necesarios se documentan en el Repositorio GitHub. Para obtener orientación adicional y políticas de ejemplo para IAM, consulte Cómo funciona Amazon SageMaker con IAM. Este código ejecuta un punto de referencia con un conjunto predeterminado de parámetros en un modelo que espera una entrada CSV con dos registros de ejemplo. Es una buena práctica proporcionar un conjunto representativo de ejemplos para analizar cómo funciona el punto final con diferentes cargas útiles de entrada.
Además, puede ejecutar el punto de referencia como un trabajo de procesamiento de SageMaker, que puede ser una opción más confiable para puntos de referencia de ejecución más larga con una gran cantidad de invocaciones. Ver el siguiente código:
Tenga en cuenta que esto generará un costo adicional por ejecutar una instancia de procesamiento de SageMaker ml.m5.large durante la duración de la evaluación comparativa.
Ambos métodos aceptan una serie de parámetros para configurar, como una lista de configuraciones de memoria para comparar y la cantidad de veces que se invocará cada configuración. En la mayoría de los casos, las opciones predeterminadas deberían ser suficientes como punto de partida, pero consulte la Repositorio GitHub para obtener una lista completa y descripciones de cada parámetro.
Configuración de evaluación comparativa
Antes de profundizar en lo que hace el punto de referencia y qué resultados produce, es importante comprender algunos conceptos clave cuando se trata de configurar puntos finales sin servidor.
Existen dos opciones de configuración clave: MemorySizeInMB
y MaxConcurrency
. MemorySizeInMB
configura la cantidad de memoria que se asigna a la instancia y puede ser 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB o 6144 MB. La cantidad de vCPU también se escala proporcionalmente a la cantidad de memoria asignada. los MaxConcurrency
El parámetro ajusta cuántas solicitudes simultáneas puede atender un punto final. Con un MaxConcurrency
de 1, un punto final sin servidor solo puede procesar una única solicitud a la vez.
Para resumir, el MemorySizeInMB
El parámetro proporciona un mecanismo para la escalabilidad vertical, lo que le permite ajustar la memoria y los recursos informáticos para servir modelos más grandes, mientras que MaxConcurrency
proporciona un mecanismo para la escalabilidad horizontal, lo que permite que su terminal procese más solicitudes simultáneas.
El costo de operar un punto final está determinado en gran medida por el tamaño de la memoria y no hay ningún costo asociado con el aumento de la simultaneidad máxima. Sin embargo, existe un límite de cuenta por región para la simultaneidad máxima en todos los puntos finales. Referirse a Puntos finales y cuotas de SageMaker para los últimos límites.
Resultados de evaluación comparativa
Teniendo esto en cuenta, el objetivo de evaluar comparativamente un extremo sin servidor es determinar la configuración de tamaño de memoria más rentable y confiable, y la simultaneidad máxima mínima que puede manejar sus patrones de tráfico esperados.
De forma predeterminada, la herramienta ejecuta dos puntos de referencia. El primero es un punto de referencia de estabilidad, que implementa un punto final para cada una de las configuraciones de memoria especificadas e invoca cada punto final con las cargas útiles de muestra proporcionadas. El objetivo de este punto de referencia es determinar la configuración de MemorySizeInMB más efectiva y estable. El punto de referencia captura las latencias de invocación y calcula el costo esperado por invocación para cada punto final. Luego compara el costo con una instancia de alojamiento en tiempo real similar.
Cuando se completa la evaluación comparativa, la herramienta genera varios resultados en el especificado result_save_path
directorio con la siguiente estructura de directorios:
El benchmarking_report
El directorio contiene un informe consolidado con todos los resultados resumidos que describimos en esta publicación. Los directorios adicionales contienen resultados brutos e intermedios que puede utilizar para análisis adicionales. Referirse a Repositorio GitHub para obtener una descripción más detallada de cada artefacto de salida.
Examinemos algunos resultados de evaluación comparativa reales para un punto final que sirve un modelo TensorFlow MobileNetV2 de visión por computadora. Si desea reproducir este ejemplo, consulte el ejemplo cuadernos directorio en el repositorio de GitHub.
El primer resultado dentro del informe consolidado es una tabla de resumen que proporciona las métricas de latencia mínima, media, media y máxima para cada MemorySizeInMB
configuración exitosa del tamaño de la memoria. Como se muestra en la siguiente tabla, la latencia de invocación promedio (invocation_latency_mean
) continuó mejorando a medida que la configuración de la memoria se incrementó a 3072 MB, pero dejó de mejorar a partir de entonces.
Además de las estadísticas descriptivas de alto nivel, se proporciona un gráfico que muestra la distribución de la latencia observada desde el cliente para cada una de las configuraciones de memoria. Nuevamente, podemos observar que la configuración de 1024 MB no tiene el mismo rendimiento que las otras opciones, pero no hay una diferencia sustancial en el rendimiento en las configuraciones de 2048 y superiores.
Reloj en la nube de Amazon también se proporcionan métricas asociadas con cada configuración de punto final. Una métrica clave aquí es ModelSetupTime
, que mide cuánto tiempo se tardó en cargar el modelo cuando se invocó el punto final en un estado frío. Es posible que la métrica no siempre aparezca en el informe, ya que un punto final se inicia en un estado tibio. A cold_start_delay
El parámetro está disponible para especificar la cantidad de segundos de suspensión antes de iniciar la evaluación comparativa en un punto final implementado. Establecer este parámetro en un número más alto, como 600 segundos, debería aumentar la probabilidad de una invocación de estado frío y mejorar las posibilidades de capturar esta métrica. Además, es mucho más probable que esta métrica se capture con el punto de referencia de invocación simultánea, que trataremos más adelante en esta sección.
La siguiente tabla muestra las métricas capturadas por CloudWatch para cada configuración de memoria.
El siguiente gráfico muestra las ventajas y desventajas de rendimiento y costo de diferentes configuraciones de memoria. Una línea muestra el costo estimado de invocar el punto final 1 millón de veces y la otra muestra la latencia de respuesta promedio. Estas métricas pueden informar su decisión sobre qué configuración de punto final es más rentable. En este ejemplo, vemos que la latencia promedio se aplana después de 2048 MB, mientras que el costo continúa aumentando, lo que indica que para este modelo una configuración de tamaño de memoria de 2048 sería la más óptima.
El resultado final de la evaluación comparativa de costos y estabilidad es una configuración de memoria recomendada, junto con una tabla que compara el costo de operar un punto final sin servidor con una instancia de alojamiento comparable de SageMaker. Según los datos recopilados, la herramienta determinó que la configuración de 2048 MB es la más óptima para este modelo. Aunque la configuración 3072 proporciona aproximadamente 10 milisegundos de mejor latencia, eso conlleva un aumento del 30 % en el costo, de $4.55 a $5.95 por millón de solicitudes. Además, el resultado muestra que un punto final sin servidor proporcionaría ahorros de hasta un 1 % en comparación con una instancia de alojamiento en tiempo real comparable cuando hay menos de 88.72 millón de solicitudes de invocación mensuales, y se equilibra con un punto final en tiempo real después de 1 millones de solicitudes.
El segundo tipo de benchmark es opcional y prueba varios MaxConcurency
ajustes bajo diferentes patrones de tráfico. Este punto de referencia generalmente se ejecuta utilizando el óptimo MemorySizeInMB
configuración del benchmark de estabilidad. Los dos parámetros clave para este punto de referencia es una lista de MaxConcurency
configuración para probar junto con una lista de multiplicadores de clientes, que determinan la cantidad de clientes simultáneos simulados con los que se prueba el punto final.
Por ejemplo, al configurar el concurrency_benchmark_max_conc parameter
a [4, 8] y concurrency_num_clients_multiplier
a [1, 1.5, 2], se lanzan dos puntos finales: uno con MaxConcurency
de 4 y el otro 8. Luego, cada punto final se compara con un (MaxConcurency
x multiplicador) número de clientes simultáneos simulados, que para el punto final con una simultaneidad de 4 se traduce en pruebas comparativas de carga con 4, 6 y 8 clientes simultáneos.
El primer resultado de este punto de referencia es una tabla que muestra las métricas de latencia, las excepciones de limitación y las métricas de transacciones por segundo (TPS) asociadas con cada MaxConcurrency
configuración con diferente número de clientes concurrentes. Estas métricas ayudan a determinar el MaxConcurrency
ajuste para manejar la carga de tráfico esperada. En la siguiente tabla, podemos ver que un punto final configurado con una simultaneidad máxima de 8 pudo manejar hasta 16 clientes simultáneos con solo dos excepciones de limitación de 2,500 invocaciones realizadas en un promedio de 24 transacciones por segundo.
El siguiente conjunto de resultados proporciona un gráfico para cada MaxConcurrency
configuración que muestra la distribución de la latencia bajo diferentes cargas. En este ejemplo, podemos ver que un punto final con un MaxConcurrency
la configuración de 4 pudo procesar con éxito todas las solicitudes con hasta 8 clientes simultáneos con un aumento mínimo en la latencia de invocación.
El resultado final proporciona una tabla con métricas de CloudWatch para cada MaxConcurrency
configuración. A diferencia de la tabla anterior que muestra la distribución de la latencia para cada configuración de memoria, que puede no mostrar siempre el arranque en frío ModelSetupTime
métrica, es mucho más probable que esta métrica aparezca en esta tabla debido a la mayor cantidad de solicitudes de invocación y una mayor MaxConcurrency
.
Conclusión
En esta publicación, presentamos SageMaker Serverless Inference Benchmarking Toolkit y brindamos una descripción general de su configuración y resultados. La herramienta puede ayudarlo a tomar una decisión más informada con respecto a la inferencia sin servidor al realizar pruebas de carga de diferentes configuraciones con patrones de tráfico realistas. Pruebe el kit de herramientas de evaluación comparativa con sus propios modelos para ver por sí mismo el rendimiento y el ahorro de costos que puede esperar al implementar un punto final sin servidor. por favor refiérase a Repositorio GitHub para obtener documentación adicional y cuadernos de ejemplo.
Recursos adicionales
Sobre los autores
Simón Zamarin es un arquitecto de soluciones de IA / ML cuyo objetivo principal es ayudar a los clientes a extraer valor de sus activos de datos. En su tiempo libre, a Simon le gusta pasar tiempo con la familia, leer ciencia ficción y trabajar en varios proyectos de bricolaje.
Patel Dhawal es Arquitecto Principal de Aprendizaje Automático en AWS. Ha trabajado con organizaciones que van desde grandes empresas hasta empresas emergentes medianas en problemas relacionados con la computación distribuida y la inteligencia artificial. Se enfoca en el aprendizaje profundo, incluidos los dominios de PNL y visión por computadora. Ayuda a los clientes a lograr una inferencia de modelos de alto rendimiento en SageMaker.
Rishabh Ray Chaudhury es gerente sénior de productos en Amazon SageMaker y se enfoca en la inferencia de aprendizaje automático. Le apasiona innovar y crear nuevas experiencias para los clientes de aprendizaje automático en AWS para ayudarlos a escalar sus cargas de trabajo. En su tiempo libre le gusta viajar y cocinar. Puedes encontrarlo en Etiqueta LinkedIn.
- Avanzado (300)
- AI
- arte ai
- generador de arte ai
- robot ai
- Amazon SageMaker
- Kit de herramientas de evaluación comparativa de inferencia sin servidor de Amazon SageMaker
- inteligencia artificial
- certificación de inteligencia artificial
- inteligencia artificial en banca
- robots de inteligencia artificial
- robots de inteligencia artificial
- software de inteligencia artificial
- Aprendizaje automático de AWS
- blockchain
- conferencia blockchain ai
- Coingenius
- inteligencia artificial conversacional
- criptoconferencia ai
- de dall
- deep learning
- google ai
- máquina de aprendizaje
- Platón
- platón ai
- Inteligencia de datos de Platón
- Juego de Platón
- PlatónDatos
- juego de platos
- escala ia
- sintaxis
- zephyrnet