Patrones de hospedaje de modelos en SageMaker: prácticas recomendadas para probar y actualizar modelos en SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Patrones de hospedaje de modelos en SageMaker: prácticas recomendadas para probar y actualizar modelos en SageMaker

Amazon SageMaker es un servicio completamente administrado que brinda a los desarrolladores y científicos de datos la capacidad de crear, entrenar e implementar rápidamente modelos de aprendizaje automático (ML). Con SageMaker, puede implementar sus modelos ML en puntos finales alojados y obtener resultados de inferencia en tiempo real. Puede ver fácilmente las métricas de rendimiento de sus terminales en Reloj en la nube de Amazon, escalar puntos finales automáticamente en función del tráfico y actualice sus modelos en producción sin perder disponibilidad. SageMaker ofrece una amplia variedad de opciones para implementar modelos ML para inferencia de cualquiera de las siguientes maneras, según su caso de uso:

  • Para las predicciones sincrónicas que deben realizarse en el orden de los milisegundos, use SageMaker inferencia en tiempo real
  • Para las cargas de trabajo que tienen períodos de inactividad entre picos de tráfico y pueden tolerar arranques en frío, utilice Inferencia sin servidor
  • Para solicitudes con grandes tamaños de carga útil de hasta 1 GB, largos tiempos de procesamiento (hasta 15 minutos) y requisitos de latencia casi en tiempo real (de segundos a minutos), use SageMaker Inferencia asíncrona
  • Para obtener predicciones para un conjunto de datos completo, use SageMaker transformación por lotes

La inferencia en tiempo real es ideal para cargas de trabajo de inferencia en las que tiene requisitos de baja latencia, interactivos y en tiempo real. Implementa su modelo en los servicios de alojamiento de SageMaker y obtiene un punto final que se puede usar para la inferencia. Estos puntos finales están respaldados por una infraestructura totalmente administrada y soporte escalado automático. Puede mejorar la eficiencia y el costo combinando múltiples modelos en un solo punto final usando puntos finales de varios modelos or puntos finales de varios contenedores.

Hay ciertos casos de uso en los que desea implementar múltiples variantes del mismo modelo en producción para medir su rendimiento, medir mejoras o ejecutar pruebas A/B. En tales casos, los puntos finales de varias variantes de SageMaker son útiles porque le permiten implementar varias variantes de producción de un modelo en el mismo punto final de SageMaker.

En esta publicación, analizamos los puntos finales multivariante de SageMaker y las mejores prácticas para la optimización.

Comparación de las opciones de inferencia en tiempo real de SageMaker

El siguiente diagrama ofrece una descripción general rápida de las opciones de inferencia en tiempo real con SageMaker.

Un punto final de modelo único le permite implementar un modelo en un contenedor alojado en instancias dedicadas o sin servidor para una latencia baja y un alto rendimiento. Puede crear un modelo y recuperar a Imagen compatible con SageMaker para marcos populares como TensorFlow, PyTorch, Scikit-learn y más. Si está trabajando con un marco personalizado para su modelo, también puede trae tu propio contenedor que instala tus dependencias.

SageMaker también admite opciones más avanzadas, como terminales de varios modelos (MME) y terminales de varios contenedores (MCE). Los MME son útiles cuando se trata de cientos a decenas de miles de modelos y cuando no es necesario implementar cada modelo como un punto final individual. Los MME le permiten alojar múltiples modelos de manera rentable y escalable dentro del mismo punto final mediante el uso de un contenedor de servicio compartido alojado en una instancia. La infraestructura subyacente (contenedor e instancia) sigue siendo la misma, pero los modelos se cargan y descargan dinámicamente desde una ubicación común de S3, según el uso y la cantidad de memoria disponible en el extremo. Su aplicación simplemente necesita incluir una llamada API con el modelo de destino a este punto final para lograr una inferencia de baja latencia y alto rendimiento. En lugar de pagar por un punto de conexión independiente para cada modelo, puede alojar muchos modelos por el precio de un único punto de conexión.

