Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Minimice el impacto en la producción de las actualizaciones del modelo de ML con las pruebas paralelas de Amazon SageMaker

Amazon SageMaker ahora le permite comparar el rendimiento de una nueva versión de una pila de servicio modelo con la versión implementada actualmente antes de una implementación de producción completa mediante una práctica de seguridad de implementación conocida como pruebas de sombra. Las pruebas de sombra pueden ayudarlo a identificar posibles errores de configuración y problemas de rendimiento antes de que afecten a los usuarios finales. Con SageMaker, no necesita invertir en la creación de su infraestructura de pruebas paralelas, lo que le permite concentrarse en el desarrollo de modelos. SageMaker se encarga de implementar la nueva versión junto con la versión actual que atiende las solicitudes de producción, enrutando una parte de las solicitudes a la versión oculta. A continuación, puede comparar el rendimiento de las dos versiones utilizando métricas como la latencia y la tasa de errores. Esto le brinda una mayor confianza de que las implementaciones de producción en los puntos finales de inferencia de SageMaker no causarán regresiones en el rendimiento y lo ayuda a evitar interrupciones debido a errores de configuración accidentales.

En esta publicación, demostramos esta nueva capacidad de SageMaker. El cuaderno de muestra correspondiente está disponible en este GitHub repositorio.

Resumen de la solución

La infraestructura de servicio de su modelo consiste en el modelo de aprendizaje automático (ML), el contenedor de servicio o la instancia informática. Consideremos los siguientes escenarios:

  • Está considerando promocionar un nuevo modelo que se ha validado fuera de línea para la producción, pero desea evaluar las métricas de rendimiento operativo, como la latencia, la tasa de error, etc., antes de tomar esta decisión.
  • Está considerando cambios en su contenedor de infraestructura de servicio, como parchear vulnerabilidades o actualizar a versiones más nuevas, y desea evaluar el impacto de estos cambios antes de la promoción a producción.
  • Está considerando cambiar su instancia de ML y desea evaluar cómo funcionaría la nueva instancia con las solicitudes de inferencia en vivo.

El siguiente diagrama ilustra la arquitectura de nuestra solución.

Para cada uno de estos escenarios, seleccione una variante de producción con la que desee probar y SageMaker implementa automáticamente la nueva variante en modo oculto y enruta una copia de las solicitudes de inferencia en tiempo real dentro del mismo punto final. Solo las respuestas de la variante de producción se devuelven a la aplicación que llama. Puede optar por descartar o registrar las respuestas de la variante oculta para compararlas sin conexión. Opcionalmente, puede monitorear las variantes a través de un panel integrado con una comparación en paralelo de las métricas de rendimiento. Puede usar esta capacidad a través de las API de punto final de actualización de inferencia de SageMaker o a través de la consola de SageMaker.

Las variantes ocultas se basan en la capacidad de la variante de producción en los puntos finales de inferencia de SageMaker. Para reiterar, un variante de producción consta del modelo ML, el contenedor de servicio y la instancia ML. Debido a que cada variante es independiente de las demás, puede tener diferentes modelos, contenedores o tipos de instancias en las variantes. SageMaker le permite especificar políticas de escalado automático por variante para que puedan escalar de forma independiente en función de la carga entrante. SageMaker admite hasta 10 variantes de producción por terminal. Puede configurar una variante para recibir una parte del tráfico entrante estableciendo pesos de variante o especificar la variante de destino en la solicitud entrante. La respuesta de la variante de producción se reenvía al invocador.

A variante de sombra (nueva) tiene los mismos componentes que una variante de producción. Una parte de las solicitudes especificada por el usuario, conocida como porcentaje de muestreo de tráfico, se reenvía a la variante oculta. Puede optar por registrar la respuesta de la variante oculta en Servicio de almacenamiento simple de Amazon (Amazon S3) o deséchelo.

Tenga en cuenta que SageMaker admite un máximo de una variante de sombra por punto final. Para un punto final con una variante oculta, puede haber un máximo de una variante de producción.

