Cómo realizar la inferencia de machine learning - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cómo realizar la inferencia de machine learning

Esta característica está disponible para AWS IoT Greengrass Core versión 1.6 o posterior.

AWS IoT Greengrass le permite realizar la inferencia de machine learning (ML) en la periferia con datos generados localmente utilizando modelos entrenados en la nube. Benefíciese de la baja latencia y el ahorro de costos que supone la ejecución de inferencias locales, aprovechando al mismo tiempo la potencia de cómputo de la nube para el entrenamiento de modelos y el procesamiento complejo.

Para comenzar a realizar la inferencia local, consulte Cómo configurar la inferencia de machine learning mediante AWS Management Console.

Funcionamiento de la inferencia de machine learning de AWS IoT Greengrass

Puede entrenar sus modelos de inferencia en cualquier lugar, desplegarlos localmente como recursos de machine learning en un grupo de Greengrass y luego acceder a ellos desde las funciones de Lambda de Greengrass. Por ejemplo, puede crear y entrenar modelos de aprendizaje profundo en SageMaker e implementarlos en el núcleo de Greengrass. A continuación, las funciones de Lambda pueden utilizar los modelos locales para realizar inferencias con los dispositivos cliente y enviar datos de entrenamiento nuevos de vuelta a la nube.

En el siguiente diagrama se muestra el flujo de trabajo de la inferencia de machine learning de AWS IoT Greengrass.

Componentes del flujo de trabajo de machine learning y el flujo de información entre el dispositivo del núcleo, el servicio de AWS IoT Greengrass y los modelos entrenados en la nube.

La inferencia de machine learning de AWS IoT Greengrass simplifica todos los pasos del flujo de trabajo de machine learning, incluidos:

  • La creación e implementación de prototipos de marco de trabajo de machine learning.

  • El acceso a modelos entrenados en la nube y su implementación en dispositivos del núcleo de Greengrass.

  • La creación de aplicaciones de inferencia que pueden obtener acceso a aceleradores de hardware (como GPU y FPGA) como recursos locales.

Recursos de machine learning

Los recursos de machine learning representan modelos de inferencia entrenados en la nube que se implementan en un AWS IoT Greengrass. Para implementar recursos de machine learning, primero debe añadirlos a un grupo de Greengrass y, a continuación, definir cómo podrán obtener acceso a ellos las funciones de Lambda de dicho grupo. Durante la implementación del grupo, AWS IoT Greengrass recupera los paquetes de modelos de origen de la nube y los extrae en directorios dentro del espacio de nombres del tiempo de ejecución de Lambda. A continuación, las funciones de Lambda de Greengrass utilizan los modelos implementados localmente para llevar a cabo la inferencia.

Para actualizar un modelo implementado localmente, primero debe actualizar el modelo de origen (en la nube) correspondiente al recurso de machine learning y, a continuación, implementar el grupo. Durante la implementación, AWS IoT Greengrass comprueba si existen cambios en el origen. Si se detectan cambios, AWS IoT Greengrass actualiza el modelo local.

Orígenes de modelos admitidos

AWS IoT Greengrass admite orígenes de modelos de SageMaker y Amazon S3 para los recursos de machine learning.

Los siguientes requisitos se aplican a los orígenes de modelos:

  • Los buckets de S3 que almacenan los orígenes de modelos de SageMaker y Amazon S3 no deben estar cifrados mediante SSE-C. En los buckets que utilizan cifrado del lado del servidor, la inferencia de machine learning de AWS IoT Greengrass solo admite actualmente opciones de cifrado SSE-S3 o SSE-KMS. Para obtener más información sobre las opciones de cifrado del lado del servidor, consulte Protección de datos con el cifrado del lado del servidor en la Guía del usuario de Amazon Simple Storage Service.

  • Los nombres de los buckets de S3 que almacenan los orígenes de modelos de SageMaker y Amazon S3 no deben incluir puntos (.). Para obtener más información, consulte la regla sobre el uso de buckets de estilo alojado virtuales con SSL en Reglas para la nomenclatura de buckets en la Guía del usuario de Amazon Simple Storage Service.

  • El soporte de Región de AWS de nivel de servicio debe estar disponible para AWS IoT Greengrass y SageMaker. Actualmente, AWS IoT Greengrass admite modelos de SageMaker en las siguientes regiones:

    • Este de EE. UU. (Ohio)

    • Este de EE. UU. (Norte de Virginia)

    • Oeste de EE. UU. (Oregón)

    • Asia Pacific (Mumbai)

    • Asia Pacific (Seoul)

    • Asia Pacífico (Singapur)

    • Asia Pacífico (Sídney)

    • Asia-Pacífico (Tokio)

    • Europa (Fráncfort)

    • Europa (Irlanda)

    • Europa (Londres)

  • AWS IoT Greengrass debe tener permisos read en el origen de modelos, como se describe en las secciones siguientes.

SageMaker

AWS IoT Greengrass es compatible con los modelos que se guardan como trabajos de entrenamiento de SageMaker. SageMaker es un servicio de machine learning totalmente administrado que puede usar para crear y entrenar modelos mediante algoritmos integrados o personalizados. Para obtener más información, consulte ¿Qué es SageMaker? en la Guía para desarrolladores de SageMaker.

Si ha configurado el entorno de SageMaker creando un bucket cuyo nombre contiene sagemaker, entonces AWS IoT Greengrass tiene permisos suficientes para obtener acceso a los trabajos de entrenamiento de SageMaker. La política administrada de AWSGreengrassResourceAccessRolePolicy permite el acceso a los buckets cuyo nombre contiene la cadena sagemaker. Esta política está asociada al rol de servicio de Greengrass.

