Aprendizaje automático con MATLAB y Amazon SageMaker

Automatización del aprendizaje con MATLAB y Amazon SageMaker

Esta publicación está escrita en colaboración con Brad Duncan, Rachel Johnson y Richard Alcock de MathWorks.

MATLAB es una herramienta de programación popular para una amplia gama de aplicaciones, como procesamiento de datos, computación paralela, automatización, simulación, aprendizaje automático e inteligencia artificial. Se utiliza ampliamente en muchas industrias como automotriz, aeroespacial, comunicación y manufactura. En los últimos años, MathWorks ha llevado muchas ofertas de productos a la nube, especialmente en Amazon Web Services (AWS). Para obtener más detalles sobre los productos en la nube de MathWorks, consulte MATLAB y Simulink en la nube o envíe un correo electrónico a MathWorks.

En esta publicación, llevamos las capacidades de aprendizaje automático de MATLAB a Amazon SageMaker, que tiene varios beneficios significativos:

  • Recursos informáticos: El uso del entorno de computación de alto rendimiento ofrecido por SageMaker puede acelerar el entrenamiento del aprendizaje automático.
  • Colaboración: MATLAB y SageMaker juntos proporcionan una plataforma sólida que los equipos pueden utilizar para colaborar eficazmente en la construcción, prueba e implementación de modelos de aprendizaje automático.
  • Implementación y accesibilidad: Los modelos se pueden implementar como puntos finales en tiempo real de SageMaker, lo que los hace fácilmente accesibles para otras aplicaciones que procesan datos de transmisión en vivo.

Le mostramos cómo entrenar un modelo de aprendizaje automático de MATLAB como un trabajo de entrenamiento de SageMaker y luego implementar el modelo como un punto final en tiempo real de SageMaker para que pueda procesar datos de transmisión en vivo.

Para hacer esto, utilizaremos un ejemplo de mantenimiento predictivo en el que se clasifican las fallas en una bomba operativa que transmite datos en tiempo real. Tenemos acceso a un gran repositorio de datos etiquetados generados a partir de una simulación de Simulink que tiene tres tipos de fallas posibles en varias combinaciones posibles (por ejemplo, un estado saludable y siete estados defectuosos). Debido a que tenemos un modelo del sistema y las fallas son raras en funcionamiento, podemos aprovechar los datos simulados para entrenar nuestro algoritmo. El modelo se puede ajustar para que coincida con los datos operativos de nuestra bomba real mediante técnicas de estimación de parámetros en MATLAB y Simulink.

Nuestro objetivo es demostrar el poder combinado de MATLAB y Amazon SageMaker usando este ejemplo de clasificación de fallas.

Comenzamos entrenando un modelo clasificador en nuestro escritorio con MATLAB. Primero, extraemos características de un subconjunto del conjunto de datos completo utilizando la aplicación Diagnostic Feature Designer, y luego ejecutamos el entrenamiento del modelo localmente con un modelo de árbol de decisiones de MATLAB. Una vez que estamos satisfechos con la configuración de los parámetros, podemos generar una función de MATLAB y enviar el trabajo junto con el conjunto de datos a SageMaker. Esto nos permite escalar el proceso de entrenamiento para acomodar conjuntos de datos mucho más grandes. Después de entrenar nuestro modelo, lo implementamos como un punto final en vivo que se puede integrar en una aplicación o panel posterior, como una aplicación web de MATLAB.

Este ejemplo resumirá cada paso, proporcionando una comprensión práctica de cómo aprovechar MATLAB y Amazon SageMaker para tareas de aprendizaje automático. El código completo y la descripción del ejemplo están disponibles en este repositorio.

