AWS IoT Greengrass
Guía del desarrollador

Cómo configurar la inferencia de aprendizaje automático mediante la Consola de administración de AWS

Para seguir los pasos de este tutorial, debe utilizar AWS IoT Greengrass Core v1.6 or later.

Puede realizar la inferencia de aprendizaje automático (ML) localmente en un dispositivo del núcleo de Greengrass utilizando los datos de los dispositivos conectados. Para obtener información, incluidos los requisitos y las restricciones, consulte Cómo realizar la inferencia de aprendizaje automático.

En este tutorial se describe cómo utilizar la Consola de administración de AWS para configurar un grupo de Greengrass para ejecutar una aplicación de inferencias de Lambda que reconoce imágenes de una cámara localmente, sin enviar datos a la nube. La aplicación de inferencias obtiene acceso al módulo de la cámara de un dispositivo Raspberry Pi y ejecuta la inferencia mediante el modelo SqueezeNet de código abierto.

El tutorial contiene los siguientes pasos generales:

Requisitos previos

Para completar este tutorial, se necesita lo siguiente:

nota

Este tutorial utiliza un Raspberry Pi, pero AWS IoT Greengrass es compatible con otras plataformas, como Intel Atom y NVIDIA Jetson TX2. En el ejemplo de Jetson TX2, pueden utilizarse imágenes estáticas en lugar de imágenes transmitidas desde una cámara.

Paso 1: Configurar el Raspberry Pi

En este paso, va a instalar actualizaciones en el sistema operativo Rasbian, instalar el software del módulo de cámara y las dependencias de Python, y habilitar la interfaz de la cámara. Ejecute los siguientes comandos en el terminal de Raspberry Pi.

  1. Instale las actualizaciones en Raspbian.

    sudo apt-get update sudo apt-get dist-upgrade
  2. Instale la interfaz picamera del módulo de cámara y las demás bibliotecas de Python necesarias para este tutorial.

    sudo apt-get install -y python-dev python-setuptools python-pip python-picamera
  3. Reinicie el Raspberry Pi.

    sudo reboot
  4. Abra la herramienta de configuración de Raspberry Pi.

    sudo raspi-config
  5. Utilice las teclas de flecha para abrir Interfacing Options (Opciones de interfaz) y habilitar la interfaz de la cámara. Si se le solicita, permita que el dispositivo se reinicie.

  6. Utilice el siguiente comando para probar la configuración de la cámara.

    raspistill -v -o test.jpg

    Se abre una ventana de vista previa en el Raspberry Pi, se guarda una imagen denominada test.jpg en el directorio /home/pi y se muestra información sobre la cámara en el terminal de Raspberry Pi.

Paso 2: Instalar el marco de trabajo de MXNet

En este paso, va a descargar las bibliotecas precompiladas de Apache MXNet y va a instalarlas en el Raspberry Pi.

nota

Este tutorial utiliza bibliotecas para el marco de trabajo de aprendizaje automático de MXNet, pero también existen bibliotecas para TensorFlow. Para obtener más información, incluidas las limitaciones, consulte Tiempos de ejecución y bibliotecas de marco previamente compiladas para inferencia de aprendizaje automático.

  1. En la página Descargas de Tiempos de ejecución de aprendizaje automático y bibliotecas precompiladas de AWS IoT Greengrass, localice MXNet versión 1.2.1 para Raspberry Pi. Elija Download (Descargar).

    nota

    Al descargar este software, acepta la licencia de Apache 2.0.

  2. Transfiera el archivo ggc-mxnet-v1.2.1-python-raspi.tar.gz descargado desde su equipo al Raspberry Pi.

    nota

    Para ver el modo de hacerlo en diferentes plataformas, consulte este paso en la sección Introducción. Por ejemplo, puede utilizar el siguiente comando scp:

    scp ggc-mxnet-v1.2.1-python-raspi.tar.gz pi@IP-address:/home/pi
  3. En el terminal de Raspberry Pi, descomprima el archivo transferido.

    tar -xzf ggc-mxnet-v1.2.1-python-raspi.tar.gz
  4. Instale el marco de trabajo de MXNet.

    cd ggc-mxnet-v1.2.1-python-raspi/ ./mxnet_installer.sh

    nota

    Puede continuar en Paso 3: Crear un paquete de modelo de MXNet mientras se instala el marco de trabajo, pero debe esperar a que finalice la instalación antes de continuar con Paso 4: Crear y publicar una función de Lambda.

    Si lo desea, puede ejecutar pruebas de unidad para verificar la instalación. Para ello, añada la opción -u al comando anterior. Si se ejecuta correctamente, cada prueba registra una línea en el terminal que termina con ok. Si todas las pruebas se realizan correctamente, la instrucción de registro final contiene OK. La ejecución de pruebas unitarias aumenta el tiempo de instalación.

    El script también crea un paquete de implementación de funciones de Lambda denominado greengrassObjectClassification.zip que contiene el código de la función y las dependencias. Cargará este paquete de implementación más tarde.

  5. Cuando finalice la instalación, transfiera greengrassObjectClassification.zip a su equipo. En función de su entorno, puede utilizar el comando scp o una utilidad como WinSCP.