Después de configurar las variantes de producción y sombra, puede monitorear el métricas de invocación para las variantes de producción y sombra en Reloj en la nube de Amazon bajo el AWS/SageMaker espacio de nombres Todas las actualizaciones del punto final de SageMaker se organizan mediante despliegues azul/verde y ocurrir sin ninguna pérdida en la disponibilidad. Sus terminales seguirán respondiendo a las solicitudes de producción a medida que agregue, modifique o elimine variantes ocultas.

Puede usar esta capacidad de una de dos maneras:

  • Pruebas de sombra administradas usando SageMaker Console – Puede aprovechar la consola para una experiencia guiada para administrar el viaje de extremo a extremo de las pruebas paralelas. Esto le permite configurar pruebas paralelas para una duración de tiempo predefinida, monitorear el progreso a través de un tablero en vivo, limpiar al finalizar y actuar sobre los resultados.
  • Pruebas paralelas de autoservicio con las API de inferencia de SageMaker: Si su flujo de trabajo de implementación ya usa las API de creación/actualización/eliminación de puntos finales, puede continuar usándolas para administrar Shadow Variants.

En las siguientes secciones, analizamos cada uno de estos escenarios.

Escenario 1: prueba de sombra administrada con SageMaker Console

Si desea elegir SageMaker para administrar el flujo de trabajo de principio a fin de crear, administrar y actuar sobre los resultados de las pruebas de sombra, considere usar la capacidad de las pruebas de sombra en la sección Inferencia de SageMaker Console. Como se indicó anteriormente, esto le permite configurar pruebas de sombra para una duración de tiempo predefinida, monitorear el progreso a través de un tablero en vivo, presenta opciones de limpieza al finalizar y actuar sobre los resultados. Para obtener más información, visite las pruebas de sombra . de nuestra documentación para un tutorial paso a paso de esta capacidad.

Pre-requisitos

Los modelos para la producción y la sombra deben crearse en SageMaker. por favor refiérase a CreateModel API esta página.

Paso 1: crea una prueba de sombra

Navegue hasta la Inferencia del panel de navegación izquierdo de la consola de SageMaker y luego elija Pruebas de sombra. Esto lo llevará a un tablero con todas las pruebas de sombra programadas, en ejecución y completadas. Haga clic en 'crear una prueba de sombra'. Ingrese un nombre para la prueba y elija siguiente.

Esto lo llevará a la página de configuración de prueba de sombra. Puede elegir un rol de IAM existente o crear uno que tenga la AmazonSageMakerFullAccess Política de IAM adjunta. A continuación, elija 'Crear un nuevo punto final' e ingrese un nombre (xgb-prod-shadow-1). Puede agregar una variante de producción y una sombra asociada con este punto final haciendo clic en 'Agregar' en la sección Variantes. Puede seleccionar los modelos que ha creado en el 'Añadir modelo' caja de diálogo. Esto crea una producción o variante. Opcionalmente, puede cambiar el tipo de instancia y el recuento asociado con cada variante.

Todo el tráfico va a la variante de producción y responde a las solicitudes de invocación. Puede controlar una parte de las solicitudes que se enrutan a la variante oculta cambiando el Traffic Sampling Percentage.

Puedes controlar la duración de la prueba desde una hora hasta 30 días. Si no se especifica, el valor predeterminado es de 7 días. Después de este período, la prueba se marca como completa. Si está ejecutando una prueba en un punto final existente, se revertirá al estado anterior al inicio de la prueba una vez finalizada.

Opcionalmente, puede capturar las solicitudes y respuestas de la variante Shadow usando el Captura de Datos opciones Si no se especifica, las respuestas de la variante de sombra se descartan.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Paso 2: Supervise una prueba de sombra

Puede ver la lista de pruebas de sombra navegando a la Shadow Tests sección bajo Inferencia. Haga clic en la prueba de sombra creada en el paso anterior para ver los detalles de una prueba de sombra y monitorearla mientras está en progreso o después de que se haya completado.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