Prerrequisitos

  1. Entorno de trabajo de MATLAB 2023a o posterior con MATLAB Compiler y Statistics and Machine Learning Toolbox en Linux. Aquí hay una guía rápida sobre cómo ejecutar MATLAB en AWS.

  2. Configuración de Docker en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) donde se ejecuta MATLAB. Ya sea Ubuntu o Linux.

  3. Instalación de interfaz de línea de comandos de AWS (AWS CLI), AWS Configure y Python3.

    1. AWS CLI, ya debería estar instalado si siguió la guía de instalación de paso 1.
    2. Configure AWS Configure para interactuar con los recursos de AWS.
    3. Verifique la instalación de Python3 ejecutando el comando python -V o python --version en su terminal. Instale Python si es necesario.
  4. Copie este repositorio en una carpeta de su máquina Linux ejecutando:

    git clone https://github.com/mathworks/Machine-Learning-with-MATLAB-and-Amazon-Sagemaker-Demo.git
  5. Verifique los permisos en la carpeta del repositorio. Si no tiene permiso de escritura, ejecute el siguiente comando en el terminal:

    sudo chmod -R 777
  6. Construya el contenedor de entrenamiento de MATLAB y cárguelo en el Amazon Elastic Container Registry (Amazon ECR).

    • Navegue hasta la carpeta docker

    • Cree un repositorio de Amazon ECR usando AWS CLI (sustituya REGION por su región de AWS preferida)

      aws ecr create-repository \ --repository-name sagemaker-matlab-training \ --image-scanning-configuration scanOnPush=true \ --region
    • Ejecute el siguiente comando de Docker:

      docker build -t sagemaker-matlab-training-r2023a .  docker tag sagemaker-matlab-training-r2023a ACCOUNT.dkr.ecr.REGION.amazonaws.com/sagemaker-matlab-training-r2023a:latest  aws ecr get-login-password --region REGION | docker login --username AWS --password-stdin ACCOUNT.dkr.ecr.REGION.amazonaws.com  docker push ACCOUNT.dkr.ecr. REGION.amazonaws.com/sagemaker-matlab-training-r2023a:latest 
  7. Abra MATLAB y abra el script en vivo llamado PumpFaultClassificationMATLABSageMaker.mlx en la carpeta examples/PumpFaultClassification. Haga de esta carpeta su carpeta de trabajo actual en MATLAB.

Parte 1: Preparación de datos y extracción de características

El primer paso en cualquier proyecto de aprendizaje automático es preparar tus datos. MATLAB proporciona una amplia gama de herramientas para importar, limpiar y extraer características de tus datos:

load SensorData.mat

El conjunto de datos SensorData.mat contiene 240 registros. Cada registro tiene dos series de tiempo: flow y pressure. La columna objetivo es faultcode, que es una representación binaria de tres posibles combinaciones de falla en la bomba. Para esas tablas de series de tiempo, cada tabla tiene 1,201 filas que imitan 1.2 segundos de medición de flujo y presión de la bomba con un incremento de 0.001 segundos.

A continuación, la aplicación Diagnostic Feature Designer te permite extraer, visualizar y clasificar una variedad de características de los datos. Aquí, utilizas Auto Features, que extrae rápidamente un conjunto amplio de características de dominio temporal y frecuencial del conjunto de datos y clasifica a los principales candidatos para el entrenamiento del modelo. Luego puedes exportar una función de MATLAB que recalculará las 15 mejores características clasificadas a partir de nuevos datos de entrada. Llamemos a esta función extractFeaturesTraining. Esta función se puede configurar para tomar datos en un solo lote o como datos de transmisión.

Esta función produce una tabla de características con los códigos de fallo asociados, como se muestra en la siguiente figura:

Parte 2: Organizar los datos para SageMaker

A continuación, necesitas organizar los datos de una manera que SageMaker pueda usar para el entrenamiento del aprendizaje automático. Por lo general, esto implica dividir los datos en conjuntos de entrenamiento y validación y separar los datos predictores de la respuesta objetivo.

En esta etapa, es posible que se requieran otras operaciones más complejas de limpieza y filtrado de datos. En este ejemplo, los datos ya están limpios. Potencialmente, si el procesamiento de datos es muy complejo y lleva mucho tiempo, se pueden usar trabajos de procesamiento de SageMaker para ejecutar estos trabajos aparte del entrenamiento de SageMaker para poder separarlos en dos pasos.

trainPredictors = trainingData(:,2:end);

trainResponse = trainingData(:,1);

Parte 3: Entrenar y probar un modelo de aprendizaje automático en MATLAB

Antes de pasar a SageMaker, es buena idea construir y probar el modelo de aprendizaje automático localmente en MATLAB. Esto te permite iterar rápidamente y depurar el modelo. Puedes configurar y entrenar un clasificador de árbol de decisión simple localmente.

classifierModel = fitctree(... trainPredictors,... trainResponse,... OptimizeHyperparameters='auto');

El trabajo de entrenamiento aquí debería tardar menos de un minuto en finalizar y genera algunos gráficos para indicar el progreso del entrenamiento. Después de que termine el entrenamiento, se produce un modelo de aprendizaje automático de MATLAB. La aplicación Classification Learner se puede utilizar para probar muchos tipos de modelos de clasificación y ajustarlos para obtener el mejor rendimiento, luego producir el código necesario para reemplazar el código de entrenamiento del modelo anterior.

