Cree una solución de mantenimiento predictivo con Amazon Kinesis, AWS Glue y Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Cree una solución de mantenimiento predictivo con Amazon Kinesis, AWS Glue y Amazon SageMaker

Las organizaciones crean y utilizan cada vez más soluciones basadas en aprendizaje automático (ML) para una variedad de casos de uso y problemas, incluido el mantenimiento predictivo de piezas de máquinas, recomendaciones de productos basadas en las preferencias de los clientes, perfiles de crédito, moderación de contenido, detección de fraude y más. En muchos de estos escenarios, la efectividad y los beneficios derivados de estas soluciones basadas en ML pueden mejorar aún más cuando pueden procesar y obtener información de eventos de datos casi en tiempo real.

Si bien el valor comercial y los beneficios de las soluciones impulsadas por ML casi en tiempo real están bien establecidos, la arquitectura requerida para implementar estas soluciones a escala con una confiabilidad y un rendimiento óptimos es complicada. Esta publicación describe cómo puede combinar Kinesis amazónica, Pegamento AWSy Amazon SageMaker para construir una solución de inferencia e ingeniería de características casi en tiempo real para el mantenimiento predictivo.

Resumen del caso de uso

Nos enfocamos en un caso de uso de mantenimiento predictivo donde los sensores implementados en el campo (como equipos industriales o dispositivos de red) deben reemplazarse o rectificarse antes de que se vuelvan defectuosos y provoquen tiempo de inactividad. El tiempo de inactividad puede ser costoso para las empresas y puede conducir a una mala experiencia del cliente. El mantenimiento predictivo impulsado por un modelo ML también puede ayudar a aumentar los ciclos regulares de mantenimiento basados ​​en programas al informar cuándo no se debe reemplazar una pieza de la máquina en buenas condiciones, evitando así costos innecesarios.

En esta publicación, nos enfocamos en aplicar el aprendizaje automático a un conjunto de datos sintéticos que contiene fallas de la máquina debido a características como la temperatura del aire, la temperatura del proceso, la velocidad de rotación, el torque y el desgaste de la herramienta. El conjunto de datos utilizado proviene de la Repositorio de datos de la UCI.

La falla de la máquina consta de cinco modos de falla independientes:

  • Fallo por desgaste de herramienta (TWF)
  • Falla de disipación de calor (HDF)
  • Falla de energía (PWF)
  • Falla por sobreesfuerzo (OSF)
  • Fallo aleatorio (RNF)

La etiqueta de falla de la máquina indica si la máquina ha fallado para un punto de datos en particular si cualquiera de los modos de falla anteriores es verdadero. Si al menos uno de los modos de falla es verdadero, el proceso falla y la etiqueta de falla de la máquina se establece en 1. El objetivo del modelo ML es identificar las fallas de la máquina correctamente, de modo que se pueda iniciar una acción de mantenimiento predictivo posterior.

Resumen de la solución

Para nuestro caso de uso de mantenimiento predictivo, asumimos que los sensores del dispositivo transmiten varias mediciones y lecturas sobre las piezas de la máquina. Luego, nuestra solución toma una porción de los datos de transmisión cada vez (microlote) y realiza el procesamiento y la ingeniería de funciones para crear funciones. Las características creadas luego se usan para generar inferencias a partir de un modelo de ML entrenado e implementado casi en tiempo real. Las inferencias generadas pueden ser procesadas y consumidas por las aplicaciones posteriores, para tomar las medidas adecuadas e iniciar la actividad de mantenimiento.

El siguiente diagrama muestra la arquitectura de nuestra solución general.