Paso 3: Crear un paquete de modelo de MXNet

En este paso, va a descargar los archivos de un modelo de ejemplo de MXNet entrenado previamente y, a continuación, va a guardarlos en un archivo .zip. AWS IoT Greengrass puede utilizar modelos de Amazon S3, siempre que utilicen el formato tar.gz o .zip.

  1. Descargue los siguientes archivos en su equipo:

    • squeezenet_v1.1-0000.params. Un archivo de parámetros en el que se describen las ponderaciones de la conectividad.

    • squeezenet_v1.1-symbol.json. Un archivo de símbolos en el que se describe la estructura de la red neuronal.

    • synset.txt. Un archivo synset que mapea los ID de clase reconocidos a nombres de clase en lenguaje natural.

    nota

    Todos los paquetes de modelos de MXNet utilizan estos tres tipos de archivo, pero el contenido de los paquetes de modelos de TensorFlow puede variar.

  2. Comprima los tres archivos y asigne al archivo comprimido el nombre squeezenet.zip. Cargará este paquete de modelo en Amazon S3 en el Paso 6: Añadir recursos al grupo de Greengrass.

Paso 4: Crear y publicar una función de Lambda

En este paso, va a crear una función de Lambda y la configurará para utilizar el paquete de implementación. A continuación, publicará una versión de la función y creará un alias.

El paquete de implementación de la función de Lambda se denomina greengrassObjectClassification.zip. Este es el archivo zip que se generó durante la instalación del marco de trabajo de MXNet en Paso 2: Instalar el marco de trabajo de MXNet. Contiene una aplicación de inferencias que realiza tareas comunes, como la carga de modelos, la importación de Apache MXNet y la realización de acciones a partir de las predicciones. La aplicación contiene los siguientes componentes principales:

  • Lógica de la aplicación:

    • load_model.py. Carga los modelos de MXNet.

    • greengrassObjectClassification.py. Ejecuta predicciones sobre las imágenes que se transmiten desde la cámara.

  • Dependencias:

    • greengrasssdk. El SDK de AWS IoT Greengrass Core de Python, utilizado por la función para publicar mensajes MQTT.

      nota

      La biblioteca mxnet se instaló en el dispositivo central durante la instalación del marco de trabajo de MXNet.