Después de verificar las métricas de precisión para el modelo entrenado localmente, podemos pasar el entrenamiento a Amazon SageMaker.

Paso 4: Entrenar el modelo en Amazon SageMaker

Una vez que estés satisfecho con el modelo, puedes entrenarlo a gran escala utilizando SageMaker. Para comenzar a llamar a los SDK de SageMaker, debes iniciar una sesión de SageMaker.

session = sagemaker.Session();

Indica un rol de ejecución de SageMakerIAM que usarán los trabajos de entrenamiento y el hospedaje del endpoint.

role = "arn:aws:iam::CUENTA:role/service-role/AmazonSageMaker-ExecutionRole-XXXXXXXXXXXXXXX";

Desde MATLAB, guarda los datos de entrenamiento como un archivo .csv en un bucket de Amazon Simple Storage Service (Amazon S3).

writetable(trainingData,'pump_training_data.csv');

trainingDataLocation = "s3:// "+session.DefaultBucket+ +"/cooling_system/input/pump_training";

copyfile("pump_training_data.csv", trainingDataLocation);

Crea un estimador de SageMaker

A continuación, debes crear un estimador de SageMaker y pasar todos los parámetros necesarios, como una imagen de docker de entrenamiento, una función de entrenamiento, variables de entorno, tamaño de instancia de entrenamiento, etc. La URI de la imagen de entrenamiento debe ser la URI de Amazon ECR que creaste en el paso previo con el formato CUENTA.dkr.ecr.us-east-1.amazonaws.com/sagemaker-matlab-training-r2023a:latest. La función de entrenamiento debe proporcionarse en la parte inferior del script en vivo de MATLAB.

SageMaker Estimator Console

trainingImage = "CUENTA.dkr.ecr.us-east-1.amazonaws.com/sagemaker-matlab-training-r2023a:latest";  est = sagemaker.MATLABEstimator(...     role, ...     Image=trainingImage, ...     Session=session, ...     BaseJobName="PumpDecisionTreeMatlab", ...     Environment = loadenv(fullfile(rootFolder, "training.env")), ...     TrainingFunction = @trainingFunction, ...     HyperParameters = struct(), ... % named args to train_decision_tree     InstanceType="ml.m5.large", ...     MaxRunTime=minutes(10), ...         MaxWaitTime=minutes(20), ...     UseSpotInstances=true); 

Enviar un trabajo de entrenamiento de SageMaker

Llamar al método fit desde el estimador envía el trabajo de entrenamiento a SageMaker.

est.fit(training=struct(Location=trainingDataLocation, ContentType="text/csv"))

También puedes verificar el estado del trabajo de entrenamiento desde la consola de SageMaker:

SageMaker Training Job Console

Después de que los trabajos de entrenamiento finalicen, al seleccionar el enlace del trabajo te llevará a la página de descripción del trabajo donde podrás ver el modelo de MATLAB guardado en el bucket de S3 dedicado:

SageMaker Endpoint Output

Parte 5: Desplegar el modelo como un punto de enlace SageMaker en tiempo real

Después del entrenamiento, puedes desplegar el modelo como un punto de enlace SageMaker en tiempo real, el cual puedes utilizar para hacer predicciones en tiempo real. Para hacer esto, llama al método “deploy” desde el estimador. Aquí puedes configurar el tamaño de instancia deseado para el alojamiento dependiendo de la carga de trabajo.

predictor = est.deploy(role, "ClassificationTreeInferenceHandler", uint8(1), "ml.m5.large")

En segundo plano, este paso construye una imagen de Docker para inferencia y la empuja al repositorio de Amazon ECR, no se requiere ninguna acción del usuario para construir el contenedor de inferencia. La imagen contiene toda la información necesaria para servir la solicitud de inferencia, como la ubicación del modelo, información de autenticación de MATLAB y algoritmos. Después de eso, Amazon SageMaker crea una configuración de punto de enlace SageMaker y finalmente despliega el punto de enlace en tiempo real. El punto de enlace se puede monitorear en la consola de SageMaker y se puede terminar en cualquier momento si ya no se utiliza.

Consola de Monitoreo de Puntos de Enlace de SageMaker

Parte 6: Probar el punto de enlace