La sección Métricas proporciona una comparación de las métricas clave y proporciona gráficos superpuestos entre las variantes de producción y sombra, junto con estadísticas descriptivas. Puede comparar métricas de invocación como ModelLatency y Invocation4xxErrors así como métricas de instancia como CPUUtilization y DiskUtilization.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Paso 3: promocionar la variante Shadow a la nueva variante de producción

Al comparar, puede elegir promocionar la variante oculta para que sea la nueva variante de producción o eliminar la variante oculta. Para ambas opciones, seleccione 'Marcar Completado' en la parte superior de la página. Esto le presenta una opción para promocionar o eliminar la variante oculta.

Si elige promocionar, se le llevará a una página de implementación, donde puede confirmar la configuración de la variante antes de la implementación. Antes de la implementación, recomendamos dimensionar sus variantes de sombra para poder manejar el 100 % del tráfico de invocación. Si no está utilizando la prueba de sombra para evaluar tipos o tamaños de instancia alternativos, puede usar la opción 'conservar la configuración de la variante de producción. De lo contrario, puede elegir 'conservar la configuración de variante de sombra. Si elige esta opción, asegúrese de que su muestreo de tráfico esté configurado al 100%. Alternativamente, puede especificar el tipo de instancia y el recuento si desea anular esta configuración.

Una vez que confirme la implementación, SageMaker iniciará una actualización en su terminal para promocionar la variante oculta a la nueva variante de producción. Al igual que con todas las actualizaciones de SageMaker, su terminal seguirá estando operativo durante la actualización.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Escenario 2: Shadow testing usando las API de inferencia de SageMaker

Esta sección cubre cómo usar las API existentes de creación/actualización/eliminación de puntos de conexión de SageMaker para implementar variantes ocultas.

Para este ejemplo, tenemos dos modelos XGBoost que representan dos versiones diferentes de los modelos que se han entrenado previamente. model.tar.gz es el modelo actualmente desplegado en producción. model2 es el modelo más nuevo y queremos probar su rendimiento en términos de métricas operativas, como la latencia, antes de decidir usarlo en producción. desplegamos model2 como una variante de sombra de model.tar.gz. Ambos modelos preentrenados se almacenan en el depósito público de S3 s3://sagemaker-sample-files. Primero descargamos la instancia informática local de modelour y luego la subimos a S3.

Los modelos de este ejemplo se utilizan para predecir la probabilidad de que un cliente móvil abandone su operador móvil actual. El conjunto de datos que utilizamos está disponible públicamente y se mencionó en el libro. Descubriendo el conocimiento en datos por Daniel T. Larose. Estos modelos fueron entrenados usando el Cuaderno de predicción de abandono de XGB en SageMaker. También puede usar sus propios modelos previamente entrenados, en cuyo caso puede omitir la descarga desde s3://sagemaker-sample-files y copie sus propios modelos directamente al modelo/carpeta.

!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model.tar.gz model/
!aws s3 cp s3://sagemaker-sample-files/models/xgb-churn/xgb-churn-prediction-model2.tar.gz model/

Paso 1: crea modelos

Subimos los archivos del modelo a nuestro propio depósito S3 y creamos dos modelos de SageMaker. Ver el siguiente código:

model_url = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
)
model_url2 = S3Uploader.upload(
    local_path="model/xgb-churn-prediction-model2.tar.gz",
    desired_s3_uri=f"s3://{bucket}/{prefix}",
from sagemaker import image_uris
image_uri = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-1")
image_uri2 = image_uris.retrieve("xgboost", boto3.Session().region_name, "0.90-2")

model_name = f"DEMO-xgb-churn-pred-{datetime.now():%Y-%m-%d-%H-%M-%S}"
model_name2 = f"DEMO-xgb-churn-pred2-{datetime.now():%Y-%m-%d-%H-%M-%S}"

resp = sm.create_model(
    ModelName=model_name,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri, "ModelDataUrl": model_url}],
)

resp = sm.create_model(
    ModelName=model_name2,
    ExecutionRoleArn=role,
    Containers=[{"Image": image_uri2, "ModelDataUrl": model_url2}],
)

