Compartir a través de


Tutorial: Una solución de un extremo a otro mediante Azure Machine Learning e IoT Edge

Se aplica a:yes icon IoT Edge 1.1

Importante

IoT Edge 1.1 fecha de finalización del soporte técnico fue el 13 de diciembre de 2022. Consulte la página del ciclo de vida de productos de Microsoft para obtener información sobre cómo se admite este producto, servicio, tecnología o API. Para obtener más información sobre cómo actualizar a la versión más reciente de IoT Edge, consulte Update IoT Edge.

Con frecuencia, las aplicaciones de IoT quieren aprovechar las ventajas de la nube inteligente y el perímetro inteligente. En este tutorial, le guiaremos a través del entrenamiento de un modelo de aprendizaje automático con datos recopilados de dispositivos IoT en la nube, la implementación de ese modelo en IoT Edge y el mantenimiento y refinamiento del modelo periódicamente.

Nota:

Los conceptos de este conjunto de tutoriales se aplican a todas las versiones de IoT Edge, pero el dispositivo de ejemplo que cree para probar el escenario ejecuta la versión 1.1 de IoT Edge.

El objetivo principal de este tutorial es introducir el procesamiento de datos de IoT con aprendizaje automático, específicamente en el perímetro. Aunque tocamos muchos aspectos de un flujo de trabajo de aprendizaje automático general, este tutorial no está pensado como una introducción detallada al aprendizaje automático. Como caso dado, no intentamos crear un modelo altamente optimizado para el caso de uso: solo hacemos lo suficiente para ilustrar el proceso de creación y uso de un modelo viable para el procesamiento de datos de IoT.

En esta sección del tutorial se describe lo siguiente:

  • Requisitos previos para completar las partes posteriores del tutorial.
  • Audiencia de destino del tutorial.
  • El caso de uso que simula el tutorial.
  • El proceso general que sigue el tutorial para cumplir el caso de uso.

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Prerrequisitos

Para completar el tutorial, necesita acceso a una suscripción de Azure en la que tiene derechos para crear recursos. Varios de los servicios usados en este tutorial incurrirán en cargos de Azure. Si aún no tiene una suscripción de Azure, puede empezar a trabajar con una cuenta gratuita de Azure.

También necesita una máquina con PowerShell instalada, donde puede ejecutar scripts para configurar una máquina virtual de Azure como máquina de desarrollo.

En este documento, usamos el siguiente conjunto de herramientas:

  • Una instancia de Azure IoT Hub para la captura de datos

  • Azure Notebooks como front-end principal para la preparación de datos y la experimentación con el aprendizaje automático. La ejecución de código de Python en un cuaderno en un subconjunto de los datos de ejemplo es una excelente manera de obtener una solución rápida iterativa e interactiva durante la preparación de datos. Los cuadernos de Jupyter Notebook también se pueden usar para preparar scripts para ejecutarse a escala en un back-end de proceso.

  • Azure Machine Learning como back-end para el aprendizaje automático a escala y para la generación de imágenes de aprendizaje automático. Impulsamos el back-end de Azure Machine Learning mediante scripts preparados y probados en cuadernos de Jupyter Notebook.

  • Azure IoT Edge para una aplicación fuera de la nube de una imagen de aprendizaje automático

Obviamente, hay otras opciones disponibles. En determinados escenarios, por ejemplo, IoT Central se puede usar como alternativa sin código para capturar datos de entrenamiento iniciales de dispositivos IoT.

Público objetivo y roles previstos

Este conjunto de artículos está diseñado para desarrolladores sin experiencia previa en el desarrollo de IoT o el aprendizaje automático. La implementación del aprendizaje automático en el perímetro requiere conocimientos sobre cómo conectar una amplia gama de tecnologías. Por lo tanto, en este tutorial se describe un escenario completo de un extremo a otro para demostrar una forma de unir estas tecnologías para una solución de IoT. En un entorno real, estas tareas pueden distribuirse entre varias personas con diferentes especializaciones. Por ejemplo, los desarrolladores se centrarían en el código de dispositivo o en la nube, mientras que los científicos de datos diseñaron los modelos de análisis. Para permitir que un desarrollador individual complete correctamente este tutorial, hemos proporcionado instrucciones complementarias con información y vínculos a más información que esperamos es suficiente para comprender lo que se está haciendo, así como por qué.

Como alternativa, puede asociarse con compañeros de trabajo de diferentes roles para seguir el tutorial juntos, reunir su experiencia completa y aprender como un equipo cómo encajan las cosas.

En cualquier caso, para ayudar a orientar los lectores, cada artículo de este tutorial indica el rol del usuario. Estos roles incluyen:

  • Desarrollo en la nube (incluido un desarrollador en la nube que trabaja en una capacidad de DevOps)
  • Análisis de datos

Caso de uso: mantenimiento predictivo

Este escenario se basa en un caso de uso presentado en la Conferencia sobre Diagnóstico y Administración de La Salud (PHM08) en 2008. El objetivo es predecir la vida útil restante (RUL) de un conjunto de motores de avión turbofan. Estos datos se generaron mediante C-MAPSS, la versión comercial del software MAPSS (Modular Aero-Propulsion System Simulation). Este software proporciona un entorno flexible de simulación de motor turbofan para simular convenientemente los parámetros de mantenimiento, control y motor.