Ahora que el punto de enlace está activo y funcionando, puedes probarlo enviándole algunos registros para hacer predicciones. Utiliza el siguiente código para seleccionar 10 registros de los datos de entrenamiento y enviarlos al punto de enlace para hacer la predicción. El resultado de la predicción es enviado de vuelta desde el punto de enlace y se muestra en la siguiente imagen.

input = trainPredictors(10:19,:) prediction = predictor.predict(input)

Resultado de Predicción

Parte 7: Integración del tablero de control

El punto de enlace de SageMaker puede ser llamado por muchos servicios nativos de AWS. También se puede utilizar como una API REST estándar si se despliega junto con una función de Lambda de AWS y una puerta de enlace API, que se puede integrar con cualquier aplicación web. Para este caso de uso en particular, se puede utilizar la ingestión de flujo con Amazon SageMaker Feature Store y Amazon Managed Streaming for Apache Kafka, MSK, para tomar decisiones respaldadas por el aprendizaje automático en tiempo casi real. Otra posible integración es utilizar una combinación de Amazon Kinesis, SageMaker y Apache Flink para construir una aplicación gestionada, confiable, escalable y altamente disponible que sea capaz de hacer inferencias en tiempo real en un flujo de datos.

Después de que los algoritmos se despliegan en un punto de enlace de SageMaker, es posible que desees visualizarlos utilizando un tablero de control que muestre predicciones de flujo continuo en tiempo real. En la aplicación web personalizada de MATLAB que se muestra a continuación, se pueden ver datos de presión y flujo por bomba, así como predicciones en vivo de fallas del modelo desplegado.

Este tablero de control incluye un modelo de Vida Útil Restante (RUL) para predecir el tiempo hasta el fallo de cada bomba en cuestión. Para aprender cómo entrenar algoritmos RUL, consulta Predictive Maintenance Toolbox.

Tablero de Estado de Salud de la Bomba

Limpieza

Después de ejecutar esta solución, asegúrate de limpiar cualquier recurso de AWS no necesario para evitar costos inesperados. Puedes limpiar estos recursos utilizando el SDK de Python de SageMaker o la Consola de Administración de AWS para los servicios específicos utilizados aquí (SageMaker, Amazon ECR y Amazon S3). Al eliminar estos recursos, evitas cargos adicionales por recursos que ya no estás utilizando.

Conclusión

Hemos demostrado cómo puedes llevar MATLAB a SageMaker para un caso de uso de mantenimiento predictivo de bombas con todo el ciclo de vida del aprendizaje automático. SageMaker proporciona un entorno completamente gestionado para ejecutar cargas de trabajo de aprendizaje automático e implementar modelos con una gran selección de instancias de computación que satisfacen diversas necesidades.

Descargo de responsabilidad: El código utilizado en esta publicación es propiedad y está mantenido por MathWorks. Consulta los términos de licencia en el repositorio de GitHub. Si tienes algún problema con el código o solicitudes de funciones, abre un problema en GitHub en el repositorio correspondiente.

Referencias

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Las 5 Mejores Herramientas de IA para Maximizar la Productividad

VoAGI revisa un conjunto diverso de 5 herramientas de IA para ayudar a maximizar tu productividad. Echa un vistazo y ...

Inteligencia Artificial

Desvelando GPTBot La audaz movida de OpenAI para rastrear la web

En un torbellino de innovación digital, OpenAI ha dado un golpe sorprendente al lanzar GPTBot, un rastreador web dise...

Inteligencia Artificial

Samet honrado con el Premio ACM SIGSPATIAL al Impacto de por Vida

Hanan Samet fue honrado con el Premio Inaugural al Impacto de toda la Vida de ACM's Special Interest Group on Spatial...

Inteligencia Artificial

Presentamos OpenChat La plataforma gratuita y sencilla para construir chatbots personalizados en minutos.

Enseña a tus chatbots cualquier tema conectándolos a recursos como PDFs, sitios web, Notion, Confluence y Office 365.

Inteligencia Artificial

Los ajustes de privacidad de Zoom avivan el temor de que sus llamadas se utilicen para entrenar a la IA

Zoom también dijo que, no obstante los usos mencionados en sus reglas, no utilizará contenido del cliente de audio, v...

Inteligencia Artificial

Descifrando la regulación génica con Deep Learning Un nuevo enfoque de IA para entender el empalme alternativo

El empalme alternativo es un proceso fundamental en la regulación génica, que permite que un solo gen produzca múltip...