Primero, cree una función de Lambda.

  1. En el consola de AWS IoT, en el panel de navegación, elija Greengrass y, a continuación, elija Grupos.

    
            El panel de navegación en el consola de AWS IoT con Grupos resaltado.
  2. Elija el grupo de Greengrass en el que desea añadir la función de Lambda.

  3. En la página de configuración de grupo, elija Lambdas y, a continuación, elija Add Lambda.

    
            La página del grupo con Lambdas y Add Lambda (Añadir Lambda) resaltados.
  4. En la página Add a Lambda to your Greengrass Group (Añadir una función de Lambda a su grupo de Greengrass), seleccione Create new Lambda. Se abrirá la consola de AWS Lambda.

    
            La página Add a Lambda to your Greengrass Group (Añadir una función de Lambda a su grupo de Greengrass) con Create new Lambda (Crear nueva función de Lambda) resaltado.
  5. Elija Author from scratch y utilice los siguientes valores para crear la función:

    • En Function name (Nombre de función), escriba greengrassObjectClassification.

    • En Runtime, elija Python 2.7.

    En Permissions (Permisos), mantenga la configuración predeterminada. De esta forma, se crea un rol de ejecución que concede los permisos básicos de Lambda. AWS IoT Greengrass no utiliza este rol.

  6. Elija Create function.

    
            La página Create function (Crear función) con Create function (Crear función) resaltado.

     

    Ahora, cargue el paquete de implementación de la función de Lambda y registre el controlador.

  7. En la pestaña Configuration (Configuración) de la función greengrassObjectClassification, en Function code (Código de función), utilice los siguientes valores:

    • Para Code entry type (Tipo de entrada de código), elija Upload a .zip file (Cargar un archivo .zip).

    • En Runtime, elija Python 2.7.

    • En Handler (Controlador), escriba greengrassObjectClassification.function_handler.

  8. Elija Upload.

    
            La sección Function code (Código de función) con Upload (Cargar) resaltado.
  9. Elija el paquete de implementación greengrassObjectClassification.zip.

  10. Seleccione Save.

     

    A continuación, publique la primera versión de la función de Lambda. A continuación, cree un alias para la versión.

    nota

    Los grupos de Greengrass pueden hacer referencia a una función de Lambda por alias (recomendado) o por versión. Si se utiliza un alias, resulta más fácil administrar las actualizaciones del código, ya que no es necesario modificar la tabla de suscripciones ni la definición de grupo cuando se actualiza el código de la función. En su lugar, solo tiene que hacer que el alias apunte a la nueva versión de la función.

  11. En el menú Actions, elija Publish new version.

    
            La opción Publish new version (Publicar nueva versión) del menú Actions (Acciones).
  12. En Version description (Descripción de versión), escriba First version y, a continuación, elija Publish.

  13. En la página de configuración de greengrassObjectClassification: 1, en el menú Actions (Acciones), elija Create alias (Crear alias).

    
            La opción Create alias (Crear alias) en el menú Actions (Acciones).
  14. En la página Create a new alias, utilice los valores siguientes:

    • En Name (Nombre), escriba mlTest.

    • En Version (Versión), escriba 1.

    nota

    AWS IoT Greengrass no admite alias de Lambda para versiones de $LATEST.

  15. Seleccione Create.

    
            La página Create a new alias (Crear un nuevo alias) con Create (Crear) resaltado.

    Ahora, añada función de Lambda al grupo de Greengrass.

Paso 5: Añadir la función de Lambda al grupo de Greengrass

En este paso, va a añadir la función de Lambda al grupo y a configurar el ciclo de vida y las variables de entorno.

Primero, añada función de Lambda al grupo de Greengrass.

  1. En la consola de AWS IoT, abra la página de configuración de grupo.

  2. Elija Lambdas (Funciones de Lambda) y, a continuación, elija Add Lambda.

    
            La página del grupo con Lambdas y Add Lambda (Añadir Lambda) resaltados.
  3. En la página Add a Lambda to your Greengrass Group (Añadir una función de Lambda a su grupo de Greengrass), seleccione Use existing Lambda.

    
            La página Add a Lambda to your Greengrass Group (Añadir una función de Lambda a su grupo de Greengrass) con Use existing Lambda (Utilizar función de Lambda existente) resaltado.
  4. Elija greengrassObjectClassification y después Next.

  5. En la página Select a Lambda version (Seleccionar una versión Lambda), seleccione Alias:mlTest y, a continuación, elija Finish.

     

    A continuación, configure el ciclo de vida y las variables de entorno de la función de Lambda.

  6. En la página Lambdas (Funciones de Lambda), elija la función de Lambda greengrassObjectClassification.

    
            La página Lambdas (Funciones de Lambda) con la función de Lambda greengrassObjectClassification resaltada.
  7. En la página de configuración de greengrassObjectClassification, elija Edit (Editar).

  8. En la página Configuración Lambda específica del grupo, utilice los siguientes valores:

    • En Límite de memoria, escriba 96 MB.

    • En Tiempo de espera, escriba 10 seconds.

    • Ciclo de vida de Lambda, elija Prolongar la vida útil de esta función y mantenerla en ejecución indefinidamente.

    • En Acceso de lectura al directorio /sys, elija Habilitar.

    Para obtener más información, consulte Configuración del ciclo de vida de las funciones de Greengrass Lambda.

    
            La página de greengrassObjectClassification con las propiedades actualizadas.
  9. En Variables de entorno, cree un par clave-valor. Un par clave-valor es necesario para las funciones que interactúan con modelos MXNet en un Raspberry Pi.

    Como clave, utilice MXNET_ENGINE_TYPE. Como valor, utilice NaiveEngine.

    nota

    En sus propias funciones de Lambda definidas por el usuario, si lo desea, puede establecer la variable de entorno en el código de la función.

  10. Mantenga los valores predeterminados del resto de las propiedades y elija Update (Actualizar).