Los datos usados en este tutorial se toman del conjunto de datos de simulación de degradación del motor Turbofan.

En el archivo Léame:

Escenario experimental

Los conjuntos de datos constan de varias series temporales multivariante. Cada conjunto de datos se divide aún más en subconjuntos de entrenamiento y prueba. Cada serie temporal procede de un motor diferente, es decir, los datos se pueden considerar procedentes de una flota de motores del mismo tipo. Cada motor comienza con diferentes grados de desgaste inicial y variación de fabricación que es desconocido para el usuario. Este desgaste y variación se considera normal, es decir, no se considera una condición de error. Hay tres configuraciones operativas que tienen un efecto sustancial en el rendimiento del motor. Esta configuración también se incluye en los datos. Los datos están contaminados con ruido del sensor.

El motor funciona normalmente al principio de cada serie temporal y desarrolla un error en algún momento durante la serie. En el conjunto de entrenamiento, el error crece en magnitud hasta que se produce un error del sistema. En el conjunto de pruebas, la serie temporal finaliza algún tiempo antes de un error del sistema. El objetivo de la competencia es predecir el número de ciclos operativos restantes antes de que se produzca un error en el conjunto de pruebas, es decir, el número de ciclos operativos después del último ciclo que seguirá funcionando el motor. También se proporcionó un vector de valores verdaderos de vida útil restante (RUL) para los datos de prueba.

Dado que los datos se publicaron para una competencia, varios enfoques para derivar modelos de aprendizaje automático se han publicado de forma independiente. Hemos detectado que el estudio de ejemplos es útil para comprender el proceso y el razonamiento implicados en la creación de un modelo de aprendizaje automático específico. Vea por ejemplo:

Modelo de predicción de errores del motor de avión por parte del usuario de GitHub jancervenka.

Degradación del motor Turbofan por parte del usuario de GitHub hankroark.

Proceso

En la imagen siguiente se muestran los pasos aproximados que se siguen en este tutorial:

Diagrama de arquitectura para los pasos del proceso

  1. Recopilar datos de entrenamiento: el proceso comienza recopilando datos de entrenamiento. En algunos casos, los datos ya se han recopilado y están disponibles en una base de datos o en forma de archivos de datos. En otros casos, especialmente para escenarios de IoT, los datos deben recopilarse de dispositivos y sensores de IoT y almacenarse en la nube.

    Se supone que no tiene una colección de motores turbofan, por lo que los archivos del proyecto incluyen un simulador de dispositivos simple que envía los datos del dispositivo de la NASA a la nube.

  2. Preparar los datos. En la mayoría de los casos, los datos sin procesar recopilados de dispositivos y sensores requerirán preparación para el aprendizaje automático. Este paso puede implicar la limpieza de datos, el reformateo de datos o el preprocesamiento para insertar información adicional que el aprendizaje automático puede desactivar.

    Para nuestros datos de la máquina del motor de avión, la preparación de datos implica calcular tiempos de falla explícitos para cada punto de datos en la muestra, basándose en las observaciones reales de los datos. Esta información permite al algoritmo de aprendizaje automático buscar correlaciones entre patrones de datos de sensor reales y el tiempo de vida restante esperado del motor. Este paso es muy específico del dominio.

  3. Cree un modelo de Machine Learning. En función de los datos preparados, ahora podemos experimentar con diferentes algoritmos de aprendizaje automático y parametrizaciones para entrenar modelos y comparar los resultados entre sí.

    En este caso, para las pruebas comparamos el resultado previsto calculado por el modelo con el resultado real observado en un conjunto de motores. En Azure Machine Learning, podemos administrar las diferentes iteraciones de los modelos que creamos en un registro de modelos.

  4. Implemente el modelo. Una vez que tengamos un modelo que cumpla nuestros criterios de éxito, podemos pasar a la implementación. Esto implica encapsular el modelo en una aplicación de servicio web que se puede alimentar con datos mediante llamadas REST y devolver resultados de análisis. Después, la aplicación de servicio web se empaqueta en un contenedor de Docker, que a su vez se puede implementar en la nube o como módulo de IoT Edge. En este ejemplo, nos centramos en la implementación en IoT Edge.

  5. Mantener y refinar el modelo. Nuestro trabajo no se realiza una vez implementado el modelo. En muchos casos, queremos seguir recopilando datos y cargarlos periódicamente en la nube. Después, podemos usar estos datos para volver a entrenar y refinar nuestro modelo, que después podemos volver a implementar en IoT Edge.

Limpieza de recursos

Este tutorial forma parte de un conjunto en el que cada artículo se basa en el trabajo realizado en los anteriores. Espere para limpiar cualquier recurso hasta completar el tutorial final.

Pasos siguientes

Este tutorial se divide en las secciones siguientes:

  1. Configure la máquina de desarrollo y los servicios de Azure.
  2. Genere los datos de entrenamiento para el módulo de aprendizaje automático.
  3. Entrenamiento e implementación del módulo de aprendizaje automático.
  4. Configure un dispositivo IoT Edge para que actúe como puerta de enlace transparente.
  5. Cree e implemente módulos de IoT Edge.
  6. Envíe datos al dispositivo IoT Edge.

Continúe con el siguiente artículo para configurar una máquina de desarrollo y aprovisionar recursos de Azure.