Paso 2: implemente los dos modelos como variantes de producción y sombra en un punto final de inferencia en tiempo real

Creamos una configuración de punto final con las variantes de producción y sombra. los ProductionVariants y ShadowProductionVariants son de especial interés. Ambas variantes tienen instancias ml.m5.xlarge con 4 vCPU y 16 GiB de memoria, y el recuento de instancias inicial se establece en 1. Consulte el siguiente código:

ep_config_name = f"Shadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"
production_variant_name = "production"
shadow_variant_name = "shadow"
create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=ep_config_name,
    ProductionVariants=[
    # Type: Array of ProductionVariant (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html) objects
      { 
         "VariantName": shadow_variant_name,
        {
            "VariantName": production_variant_name,
            "ModelName": model_name,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1,
        }
    ],
     # Type: Array of ShadowProductionVariants 
    ShadowProductionVariants = [
         "ModelName": model_name2,
         "InitialInstanceCount": 1,
         "InitialVariantWeight": 0.5,
         "InstanceType": "ml.m5.xlarge" 
      }
   ]
)

Por último, creamos la variante de producción y sombra:

endpoint_name = f"xgb-prod-shadow-{datetime.now():%Y-%m-%d-%H-%M-%S}"
create_endpoint_api_response = sm.create_endpoint(
                                    EndpointName=endpoint_name,
                                    EndpointConfigName=ep_config_name,
                                )

Paso 3: invoque el punto final para la prueba

Una vez que el punto final se haya creado correctamente, puede comenzar a invocarlo. Enviamos unas 3,000 solicitudes de forma secuencial:

def invoke_endpoint(endpoint_name, wait_interval_sec=0.01, should_raise_exp=False):
    with open("test_data/test-dataset-input-cols.csv", "r") as f:
        for row in f:
            payload = row.rstrip("n")
            try:
                for i in range(10): #send the same payload 10 times for testing purpose
                    response = sm_runtime.invoke_endpoint(
                        EndpointName=endpoint_name, ContentType="text/csv", Body=payload
                    )
            except Exception as e:
                print("E", end="", flush=True)
                if should_raise_exp:
                    raise e

invoke_endpoint(endpoint_name)

Paso 4: comparar métricas

Ahora que hemos implementado los modelos de producción y sombra, comparemos las métricas de invocación. Para obtener una lista de métricas de invocación disponibles para comparar, consulte Monitoree Amazon SageMaker con Amazon CloudWatch. Empecemos por comparar las invocaciones entre las variantes de producción y sombra.

La InvocationsPerInstance La métrica hace referencia al número de invocaciones enviadas a la variante de producción. Una fracción de estas invocaciones, especificadas en el peso de la variante, se envían a la variante oculta. La invocación por instancia se calcula dividiendo el número total de invocaciones por el número de instancias en una variante. Como se muestra en los siguientes gráficos, podemos confirmar que tanto la variante de producción como la sombra están recibiendo solicitudes de invocación de acuerdo con los pesos especificados en la configuración del punto final.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

A continuación, comparemos la latencia del modelo (ModelLatency métrico) entre las variantes de producción y sombra. La latencia del modelo es el tiempo que tarda un modelo en responder tal como se ve desde SageMaker. Podemos observar cómo la latencia del modelo de la variante oculta se compara con la variante de producción sin exponer a los usuarios finales a la variante oculta.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Esperamos que la latencia de sobrecarga (OverheadLatency métrico) para que sea comparable entre las variantes de producción y sombra. La latencia de sobrecarga es el intervalo medido desde el momento en que SageMaker recibe la solicitud hasta que devuelve una respuesta al cliente, menos la latencia del modelo.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Paso 5- Promociona tu variante de sombra

Para promover el modelo de sombra a producción, cree una nueva configuración de punto final con actual ShadowProductionVariant como el nuevo ProductionVariant y quitar el ShadowProductionVariant. Esto eliminará la actual ProductionVariant y promocionar la variante sombra para que se convierta en la nueva variante de producción. Como siempre, todas las actualizaciones de SageMaker se orquestan como implementaciones azul/verde bajo el capó y no hay pérdida de disponibilidad mientras se realiza la actualización.