Paso 6: Añadir recursos al grupo de Greengrass

En este paso, va a crear recursos para el módulo de cámara y el modelo de inferencia de aprendizaje automático. También se asocian los recursos a la función de Lambda, lo que permite a esta obtener acceso a los recursos en el dispositivo central.

En primer lugar, cree dos recursos de dispositivos locales para la cámara: uno para la memoria compartida y otro para la interfaz del dispositivo. Para obtener más información sobre el acceso a los recursos locales, consulte Acceder a recursos locales con conectores y funciones Lambda.

  1. En la página de configuración del grupo, elija Resources (Recursos).

    
            La página de configuración de grupo con la opción Resources (Recursos) resaltada.
  2. En la pestaña Local, elija Add a local resource (Añadir un recurso local).

  3. En la página Create a local resource, utilice los siguientes valores:

    • En Nombre del recurso, escriba videoCoreSharedMemory.

    • En Tipo de recurso, elija Dispositivo.

    • En Ruta del dispositivo, escriba /dev/vcsm.

      La ruta del dispositivo es la ruta local completa del recurso del dispositivo. Esta ruta solo puede hacer referencia a un dispositivo de carácter o un dispositivo de bloques situado bajo /dev.

    • En Group owner file access permission (Permiso de acceso a los archivos del propietario del grupo), elija Automatically add OS group permissions of the Linux group that owns the resource (Añadir automáticamente los permisos de grupo de SO del grupo de Linux que posea el recurso).

      La opción Group owner file access permission (Permiso de acceso a los archivos del propietario del grupo) le permite conceder al proceso Lambda permisos de acceso a archivos adicionales. Para obtener más información, consulte Permiso de acceso a los archivos del propietario del grupo.

    
            La página Create a local resource (Crear un recurso local) con las propiedades del recurso editadas.
  4. En Lambda function affiliations (Afiliaciones de funciones de Lambda), elija Select (Seleccionar).

  5. Elija greengrassObjectClassification, elija Read and write access (Acceso de lectura y escritura) y, a continuación, elija Done (Listo).

    
            Propiedades de Lambda function affiliations (Afiliaciones de funciones de Lambda) con la opción Done (Fin) resaltada.

    A continuación, añada un recurso de dispositivo local para la interfaz de la cámara.

  6. Elija Add another resource (Añadir otro recurso).

  7. En la página Create a local resource, utilice los siguientes valores:

    • En Nombre del recurso, escriba videoCoreInterface.

    • En Tipo de recurso, elija Dispositivo.

    • En Ruta del dispositivo, escriba /dev/vchiq.

    • En Group owner file access permission (Permiso de acceso a los archivos del propietario del grupo), elija Automatically add OS group permissions of the Linux group that owns the resource (Añadir automáticamente los permisos de grupo de SO del grupo de Linux que posea el recurso).

    
            La página Create a local resource (Crear un recurso local) con las propiedades del recurso editadas.
  8. En Lambda function affiliations (Afiliaciones de funciones de Lambda), elija Select (Seleccionar).

  9. Elija greengrassObjectClassification, elija Read and write access (Acceso de lectura y escritura) y, a continuación, elija Done (Listo).

  10. En la parte inferior de la página, elija Save.

 