La solución consiste en términos generales en las siguientes secciones, que se explican en detalle más adelante en esta publicación:

  • Ingestión y origen de datos de streaming - Usamos Secuencias de datos de Amazon Kinesis para recopilar datos de transmisión de los sensores de campo a escala y ponerlos a disposición para su posterior procesamiento.
  • Ingeniería de características casi en tiempo real: Usamos trabajos de transmisión de AWS Glue para leer datos de un flujo de datos de Kinesis y realizar el procesamiento de datos y la ingeniería de características, antes de almacenar las características derivadas en Servicio de almacenamiento simple de Amazon (Amazon S3). Amazon S3 ofrece una opción confiable y rentable para almacenar grandes volúmenes de datos.
  • Capacitación e implementación de modelos: Usamos el conjunto de datos de mantenimiento predictivo AI4I del repositorio de datos de UCI para entrenar un modelo de ML basado en el algoritmo XGBoost usando SageMaker. Luego, implementamos el modelo entrenado en un punto final de inferencia asincrónica de SageMaker.
  • Inferencia de ML casi en tiempo real – Una vez que las funciones estén disponibles en Amazon S3, debemos generar inferencias a partir del modelo implementado casi en tiempo real. Los terminales de inferencia asíncrona de SageMaker son adecuados para este requisito porque admiten tamaños de carga útiles más grandes (hasta 1 GB) y pueden generar inferencias en cuestión de minutos (hasta un máximo de 15 minutos). Usamos las notificaciones de eventos de S3 para ejecutar un AWS Lambda función para invocar un punto final de inferencia asincrónica de SageMaker. Los puntos finales de inferencia asíncrona de SageMaker aceptan ubicaciones de S3 como entrada, generan inferencias a partir del modelo implementado y escriben estas inferencias en Amazon S3 casi en tiempo real.

El código fuente de esta solución se encuentra en GitHub. La solución ha sido probada y debe ejecutarse en us-east-1.

Usamos un Formación en la nube de AWS plantilla, implementada usando Modelo de aplicación sin servidor de AWS (AWS SAM) y portátiles SageMaker para implementar la solución.

Requisitos previos

Para comenzar, como requisito previo, debe tener la CLI de SAM, 3 Pythony PIP instalado. También debe tener la Interfaz de línea de comandos de AWS (AWS CLI) configurado correctamente.

Implementar la solución

Puedes usar AWS CloudShell para ejecutar estos pasos. CloudShell es un shell basado en navegador que se autentica previamente con las credenciales de su consola e incluye herramientas de desarrollo y operaciones comunes preinstaladas (como AWS SAM, AWS CLI y Python). Por lo tanto, no se requiere instalación ni configuración local.

  • Comenzamos creando un depósito S3 donde almacenamos el script para nuestro trabajo de transmisión de AWS Glue. Ejecute el siguiente comando en su terminal para crear un nuevo depósito:
aws s3api create-bucket --bucket sample-script-bucket-$RANDOM --region us-east-1

  • Anote el nombre del depósito creado.

Arco de solución ML-9132

  • Luego, clonamos el repositorio de código localmente, que contiene la plantilla de CloudFormation para implementar la pila. Ejecute el siguiente comando en su terminal:
git clone https://github.com/aws-samples/amazon-sagemaker-predictive-maintenance

  • Navegue hasta el directorio sam-template:
cd amazon-sagemaker-predictive-maintenance/sam-template

repositorio de clones git ML-9132

  • Ejecute el siguiente comando para copiar el script de trabajo de AWS Glue (de glue_streaming/app.py) al depósito de S3 que creó:
aws s3 cp glue_streaming/app.py s3://sample-script-bucket-30232/glue_streaming/app.py

ML-9132 copiar secuencia de comandos de pegamento

  • Ahora puede continuar con la compilación y la implementación de la solución a través de la plantilla de CloudFormation a través de AWS SAM. Ejecute el siguiente comando:

ML-9132 Construir SAM

sam deploy --guided

  • Proporcione argumentos para la implementación, como el nombre de la pila, la región de AWS preferida (us-east-1), o GlueScriptsBucket.

Asegúrese de proporcionar el mismo depósito de S3 que creó anteriormente para el depósito de S3 del script de AWS Glue (parámetro GlueScriptsBucket en la siguiente captura de pantalla).

ML-9132 SAM Parámetro de implementación

Después de proporcionar los argumentos necesarios, AWS SAM inicia la implementación de la pila. La siguiente captura de pantalla muestra los recursos creados.