Los MCE le permiten ejecutar hasta 15 contenedores ML diferentes en un solo punto final e invocarlos de forma independiente. Puede crear estos contenedores de ML en diferentes pilas de servicio (como el marco de ML, el servidor modelo y el algoritmo), para que se ejecuten en el mismo punto final para ahorrar costos. Puede unir los contenedores en un canalización de inferencia en serie o invocar el contenedor de forma independiente. Esto puede ser ideal cuando tiene varios modelos de ML diferentes que tienen diferentes patrones de tráfico y necesidades de recursos similares. Los ejemplos de cuándo utilizar los MCE incluyen, entre otros, los siguientes:

  • Modelos de hospedaje en diferentes marcos (como TensorFlow, PyTorch y Scikit-learn) que no tienen suficiente tráfico para saturar la capacidad total de una instancia
  • Hospedaje de modelos del mismo marco con diferentes algoritmos de ML (como recomendaciones, pronósticos o clasificación) y funciones de controlador
  • Comparaciones de arquitecturas similares que se ejecutan en diferentes versiones del marco (como TensorFlow 1.x frente a TensorFlow 2.x) para escenarios como las pruebas A/B

Los terminales multivariante (MVE) de SageMaker le permiten probar varios modelos o versiones de modelos detrás del mismo terminal utilizando variantes de producción. Cada variante de producción identifica un modelo de ML y los recursos implementados para alojar el modelo, como el contenedor de servicio y la instancia.

Descripción general de los terminales multivariante de SageMaker

En los flujos de trabajo de producción de ML, los científicos de datos y los ingenieros de ML refinan los modelos a través de una variedad de métodos, como el reentrenamiento basado en la deriva de datos/modelo/concepto, ajuste de hiperparámetros, selección de características, selección de marco y más. Realizar pruebas A/B entre un modelo nuevo y un modelo antiguo con tráfico de producción puede ser un paso final eficaz en el proceso de validación de un modelo nuevo. En las pruebas A/B, prueba diferentes variantes de sus modelos y compara el rendimiento de cada variante entre sí. Luego elige el modelo de mejor rendimiento para reemplazar el modelo anterior con una nueva versión que ofrece un mejor rendimiento que la versión anterior. Mediante el uso de variantes de producción, puede probar estos modelos de ML y diferentes versiones de modelos detrás del mismo punto final. Puede entrenar estos modelos de ML utilizando diferentes conjuntos de datos, diferentes algoritmos y marcos de ML; implementarlos en diferentes tipos de instancias; o cualquier combinación de estas opciones. El equilibrador de carga conectado al extremo de SageMaker brinda la capacidad de distribuir las solicitudes de invocación entre múltiples variantes de producción. Por ejemplo, puede distribuir el tráfico entre las variantes de producción especificando la distribución del tráfico para cada variante, o puede invocar una variante específica directamente para cada solicitud.

También puede configurar la política de escalado automático para escalar automáticamente sus variantes hacia adentro o hacia afuera en función de métricas como solicitudes por segundo.

El siguiente diagrama ilustra cómo funciona MVE con más detalle.

Extremo multivariante de SageMaker

La implementación de un MVE también es muy sencilla. Todo lo que necesita hacer es definir los objetos del modelo con la imagen y los datos del modelo usando el create_model construir desde SageMaker Python SDK y definir las configuraciones de punto final usando production_variant Construcciones para crear variantes de producción, cada una con su propio modelo diferente y requisitos de recursos (tipo de instancia y recuentos). Esto le permite también probar modelos en diferentes tipos de instancias. Para implementar, utilice el endpoint_from_production_variant construir para crear el punto final.

Durante la creación del punto final, SageMaker aprovisiona la instancia de alojamiento especificada en la configuración del punto final y descarga el modelo y el contenedor de inferencia especificados por la variante de producción en la instancia de alojamiento. Si se devuelve una respuesta exitosa después de iniciar el contenedor y realizar una verificación de estado con un ping, se envía al usuario un mensaje que indica que la creación del punto final se completó. Ver el siguiente código:

sm_session.create_model(
	name=model_name,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url}
	)

sm_session.create_model(
	name=model_name2,
	role=role,
	container_defs={'Image':  image_uri, 'ModelDataUrl': model_url2 }
	)