Ahora, añada el modelo de inferencia como recurso de aprendizaje automático. Este paso incluye cargar el paquete de modelo squeezenet.zip en Amazon S3.

  1. En la página Resources (Recursos) de su grupo, elija Machine Learning (Aprendizaje automático) y, a continuación, elija Add a machine learning resource (Añadir un recurso de aprendizaje automático).

  2. En la página Create a machine learning resource (Crear un recurso de aprendizaje automático), en Resource name (Nombre del recurso), escriba squeezenet_model.

    
            La página Add Machine Learning Model con las propiedades actualizadas.
  3. En Model source (Origen del modelo), elija Upload a model in S3 (Cargar un modelo en S3).

  4. En Model from S3 (Modelo de S3), elija Select (Seleccionar).

  5. Elija Upload a model (Cargar un modelo). Esto abre una nueva pestaña en la consola de Amazon S3.

  6. En la pestaña de la consola de Amazon S3, cargue el archivo squeezenet.zip en un bucket de Amazon S3. Para obtener información, consulte ¿Cómo puedo cargar archivos y carpetas en un bucket de S3?

    nota

    Para que el bucket sea accesible, el nombre del bucket debe contener la cadena greengrass. Elija un nombre único (como greengrass-bucket-user-id-epoch-time). No utilice un punto (.) en el nombre del bucket.

  7. En la pestaña de la consola de AWS IoT Greengrass, localice y elija su bucket de Amazon S3. Localice y cargue el archivo squeezenet.zip y elija Select (Seleccionar). Es posible que tenga que elegir Refresh (Actualizar) para actualizar la lista de buckets y archivos disponibles.

  8. En Local path (Ruta local), escriba /greengrass-machine-learning/mxnet/squeezenet.

    Este es el destino para el modelo local en el espacio de nombres del tiempo de ejecución de Lambda. Cuando se implementa el grupo, AWS IoT Greengrass recupera el paquete del modelo de origen y, a continuación, extrae el contenido en el directorio especificado. La función de Lambda de ejemplo de este tutorial ya está configurada para utilizar esta ruta (en la variable model_path).

  9. En Lambda function affiliations (Afiliaciones de funciones de Lambda), elija Select (Seleccionar).

  10. Elija greengrassObjectClassification, elija Read-only access (Acceso de solo lectura) y, a continuación, elija Done (Listo).

  11. Seleccione Save.

Uso de modelos entrenados con Amazon SageMaker

Este tutorial utiliza un modelo que está almacenado en Amazon S3, pero también se pueden utilizar fácilmente modelos de Amazon SageMaker. La consola de AWS IoT Greengrass incluye la capacidad de integración con Amazon SageMaker, por lo que no es necesario cargar manualmente estos modelos en Amazon S3. Para conocer los requisitos y las restricciones del uso de modelos de Amazon SageMaker, consulte Orígenes de modelos admitidos.

Para utilizar un modelo de Amazon SageMaker:

  • En Model source (Origen del modelo), elija Use an existing SageMaker model (Usar un modelo de SageMaker existente) y, a continuación, elija el nombre del trabajo de entrenamiento del modelo.

  • En Local path (Ruta local), escriba la ruta del directorio en el que la función de Lambda busca el modelo.

Paso 7: Añadir una suscripción al grupo de Greengrass

En este paso, va a añadir una suscripción al grupo. Esta suscripción permite a la función de Lambda enviar los resultados de predicción a AWS IoT mediante la publicación en un tema MQTT.

  1. En la página de configuración de grupo, elija Subscriptions (Suscripciones) y, a continuación, elija Add Subscription.

    
            La página del grupo con Subscriptions (Suscripciones) y Add Subscription (Añadir suscripción) resaltados.
  2. En la página Select your source and target, configure el origen y el destino, de la siguiente manera:

    1. En Select a source (Seleccionar un origen), elija Lambdas (Funciones de Lambda) y, a continuación, elija greengrassObjectClassification.

    2. En Select a target (Seleccionar un destino), elija Services (Servicios) y, a continuación, elija IoT Cloud.

    3. Elija Next.

      
                La página Select your source and target (Seleccione el origen y el destino) con Next (Siguiente) resaltado.
  3. En la página Filter your data with a topic (Filtrar los datos con un tema), en Topic filter (Filtro de temas), escriba hello/world y, a continuación, elija Next (Siguiente).

    
            La página Filter your data with a topic (Filtrar los datos con un tema) con el botón Next (Siguiente) resaltado.
  4. Elija Finish.

Paso 8: Implementar el grupo de Greengrass