ML-9132 SAM implementado

Después de que la pila se implemente correctamente, debería ver el siguiente mensaje.

ML-9132 SAM CF desplegado

  • En la consola de AWS CloudFormation, abra la pila (para esta publicación, nrt-streaming-inference) que se proporcionó al implementar la plantilla de CloudFormation.
  • En Recursos ficha, anote el ID de la instancia del bloc de notas de SageMaker.
  1. Notebook ML-9132 SM creado
  • En la consola de SageMaker, abra esta instancia.

ML-9132 imagen018

La instancia de la libreta de SageMaker ya tiene las libretas requeridas precargadas.

Navegue a la carpeta de cuadernos y abra y siga las instrucciones dentro de los cuadernos (Data_Pre-Processing.ipynb y ModelTraining-Evaluation-and-Deployment.ipynb) para explorar el conjunto de datos, realizar el preprocesamiento y la ingeniería de funciones, y entrenar e implementar el modelo en un punto final de inferencia asincrónica de SageMaker.

ML-9132 Cuadernos abiertos SM

Ingestión y origen de datos de streaming

Kinesis Data Streams es un servicio de transmisión de datos en tiempo real duradero, escalable y sin servidor que puede usar para recopilar y procesar grandes flujos de registros de datos en tiempo real. Kinesis Data Streams permite capturar, procesar y almacenar flujos de datos de una variedad de fuentes, como datos de registro de infraestructura de TI, registros de aplicaciones, redes sociales, fuentes de datos de mercado, datos de flujo de clics web, dispositivos y sensores de IoT, y más. Puede aprovisionar un flujo de datos de Kinesis en modo a pedido o en modo aprovisionado según los requisitos de rendimiento y escalado. Para más información, ver Elección del modo de capacidad del flujo de datos.

Para nuestro caso de uso, asumimos que varios sensores envían mediciones como la temperatura, la velocidad de rotación, el par y el desgaste de la herramienta a un flujo de datos. Kinesis Data Streams actúa como un embudo para recopilar e ingerir flujos de datos.

Usamos la Generador de datos de Amazon Kinesis (KDG) más adelante en esta publicación para generar y enviar datos a un flujo de datos de Kinesis, simulando los datos que generan los sensores. Los datos del flujo de datos sensor-data-stream se recopilan y procesan mediante un trabajo de transmisión de AWS Glue, que analizamos a continuación.

Ingeniería de características casi en tiempo real

Trabajos de transmisión de AWS Glue Proporciona una forma conveniente de procesar datos de transmisión a escala, sin necesidad de administrar el entorno informático. AWS Glue le permite realizar operaciones de extracción, transformación y carga (ETL) en datos de transmisión mediante trabajos en ejecución continua. El ETL de streaming de AWS Glue se basa en el motor de streaming estructurado de Apache Spark y puede ingerir flujos de Kinesis, Apache Kafka y Streaming administrado por Amazon para Apache Kafka (Amazon MSK).

El trabajo de ETL de transmisión puede usar transformaciones integradas de AWS Glue y transformaciones nativas de transmisión estructurada de Apache Spark. También puede usar Spark ML y MLLib bibliotecas en trabajos de AWS Glue para facilitar el procesamiento de funciones mediante bibliotecas auxiliares fácilmente disponibles.

Si el esquema de la fuente de datos de transmisión está predeterminado, puede especificarlo en una tabla de AWS Data Catalog. Si la definición del esquema no se puede determinar de antemano, puede habilitar la detección del esquema en el trabajo ETL de transmisión. A continuación, el trabajo determina automáticamente el esquema a partir de los datos entrantes. Además, puede utilizar el Registro de esquemas de AWS Glue para permitir el descubrimiento central, el control y la evolución de los esquemas de flujo de datos. Puede integrar aún más el Registro de esquemas con el Catálogo de datos para utilizar opcionalmente esquemas almacenados en el Registro de esquemas al crear o actualizar tablas o particiones de AWS Glue en el Catálogo de datos.