variant1 = production_variant(
	model_name=model_name,
	instance_type="ml.c5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant1",
	initial_weight=1
	)

variant2 = production_variant(
	model_name=model_name2,
	instance_type="ml.m5.4xlarge",
	initial_instance_count=1,
	variant_name="Variant2",
	initial_weight=1
	)

sm_session.endpoint_from_production_variants(
	name=endpoint_name,
	production_variants=[variant1,  variant2]
	)

En el ejemplo anterior, creamos dos variantes, cada una con su propio modelo diferente (estos también podrían tener diferentes tipos de instancias y recuentos). Establecemos un initial_weight de 1 para ambas variantes: esto significa que el 50% de nuestras solicitudes van a Variant1, y el 50% restante a Variant2. La suma de pesos entre ambas variantes es 2 y cada variante tiene una asignación de peso de 1. Esto implica que cada variante recibe el 50 % del tráfico total.

Invocar el punto final es similar a la construcción común de SageMaker invoke_endpoint; puede llamar al punto final directamente con los datos como carga útil:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload
	)

SageMaker emite métricas como Latency y Invocations para cada variante en CloudWatch. Para obtener una lista completa de las métricas que emite SageMaker, consulte Monitoree Amazon SageMaker con Amazon CloudWatch. Puede consultar CloudWatch para obtener la cantidad de invocaciones por variante, para ver cómo las invocaciones se dividen en variantes de forma predeterminada.

Para invocar una versión específica del modelo, especifique una variante como el TargetVariant en la llamada a invoke_endpoint:

sm_runtime.invoke_endpoint(
	EndpointName=endpoint_name,
	ContentType="text/csv",
	Body=payload,
	TargetVariant="Variant1"
	)

Puede evaluar el rendimiento de cada variante de producción mediante la revisión de métricas como exactitud, precisión, recuperación, puntaje F1 y características operativas del receptor/área bajo la curva para cada variante usando Monitor de modelo de Amazon SageMaker. Luego puede decidir aumentar el tráfico al mejor modelo actualizando los pesos asignados a cada variante llamando Actualizar pesos y capacidades de punto final. Esto cambia la distribución del tráfico a sus variantes de producción sin requerir actualizaciones en su punto final. Entonces, en lugar del 50 % del tráfico desde la configuración inicial, cambiamos el 75 % del tráfico a Variant2 asignando nuevos pesos a cada variante utilizando UpdateEndpointWeightsAndCapacities. Ver el siguiente código:

sm.update_endpoint_weights_and_capacities(
	EndpointName=endpoint_name,
	DesiredWeightsAndCapacities=[
	{
		"DesiredWeight": 25,
		"VariantName": variant1["VariantName"]
	},
	{
		"DesiredWeight": 75,
		"VariantName": variant2["VariantName"]
	}
] )

Cuando esté satisfecho con el rendimiento de una variante, puede enrutar el 100 % del tráfico a esa variante. Por ejemplo, puede establecer el peso para Variant1 a 0 y el peso para Variant2 a 1. SageMaker luego envía el 100 % de todas las solicitudes de inferencia a Variant2. A continuación, puede actualizar de forma segura su punto final y eliminar Variant1 desde su terminal. También puede continuar probando nuevos modelos en producción agregando nuevas variantes a su punto final. También puede configurar estos puntos finales para escalar automáticamente en función del tráfico que reciben los puntos finales.

Ventajas de los criterios de valoración multivariantes

Los MVE de SageMaker le permiten hacer lo siguiente:

  • Implemente y pruebe múltiples variantes de un modelo usando el mismo punto final de SageMaker. Esto es útil para probar variaciones de un modelo en producción. Por ejemplo, suponga que ha implementado un modelo en producción. Puede probar una variación del modelo dirigiendo una pequeña cantidad de tráfico, digamos un 5 %, al nuevo modelo.
  • Evalúe el rendimiento del modelo en producción sin interrumpir el tráfico al monitorear las métricas operativas para cada variante en CloudWatch.
  • Actualiza modelos en producción sin perder disponibilidad. Puede modificar un punto final sin dejar fuera de servicio los modelos que ya están implementados en producción. Por ejemplo, puede agregar nuevas variantes de modelos, actualizar las configuraciones de las instancias informáticas de ML de las variantes de modelos existentes o cambiar la distribución del tráfico entre las variantes de modelos. Para más información, ver Actualizar punto final y Actualizar pesos y capacidades de punto final.