Opcionalmente, puede aprovechar Barandillas de despliegue si desea utilizar el cambio de tráfico todo a la vez y las reversiones automáticas durante su actualización.

promote_ep_config_name = f"PromoteShadow-EpConfig-{datetime.now():%Y-%m-%d-%H-%M-%S}"

create_endpoint_config_response = sm.create_endpoint_config(
    EndpointConfigName=promote_ep_config_name,
    ProductionVariants=[
        {
            "VariantName": shadow_variant_name,
            "ModelName": model_name2,
            "InstanceType": "ml.m5.xlarge",
            "InitialInstanceCount": 2,
            "InitialVariantWeight": 1.0,
        }
    ],
)
print(f"Created EndpointConfig: {create_endpoint_config_response['EndpointConfigArn']}")

update_endpoint_api_response = sm.update_endpoint(
    EndpointName=endpoint_name,
    EndpointConfigName=promote_ep_config_name,
)

wait_for_endpoint_in_service(endpoint_name)

sm.describe_endpoint(EndpointName=endpoint_name)

Paso 6 – Limpiar

Si no planea usar más este punto final, debe eliminarlo para evitar incurrir en cargos adicionales y limpiar otros recursos creados en este blog.

dsm.delete_endpoint(EndpointName=endpoint_name)
sm.delete_endpoint_config(EndpointConfigName=ep_config_name)
sm.delete_endpoint_config(EndpointConfigName=promote_ep_config_name)
sm.delete_model(ModelName=model_name)
sm.delete_model(ModelName=model_name2)

Conclusión

En esta publicación, presentamos una nueva capacidad de inferencia de SageMaker para comparar el rendimiento de la nueva versión de una pila de servicio de modelos con la versión implementada actualmente antes de una implementación de producción completa mediante una práctica de seguridad de implementación conocida como prueba de sombra. Lo guiamos a través de las ventajas de usar variantes ocultas y métodos para configurar las variantes con un ejemplo de extremo a extremo. Para obtener más información sobre las variantes de sombra, consulte las pruebas de sombra documentación.


Acerca de los autores

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Raghu Ramesha es arquitecto de soluciones de aprendizaje automático en el equipo de servicio de Amazon SageMaker. Se enfoca en ayudar a los clientes a crear, implementar y migrar cargas de trabajo de producción de ML a SageMaker a escala. Se especializa en dominios de aprendizaje automático, IA y visión por computadora, y tiene una maestría en Ciencias de la Computación de UT Dallas. En su tiempo libre le gusta viajar y la fotografía.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.qingweili es un especialista en aprendizaje automático en Amazon Web Services. Recibió su Ph.D. en Investigación de Operaciones después de que rompió la cuenta de subvenciones de investigación de su asesor y no pudo entregar el Premio Nobel que prometió. Actualmente, ayuda a los clientes de la industria de seguros y servicios financieros a crear soluciones de aprendizaje automático en AWS. En su tiempo libre le gusta leer y enseñar.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.qiyun zhao es ingeniero sénior de desarrollo de software en el equipo de la plataforma de inferencia de Amazon SageMaker. Es el desarrollador líder de Deployment Guardrails y Shadow Deployments, y se enfoca en ayudar a los clientes a administrar cargas de trabajo e implementaciones de ML a escala con alta disponibilidad. También trabaja en la evolución de la arquitectura de la plataforma para la implementación rápida y segura de trabajos de ML y la ejecución de experimentos en línea de ML con facilidad. En su tiempo libre, le gusta leer, jugar y viajar.

Minimice el impacto en la producción de las actualizaciones del modelo de aprendizaje automático con las pruebas paralelas de Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Tarun Sairam es gerente sénior de productos para Amazon SageMaker Inference. Está interesado en conocer las últimas tendencias en aprendizaje automático y ayudar a los clientes a aprovecharlas. En su tiempo libre, disfruta andar en bicicleta, esquiar y jugar al tenis.

Sello de tiempo:

Mas de Aprendizaje automático de AWS