Para esta publicación, creamos una tabla de AWS Glue Data Catalog (sensor-stream) con nuestro flujo de datos de Kinesis como fuente y defina el esquema para los datos de nuestro sensor.

Creamos un marco de datos dinámico de AWS Glue a partir de la tabla de catálogo de datos para leer los datos de transmisión de Kinesis. También especificamos las siguientes opciones:

  • Un tamaño de ventana de 60 segundos, de modo que el trabajo de AWS Glue lea y procese datos en ventanas de 60 segundos
  • La posición inicial TRIM_HORIZON, para permitir la lectura de los registros más antiguos en el flujo de datos de Kinesis

También usamos Spark MLlib Indizador de cadenas transformador de características para codificar el tipo de columna de cadena en índices de etiquetas. Esta transformación se implementa mediante Spark ML Pipelines. Canalizaciones de Spark ML proporcionar un conjunto uniforme de API de alto nivel para algoritmos de ML a fin de facilitar la combinación de varios algoritmos en una sola canalización o flujo de trabajo.

Usamos la API foreachBatch para invocar una función llamada processBatch, que a su vez procesa los datos a los que hace referencia este marco de datos. Ver el siguiente código:

# Read from Kinesis Data Stream
sourceStreamData = glueContext.create_data_frame.from_catalog(database = "sensordb", table_name = "sensor-stream", transformation_ctx = "sourceStreamData", additional_options = {"startingPosition": "TRIM_HORIZON"})
type_indexer = StringIndexer(inputCol="type", outputCol="type_enc", stringOrderType="alphabetAsc")
pipeline = Pipeline(stages=[type_indexer])
glueContext.forEachBatch(frame = sourceStreamData, batch_function = processBatch, options = {"windowSize": "60 seconds", "checkpointLocation": checkpoint_location})

La función processBatch realiza las transformaciones especificadas y divide los datos en Amazon S3 según el año, mes, día e ID de lote.

También volvemos a particionar las particiones de AWS Glue en una única partición, para evitar tener demasiados archivos pequeños en Amazon S3. Tener varios archivos pequeños puede dificultar el rendimiento de lectura, porque amplifica la sobrecarga relacionada con la búsqueda, apertura y lectura de cada archivo. Finalmente, escribimos las características para generar inferencias en un prefijo (características) dentro del depósito S3. Ver el siguiente código:

# Function that gets called to perform processing, feature engineering and writes to S3 for every micro batch of streaming data from Kinesis.
def processBatch(data_frame, batchId):
transformer = pipeline.fit(data_frame)
now = datetime.datetime.now()
year = now.year
month = now.month
day = now.day
hour = now.hour
minute = now.minute
if (data_frame.count() > 0):
data_frame = transformer.transform(data_frame)
data_frame = data_frame.drop("type")
data_frame = DynamicFrame.fromDF(data_frame, glueContext, "from_data_frame")
data_frame.printSchema()
# Write output features to S3
s3prefix = "features" + "/year=" + "{:0>4}".format(str(year)) + "/month=" + "{:0>2}".format(str(month)) + "/day=" + "{:0>2}".format(str(day)) + "/hour=" + "{:0>2}".format(str(hour)) + "/min=" + "{:0>2}".format(str(minute)) + "/batchid=" + str(batchId)
s3path = "s3://" + out_bucket_name + "/" + s3prefix + "/"
print("-------write start time------------")
print(str(datetime.datetime.now()))
data_frame = data_frame.toDF().repartition(1)
data_frame.write.mode("overwrite").option("header",False).csv(s3path)
print("-------write end time------------")
print(str(datetime.datetime.now()))

Entrenamiento e implementación de modelos

SageMaker es un servicio de aprendizaje automático totalmente gestionado e integrado que permite a los científicos de datos y a los ingenieros de aprendizaje automático crear, entrenar e implementar modelos de aprendizaje automático de forma rápida y sencilla.

Dentro del cuaderno Data_Pre-Processing.ipynb, primero importamos el conjunto de datos de mantenimiento predictivo AI4I del repositorio de datos de UCI y realizamos un análisis de datos exploratorios (EDA). También realizamos ingeniería de funciones para que nuestras funciones sean más útiles para entrenar el modelo.