Desafíos al usar puntos finales de múltiples variantes

Los MVE de SageMaker presentan los siguientes desafíos:

  • Esfuerzo de prueba de carga – Debe poner una buena cantidad de esfuerzo y recursos para las pruebas y las comparaciones de matrices de modelos para cada variante. Para que una prueba A/B se considere exitosa, debe realizar un análisis estadístico de las métricas recopiladas de la prueba para determinar si hay un resultado estadísticamente significativo. Podría convertirse en un desafío minimizar la exploración de variantes de bajo rendimiento. Potencialmente podrías usar el bandido de múltiples brazos técnica de optimización para evitar enviar tráfico a experimentos que no funcionan y optimizar el rendimiento a medida que realiza pruebas. Para las pruebas de carga, también puede explorar Recomendador de inferencia de Amazon SageMaker para realizar evaluaciones comparativas exhaustivas basadas en los requisitos de producción para latencia y rendimiento, patrones de tráfico personalizados e instancias (hasta 10) que seleccione.
  • Estrecho acoplamiento entre la variante del modelo y el punto final – Podría volverse complicado dependiendo de la frecuencia de implementación del modelo, porque el punto final puede terminar en updating el estado de cada variante de producción que se actualiza. SageMaker también admite barandillas de despliegue, que puede utilizar para cambiar fácilmente del modelo actual en producción a uno nuevo de forma controlada. Esta opción introduce canario y lineal Modos de cambio de tráfico para que pueda tener un control granular sobre el cambio de tráfico de su modelo actual al nuevo durante el curso de la actualización. Con medidas de seguridad integradas, como las reversiones automáticas, puede detectar problemas temprano y tomar medidas correctivas automáticamente antes de que causen un impacto significativo en la producción.

Prácticas recomendadas para puntos finales de varias variantes

Cuando aloje modelos que utilicen MVE de SageMaker, tenga en cuenta lo siguiente:

  • SageMaker es excelente para probar nuevos modelos porque puede implementarlos fácilmente en un entorno de prueba A/B y paga solo por lo que usa. Se le cobra por hora de instancia consumida por cada instancia mientras se ejecuta el punto final. Cuando haya terminado con sus pruebas y ya no use el punto final o las variantes, debe eliminarlo para ahorrar costos. Siempre puede volver a crearlo cuando lo necesite porque el modelo se almacena en Servicio de almacenamiento simple de Amazon (Amazon S3).
  • Debe usar el tipo y el tamaño de instancia más óptimos para implementar modelos. SageMaker ofrece actualmente Instancias de computación ML en varias familias de instancias. Una instancia de punto final se ejecuta todo el tiempo (mientras la instancia está en servicio). Por lo tanto, seleccionar el tipo correcto de instancia puede tener un impacto significativo en el costo total y el rendimiento de los modelos de ML. Prueba de carga es la mejor práctica para determinar el tipo de instancia y el tamaño de flota apropiados, con o sin escalado automático para su punto final en vivo para evitar el aprovisionamiento excesivo y el pago adicional por capacidad que no necesita.
  • Puede monitorear el rendimiento del modelo y la utilización de recursos en CloudWatch. Puede configurar un ProductionVariant que se utilizará Escalado automático de aplicaciones. Para especificar las métricas y los valores de destino para una política de escalado, configure una política de escalado de seguimiento de destino. Puede utilizar una métrica predefinida o una métrica personalizada. Para obtener más información sobre la sintaxis de configuración de políticas, consulte Configuración de política de escalado de seguimiento de destino. Para obtener información sobre cómo configurar el escalado automático, consulte Escale automáticamente modelos de Amazon SageMaker. Para definir rápidamente una política de escalado de seguimiento de objetivos para una variante, puede elegir una métrica de CloudWatch específica y establecer valores de umbral. Por ejemplo, utilice la métrica SageMakerVariantInvocationsPerInstance para monitorear la cantidad promedio de veces por minuto que se invoca cada instancia de una variante, o use métrica CPUUtilization para monitorear la suma de trabajo manejado por una CPU. El siguiente ejemplo utiliza el SageMakerVariantInvocationsPerInstance métrica predefinida para ajustar el número de instancias variantes para que cada instancia tenga una InvocationsPerInstance métrica de 70:
{
	"TargetValue": 70.0,
	"PredefinedMetricSpecification":
	{
		"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
	}
}

  • Cambiar o eliminar artefactos del modelo o cambiar el código de inferencia después de implementar un modelo produce resultados impredecibles. Antes de implementar modelos en producción, es una buena práctica verificar si el alojamiento del modelo en modo local es exitoso después de depurar suficientemente los fragmentos de código de inferencia (como model_fn, input_fn, predict_fny output_fn) en el entorno de desarrollo local, como una instancia de notebook de SageMaker o un servidor local. Si necesita cambiar o eliminar artefactos del modelo o cambiar el código de inferencia, modifique el punto final proporcionando una nueva configuración de punto final. Después de proporcionar la nueva configuración de punto final, puede cambiar o eliminar los artefactos del modelo correspondientes a la configuración anterior del punto final.
  • Puedes usar SageMaker transformación por lotes para probar variantes de producción. La transformación por lotes es ideal para obtener inferencias de grandes conjuntos de datos. Puede crear un trabajo de transformación independiente para cada nueva variante de modelo y usar un conjunto de datos de validación para probar. Para cada trabajo de transformación, especifique un nombre de modelo único y una ubicación en Amazon S3 para el archivo de salida. Para analizar los resultados, utilice registros y métricas de canalización de inferencia.