En este paso, va a implementar la versión actual de la definición del grupo en el dispositivo del núcleo de Greengrass. La definición contiene la función de Lambda, los recursos y las configuraciones de suscripciones que ha añadido.

  1. Asegúrese de que el AWS IoT Greengrass Core se está ejecutando. Ejecute los siguientes comandos en el terminal de Raspberry Pi según sea necesario.

    1. Para comprobar si el demonio está en ejecución:

      ps aux | grep -E 'greengrass.*daemon'

      Si el resultado contiene una entrada root para /greengrass/ggc/packages/1.9.3/bin/daemon, significa que el demonio está en ejecución.

      nota

      La versión que figura en la ruta depende de la versión del software AWS IoT Greengrass Core que esté instalada en el dispositivo del núcleo.

    2. Para comenzar el demonio:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. En la página de configuración de grupo, elija Deployments (Implementaciones) y, en el menú Actions (Acciones), elija Deploy (Implementar).

    
            La página del grupo con las opciones Deployments (Implementaciones) y and Deploy (Implementar) resaltadas.
  3. En la página Configure how devices discover your core (Configurar cómo los dispositivos detectan el núcleo), elija Automatic detection.

    Esto permite a los dispositivos adquirir automáticamente la información de conexión del dispositivo principal, como la dirección IP, el DNS y el número de puerto. Se recomienda la detección automática, pero AWS IoT Greengrass también es compatible con puntos de enlace especificados manualmente. Solo se le solicitará el método de detección la primera vez que se implemente el grupo.

    
            La página Configure how devices discover your core (Configurar cómo los dispositivos detectan el núcleo) con Automatic detection (Detección automática) resaltado.

    nota

    Si se le solicita, conceda el permiso para crear el rol de servicio de Greengrass y asociarlo a su cuenta de AWS en la región de AWS actual. Este rol permite a AWS IoT Greengrass acceder a sus recursos en servicios de AWS. Solo se necesita un rol de servicio de Greengrass por cada cuenta de AWS, pero debe estar asociado a la cuenta de AWS en cada región de AWS en la que se utiliza AWS IoT Greengrass.

    En la página Deployments (Implementaciones), se muestra la marca temporal, el ID de versión y el estado de la implementación. Una vez terminada, la implementación debería mostrar el estado Completado correctamente.

    Para obtener ayuda sobre la resolución de problemas, consulte Solución de problemas de AWS IoT Greengrass.

Prueba de la aplicación de inferencias

Ahora puede verificar si la implementación se ha configurado correctamente. Para ello, suscríbase al tema hello/world y vea los resultados de la predicción que publica la función de Lambda.

nota

Si se conecta un monitor al Raspberry Pi, la imagen en directo de la cámara se muestra en una ventana de vista previa.

  1. En la consola de AWS IoT, elija Test (Pruebas).

    
            El panel de navegación en el consola de AWS IoT con Pruebas resaltado.
  2. En Subscriptions (Suscripciones), utilice los siguientes valores:

    • Como tema de la suscripción, utilice hello/world.

    • En Visualización de la carga de MQTT, elija Mostrar cargas como cadenas.

  3. Elija Subscribe to topic.

    Si la prueba se realiza correctamente, los mensajes de la función de Lambda aparecen en la parte inferior de la página. Cada mensaje contiene los cinco primeros resultados de predicción de la imagen, con este formato: probabilidad, ID de la clase predicha y nombre de la clase correspondiente.

    
            La página Subscriptions (Suscripciones) con los resultados de la prueba y los datos de los mensajes.

Solución de problemas de inferencia de aprendizaje automático de AWS IoT Greengrass

Si la prueba no se realiza correctamente, puede seguir estos pasos de solución de problemas. Ejecute los comandos en el terminal de Raspberry Pi.

Compruebe los logs de errores

  1. Cambie al usuario raíz y vaya al directorio log. El acceso a los registros de AWS IoT Greengrass requiere permisos raíz.

    sudo su cd /greengrass/ggc/var/log
  2. Examine runtime.log o python_runtime.log.

    Para obtener más información, consulte Solución de problemas con registros.

Error de descompresión en runtime.log

Si runtime.log contiene un error similar al siguiente, asegúrese de que el archivo tar.gz del paquete del modelo de origen tiene un directorio principal.

Greengrass deployment error: unable to download the artifact model-arn: Error while processing. Error while unpacking the file from /tmp/greengrass/artifacts/model-arn/path to /greengrass/ggc/deployment/path/model-arn, error: open /greengrass/ggc/deployment/path/model-arn/squeezenet/squeezenet_v1.1-0000.params: no such file or directory

Si el paquete no tiene un directorio principal con los archivos del modelo, utilice el comando siguiente para volver a comprimir el modelo:

tar -zcvf model.tar.gz ./model

Por ejemplo:

─$ tar -zcvf test.tar.gz ./test ./test ./test/some.file ./test/some.file2 ./test/some.file3

nota