Por ejemplo, dentro del conjunto de datos, tenemos una función denominada tipo, que representa el tipo de calidad del producto como L (baja), M (media) o H (alta). Debido a que esta es una característica categórica, debemos codificarla antes de entrenar nuestro modelo. Usamos LabelEncoder de Scikit-Learn para lograr esto:

from sklearn.preprocessing import LabelEncoder
type_encoder = LabelEncoder()
type_encoder.fit(origdf['type'])
type_values = type_encoder.transform(origdf['type'])

Una vez que se procesan las características y se generan los conjuntos de datos de prueba y entrenamiento seleccionados, estamos listos para entrenar un modelo ML para predecir si la máquina falló o no en función de las lecturas del sistema. Entrenamos un modelo XGBoost, utilizando el algoritmo integrado de SageMaker. XGBoost puede proporcionar buenos resultados para múltiples tipos de problemas de ML, incluida la clasificación, incluso cuando las muestras de capacitación son limitadas.

Trabajos de capacitación de SageMaker proporcionan una manera poderosa y flexible de entrenar modelos ML en SageMaker. SageMaker administra la infraestructura informática subyacente y proporciona múltiples opciones para elegir, para diversos requisitos de entrenamiento de modelos, según el caso de uso.

xgb = sagemaker.estimator.Estimator(container,
role,
instance_count=1,
instance_type='ml.c4.4xlarge',
output_path=xgb_upload_location,
sagemaker_session=sagemaker_session)
xgb.set_hyperparameters(max_depth=5,
eta=0.2,
gamma=4,
min_child_weight=6,
subsample=0.8,
silent=0,
objective='binary:hinge',
num_round=100)

xgb.fit({'train': s3_train_channel, 'validation': s3_valid_channel})

Cuando se completa la capacitación del modelo y la evaluación del modelo es satisfactoria en función de los requisitos comerciales, podemos comenzar la implementación del modelo. Primero creamos una configuración de punto final con la opción de objeto AsyncInferenceConfig y usamos el modelo entrenado anteriormente:

endpoint_config_name = resource_name.format("EndpointConfig")
create_endpoint_config_response = sm_client.create_endpoint_config(
EndpointConfigName=endpoint_config_name,
ProductionVariants=[
{
"VariantName": "variant1",
"ModelName": model_name,
"InstanceType": "ml.m5.xlarge",
"InitialInstanceCount": 1,
}
],
AsyncInferenceConfig={
"OutputConfig": {
"S3OutputPath": f"s3://{bucket}/{prefix}/output",
#Specify Amazon SNS topics
"NotificationConfig": {
"SuccessTopic": "arn:aws:sns:<region>:<account-id>:<success-sns-topic>",
"ErrorTopic": "arn:aws:sns:<region>:<account-id>:<error-sns-topic>",
}},
"ClientConfig": {"MaxConcurrentInvocationsPerInstance": 4},
},)

Luego creamos un punto final de inferencia asincrónica de SageMaker, usando la configuración de punto final que creamos. Una vez aprovisionado, podemos comenzar a invocar el punto final para generar inferencias de forma asíncrona.

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

Inferencia casi en tiempo real

SageMaker inferencia asíncrona Los puntos finales brindan la capacidad de poner en cola las solicitudes de inferencia entrantes y procesarlas de forma asincrónica casi en tiempo real. Esto es ideal para aplicaciones que tienen solicitudes de inferencia con tamaños de carga útil más grandes (hasta 1 GB), pueden requerir tiempos de procesamiento más prolongados (hasta 15 minutos) y tienen requisitos de latencia casi en tiempo real. La inferencia asincrónica también le permite ahorrar costos al escalar automáticamente el recuento de instancias a cero cuando no hay solicitudes para procesar, por lo que solo paga cuando su punto final procesa solicitudes.