Conclusión

SageMaker le permite realizar fácilmente pruebas A/B de modelos de aprendizaje automático en producción mediante la ejecución de múltiples variantes de producción en un punto final. Puede usar las capacidades de SageMaker para probar modelos que se han entrenado con diferentes conjuntos de datos de entrenamiento, hiperparámetros, algoritmos o marcos de aprendizaje automático; cómo funcionan en diferentes tipos de instancias; o una combinación de todos los anteriores. Puede proporcionar la distribución del tráfico entre las variantes en un punto final y SageMaker divide el tráfico de inferencia en las variantes según la distribución especificada. Como alternativa, si desea probar modelos para segmentos de clientes específicos, puede especificar la variante que debe procesar una solicitud de inferencia al proporcionar el TargetVariant encabezado y SageMaker enrutará la solicitud a la variante que especificó. Para obtener más información sobre las pruebas A/B, consulte Actualice de forma segura los modelos en producción.

Referencias


Sobre los autores

Patrones de hospedaje de modelos en SageMaker: prácticas recomendadas para probar y actualizar modelos en SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Deepali Rajale es Gerente Técnico de Cuentas Especialista en IA/ML en Amazon Web Services. Trabaja con clientes empresariales brindando orientación técnica sobre la implementación de soluciones de aprendizaje automático con las mejores prácticas. En su tiempo libre, le gusta caminar, ir al cine y salir con familiares y amigos.

Patrones de hospedaje de modelos en SageMaker: prácticas recomendadas para probar y actualizar modelos en SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.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 NLP y Computer Vision. Ayuda a los clientes a lograr una inferencia de modelos de alto rendimiento en SageMaker.

Patrones de hospedaje de modelos en SageMaker: prácticas recomendadas para probar y actualizar modelos en SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai. Saurabh Trikande es gerente sénior de productos para Amazon SageMaker Inference. Le apasiona trabajar con clientes y está motivado por el objetivo de democratizar el aprendizaje automático. Se enfoca en los desafíos principales relacionados con la implementación de aplicaciones de ML complejas, modelos de ML de múltiples inquilinos, optimizaciones de costos y hacer que la implementación de modelos de aprendizaje profundo sea más accesible. En su tiempo libre, a Saurabh le gusta caminar, aprender sobre tecnologías innovadoras, seguir TechCrunch y pasar tiempo con su familia.

Sello de tiempo:

Mas de Aprendizaje automático de AWS