No incluya caracteres /* en este comando.

 

Compruebe que la función de Lambda se ha implementado correctamente.

  1. Muestre el contenido de la función de Lambda implementada en el directorio /lambda. Reemplace los valores de los marcadores de posición antes de ejecutar el comando .

    cd /greengrass/ggc/deployment/lambda/arn:aws:lambda:region:account:function:function-name:function-version ls -la
  2. Compruebe que el directorio contiene el mismo contenido que el paquete de implementación greengrassObjectClassification.zip que cargó en el Paso 4: Crear y publicar una función de Lambda.

    Asegúrese también de que los archivos .py y las dependencias se encuentran en la raíz del directorio.

 

Compruebe que el modelo de inferencia se ha implementado correctamente

  1. Busque el número de identificación de proceso (PID) del proceso de tiempo de ejecución de Lambda:

    ps aux | grep lambda-function-name

    En el resultado, el PID aparece en la segunda columna de la línea correspondiente al proceso de tiempo de ejecución de Lambda.

  2. Entre en el espacio de nombres del tiempo de ejecución de Lambda. Asegúrese de que sustituye el valor del marcador de posición pid antes de ejecutar el comando.

    nota

    Este directorio y su contenido se encuentran en el espacio de nombres del tiempo de ejecución de Lambda, por lo que no son visibles en un espacio de nombres de Linux normal.

    sudo nsenter -t pid -m /bin/bash
  3. Muestre el contenido del directorio local que ha especificado para el recurso de aprendizaje automático.

    cd /greengrass-machine-learning/mxnet/squeezenet/ ls -ls

    Debería ver los siguientes archivos:

    32 -rw-r--r-- 1 ggc_user ggc_group   31675 Nov 18 15:19 synset.txt 32 -rw-r--r-- 1 ggc_user ggc_group   28707 Nov 18 15:19 squeezenet_v1.1-symbol.json 4832 -rw-r--r-- 1 ggc_user ggc_group 4945062 Nov 18 15:19 squeezenet_v1.1-0000.params

Pasos siguientes

A continuación, explore otras aplicaciones de inferencias. AWS IoT Greengrass proporciona otras funciones de Lambda que puede utilizar para probar la inferencia local. Puede encontrar el paquete con los ejemplos en la carpeta de bibliotecas precompiladas que descargó en el Paso 2: Instalar el marco de trabajo de MXNet.

Configuración de un dispositivo NVIDIA Jetson TX2

Para ejecutar este tutorial en un NVIDIA Jetson TX2, debe proporcionar imágenes de origen y configurar la función de Lambda. Si está utilizando la GPU, también debe agregar recursos de dispositivos locales.

Si necesita más información acerca de cómo configurar Jetson para que pueda instalar el software de AWS IoT Greengrass Core, consulte Configuración de otros dispositivos.

  1. Descargue imágenes PNG o JPG estáticas para la función de Lambda que se va a utilizar para la clasificación de imágenes. La aplicación funciona mejor con archivos de imágenes pequeños. Si lo prefiere, puede instrumentar una cámara en la placa Jetson para capturar las imágenes de origen.

    Guarde los archivos de imágenes en el directorio que contiene el archivo greengrassObjectClassification.py (o en un subdirectorio de este directorio). Se encuentra en el paquete de implementación de la función de Lambda que cargó en Paso 4: Crear y publicar una función de Lambda.

  2. Edite la configuración de la función de Lambda para aumentar el valor de Memory limit (Límite de memoria). Use 500 MB para CPU o 2048 MB para GPU. Siga el procedimiento indicado en Paso 5: Añadir la función de Lambda al grupo de Greengrass.

  3. Solo GPU: añada los siguientes recursos de dispositivos locales. Siga el procedimiento indicado en Paso 6: Añadir recursos al grupo de Greengrass.

    Para cada recurso:

    • En Tipo de recurso, elija Dispositivo.

    • En Group owner file access permission (Permiso de acceso a los archivos del propietario del grupo), elija Automatically add OS group permissions of the Linux group that owns the resource (Añadir automáticamente los permisos de grupo de SO del grupo de Linux que posea el recurso).

    • En Lambda function affiliations (Afiliaciones de funciones de Lambda), conceda Read and write access (Acceso de lectura y escritura) a la función de Lambda.

       

      Nombre

      Ruta del dispositivo

      nvhost-ctrl

      /dev/nvhost-ctrl

      nvhost-gpu

      /dev/nvhost-gpu

      nvhost-ctrl-gpu

      /dev/nvhost-ctrl-gpu

      nvhost-dbg-gpu

      /dev/nvhost-dbg-gpu

      nvhost-prof-gpu

      /dev/nvhost-prof-gpu

      nvmap

      /dev/nvmap