Puede crear un punto final de inferencia asincrónica de SageMaker similar a cómo crea un punto final de inferencia en tiempo real y, además, especificar el AsyncInferenceConfig objeto, mientras crea su configuración de punto final con el campo EndpointConfig en la API CreateEndpointConfig. El siguiente diagrama muestra el flujo de trabajo de inferencia y cómo un extremo de inferencia asincrónica genera una inferencia.

ML-9132 Arco SageMaker Asych

Para invocar el punto de enlace de inferencia asincrónica, la carga útil de la solicitud se debe almacenar en Amazon S3 y se debe proporcionar una referencia a esta carga útil como parte de la solicitud InvokeEndpointAsync. Tras la invocación, SageMaker pone en cola la solicitud para su procesamiento y devuelve un identificador y una ubicación de salida como respuesta. Tras el procesamiento, SageMaker coloca el resultado en la ubicación de Amazon S3. Opcionalmente, puede optar por recibir notificaciones de éxito o error con Servicio de notificación simple de Amazon (red social de Amazon).

Probar la solución de extremo a extremo

Para probar la solución, complete los siguientes pasos:

  • En la consola de AWS CloudFormation, abra la pila que creó anteriormente (nrt-streaming-inference).
  • En Salidas pestaña, copie el nombre del depósito S3 (EventsBucket).

Este es el depósito de S3 en el que nuestro trabajo de streaming de AWS Glue escribe funciones después de leer y procesar desde el flujo de datos de Kinesis.

Cubo de eventos ML-9132 S3

A continuación, configuramos notificaciones de eventos para este depósito S3.

  • En la consola de Amazon S3, vaya al depósito EventsBucket.
  • En Propiedades pestaña, en el Notificaciones de eventos sección, elija Crear notificación de evento.

Propiedades del depósito de eventos ML-9132 S3

Notificación de depósito de eventos ML-9132 S3

  • Nombre del evento, introduzca invoke-endpoint-lambda.
  • Prefijo, introduzca features/.
  • Sufijo, introduzca .csv.
  • Tipos de eventos, seleccione Todos los objetos crean eventos.

ML-9132 Configuración de notificación de depósito de eventos S3
ML-9132 Configuración de notificación de depósito de eventos S3

  • Destino, seleccione función lambda.
  • función lambday elige la función invoke-endpoint-asynch.
  • Elige Guardar los cambios.

ML-9132 S3 eventos cubo notificación configuración lambda

  • En la consola de AWS Glue, abra el trabajo GlueStreaming-Kinesis-S3.
  • Elige Ejecutar trabajo.

ML-9132 Ejecutar trabajo de pegamento

A continuación, usamos Kinesis Data Generator (KDG) para simular sensores que envían datos a nuestro flujo de datos de Kinesis. Si es la primera vez que usa el KDG, consulte General para la configuración inicial. El KDG proporciona una plantilla de CloudFormation para crear el usuario y asignar los permisos necesarios para usar el KDG para enviar eventos a Kinesis. ejecutar el Plantilla de CloudFormation dentro de la cuenta de AWS que está utilizando para crear la solución en esta publicación. Después de configurar el KDG, inicie sesión y acceda al KDG para enviar eventos de prueba a nuestro flujo de datos de Kinesis.

  • Utilice la región en la que creó el flujo de datos de Kinesis (us-east-1).
  • En el menú desplegable, elija el flujo de datos sensor-data-stream.
  • En Registros por segundo sección, seleccionar Constante e ingrese 100.
  • Deseleccionar Comprimir registros.
  • Plantilla de registro, use la siguiente plantilla:
{
"air_temperature": {{random.number({"min":295,"max":305, "precision":0.01})}},
"process_temperature": {{random.number({"min":305,"max":315, "precision":0.01})}},
"rotational_speed": {{random.number({"min":1150,"max":2900})}},
"torque": {{random.number({"min":3,"max":80, "precision":0.01})}},
"tool_wear": {{random.number({"min":0,"max":250})}},
"type": "{{random.arrayElement(["L","M","H"])}}"
}

  • Haga Clic en Enviar datos para comenzar a enviar datos al flujo de datos de Kinesis.