En caso contrario, debe conceder a AWS IoT Greengrass permisos read en el bucket en el que se almacena el trabajo de entrenamiento. Para ello, integre la siguiente política insertada en el rol de servicio. Puede incluir varios ARN de bucket.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }
Amazon S3

AWS IoT Greengrass es compatible con modelos que se almacenan en Amazon S3 como archivos tar.gz o .zip.

Si desea que AWS IoT Greengrass pueda obtener acceso a los modelos que se almacenan en buckets de Amazon S3, debe conceder a AWS IoT Greengrass read permisos; para ello, realice una de las acciones siguientes:

  • Almacene el modelo en un bucket cuyo nombre contenga greengrass.

    La política administrada de AWSGreengrassResourceAccessRolePolicy permite el acceso a los buckets cuyo nombre contiene la cadena greengrass. Esta política está asociada al rol de servicio de Greengrass.

     

  • Incruste una política insertada en el rol de servicio de Greengrass.

    Si el nombre del bucket no contiene greengrass, añada la siguiente política insertada al rol de servicio. Puede incluir varios ARN de bucket.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket-name" ] } ] }

    Para obtener más información, consulte Integración de políticas insertadas en la Guía de usuario de IAM.

Requisitos

Los siguientes requisitos se aplican para crear y utilizar recursos de machine learning:

  • Debe utilizar Núcleo de AWS IoT Greengrass versión 1.6. o posterior.

  • Las funciones de Lambda definidas por el usuario pueden realizar operaciones read o read and write en el recurso. Los permisos para otras operaciones no están disponibles. El modo de creación de contenedores de las funciones de Lambda afiliadas determina cómo configura los permisos de acceso. Para obtener más información, consulte Acceso a recursos de machine learning desde funciones .

  • Debe proporcionar la ruta completa del recurso en el sistema operativo del dispositivo del núcleo.

  • Un nombre o ID de recursos debe tener un máximo de 128 caracteres y utilizar el patrón [a-zA-Z0-9:_-]+.

Entornos de ejecución y bibliotecas para la inferencia de machine learning

Puede utilizar los siguientes entornos de tiempos de ejecución y bibliotecas de machine learning con AWS IoT Greengrass.

Estas bibliotecas y entornos de ejecución precompilados se pueden instalar en plataformas NVIDIA Jetson TX2, Intel Atom y Raspberry Pi. Para obtener información sobre la descarga, consulte Bibliotecas y entornos de ejecución de aprendizaje automático compatibles. Puede instalarlos directamente en el dispositivo central.

Asegúrese de leer la siguiente información sobre la compatibilidad y las limitaciones.

Tiempo de ejecución del aprendizaje profundo de SageMaker Neo

Puede utilizar el tiempo de ejecución del aprendizaje profundo de SageMaker Neo para realizar la inferencia con modelos de machine learning optimizados en sus dispositivos de AWS IoT Greengrass. Estos modelos están optimizados con el compilador de aprendizaje profundo de SageMaker Neo para mejorar las velocidades de predicción de la inferencia del machine learning. Para obtener más información acerca de la optimización de modelos en SageMaker, consulte la documentación de SageMaker Neo.

nota

Actualmente, puede optimizar los modelos de machine learning utilizando el compilador de aprendizaje profundo Neo únicamente en regiones específicas de Amazon Web Services. Sin embargo, puede utilizar el tiempo de ejecución del aprendizaje profundo Neo con modelos optimizados en cada una de las Región de AWS donde se admite el núcleo AWS IoT Greengrass. Para obtener más información, consulte cómo configurar la inferencia de machine learning optimizado.

Control de versiones de MXNet

Apache MXNet no garantiza actualmente la compatibilidad con versiones posteriores, por lo que es posible que los modelos que entrene utilizando versiones posteriores del marco de trabajo no funcionen correctamente en versiones anteriores de dicho marco de trabajo. Para evitar conflictos entre el entrenamiento de modelos y las etapas de distribución de modelos, así como para proporcionar una experiencia integral uniforme, utilice la misma versión del marco de trabajo MXNet en ambas etapas.

MXNet en Raspberry Pi

Las funciones de Lambda de Greengrass que obtienen acceso a los modelos de MXNet locales deben definir la siguiente variable de entorno:

MXNET_ENGINE_TYPE=NativeEngine

Puede definir la variable de entorno en el código de la característica o agregarla a la configuración específica del grupo de la característica. Para ver un ejemplo acerca de cómo agregarla como una opción de configuración, consulte este paso.

nota

Para hacer un uso general del marco MXNet (por ejemplo, ejecutar un ejemplo de código de terceros), la variable de entorno debe estar configurada en Raspberry Pi.

Limitaciones de la distribución de modelos de TensorFlow en Raspberry Pi

Las siguientes recomendaciones para mejorar los resultados de la inferencia se basan en las pruebas que hemos realizado con las bibliotecas precompiladas de ARM de 32 bits en la plataforma Raspberry Pi. Estas recomendaciones van dirigidas a usuarios avanzados únicamente a modo de referencia, sin garantías de ningún tipo.

  • Los modelos que se entrenan con el formato de punto de comprobación deberían "congelarse" en el formato del búfer del protocolo antes de su distribución. Para ver un ejemplo, consulte la biblioteca de modelos de clasificación de imágenes de TensorFlow-Slim.

  • No utilice las bibliotecas TF-Estimator y TF-Slim en el código de inferencia o de entrenamiento. En su lugar, utilice el patrón de archivo de carga de modelos .pb que se muestra en el ejemplo siguiente.

    graph = tf.Graph() graph_def = tf.GraphDef() graph_def.ParseFromString(pb_file.read()) with graph.as_default(): tf.import_graph_def(graph_def)
nota

Para obtener más información sobre las plataformas compatibles con TensorFlow, consulte Installing TensorFlow en la documentación de TensorFlow.