Generación de datos Kineses ML-9132

El trabajo de transmisión de AWS Glue lee y extrae un microlote de datos (que representa las lecturas del sensor) del flujo de datos de Kinesis en función del tamaño de la ventana proporcionado. Luego, el trabajo de transmisión procesa y realiza la ingeniería de funciones en este microlote antes de particionarlo y escribirlo en las funciones de prefijo dentro del depósito S3.

A medida que las nuevas funciones creadas por el trabajo de transmisión de AWS Glue se escriben en el depósito S3, una función de Lambda (invoke-endpoint-asynch), que invoca un extremo de inferencia asincrónica de SageMaker mediante el envío de una solicitud de invocación para obtener inferencias de nuestro modelo de ML implementado. El extremo de inferencia asíncrona pone en cola la solicitud de invocación asíncrona. Cuando se completa el procesamiento, SageMaker almacena los resultados de la inferencia en la ubicación de Amazon S3 (S3OutputPath) que se especificó durante la configuración del punto final de inferencia asincrónica.

Para nuestro caso de uso, los resultados de la inferencia indican si es probable que una pieza de la máquina falle o no, según las lecturas del sensor.

Inferencias del modelo ML-9132

SageMaker también envía una notificación de éxito o error con Amazon SNS. Por ejemplo, si configura un Suscripción de e-mail para los temas de SNS de éxito y error (especificados dentro de la configuración de punto final de inferencia asincrónica de SageMaker), se puede enviar un correo electrónico cada vez que se procesa una solicitud de inferencia. La siguiente captura de pantalla muestra un correo electrónico de muestra del tema de éxito de SNS.

Suscripción de correo electrónico SNS ML-9132

Para aplicaciones del mundo real, puede integrar notificaciones SNS con otros servicios como Servicio de cola simple de Amazon (Amazon SQS) y Lambda para el posprocesamiento adicional de las inferencias generadas o la integración con otras aplicaciones posteriores, según sus requisitos. Por ejemplo, para nuestro caso de uso de mantenimiento predictivo, puede invocar una función Lambda basada en una notificación SNS para leer la inferencia generada desde Amazon S3, procesarla más (como agregación o filtrado) e iniciar flujos de trabajo como enviar órdenes de trabajo para reparacion de equipos a tecnicos.

Limpiar

Cuando haya terminado de probar la pila, elimine los recursos (especialmente el flujo de datos de Kinesis, el trabajo de transmisión de Glue y los temas de SNS) para evitar cargos inesperados.

Ejecute el siguiente código para eliminar su pila:

sam delete nrt-streaming-inference

También elimine los recursos, como los puntos finales de SageMaker, siguiendo la sección de limpieza en el cuaderno ModelTraining-E Evaluation-and-Deployment.

Conclusión

En esta publicación, usamos un caso de uso de mantenimiento predictivo para demostrar cómo usar varios servicios como Kinesis, AWS Glue y SageMaker para construir una canalización de inferencia casi en tiempo real. Le animamos a que pruebe esta solución y nos haga saber lo que piensa.

Si tienes alguna pregunta, compártela en los comentarios.


Sobre los autores

Cree una solución de mantenimiento predictivo con Amazon Kinesis, AWS Glue y Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai. Rahul Sharma es arquitecto de soluciones en AWS Data Lab y ayuda a los clientes de AWS a diseñar y crear soluciones de inteligencia artificial y aprendizaje automático. Antes de unirse a AWS, Rahul pasó varios años en el sector de finanzas y seguros, ayudando a los clientes a crear plataformas analíticas y de datos.

Cree una solución de mantenimiento predictivo con Amazon Kinesis, AWS Glue y Amazon SageMaker PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Pat Reilly es arquitecto en el laboratorio de datos de AWS, donde ayuda a los clientes a diseñar y crear cargas de trabajo de datos para respaldar su negocio. Antes de AWS, Pat consultó a un socio de AWS, creando cargas de trabajo de datos de AWS en una variedad de industrias.

Sello de tiempo:

Mas de Aprendizaje automático de AWS