Personalice sus componentes de aprendizaje automático - AWS IoT Greengrass

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.

Personalice sus componentes de aprendizaje automático

EnAWS IoT Greengrass, puede configurar ejemplos de componentes de aprendizaje automático para personalizar la forma en que realiza la inferencia de aprendizaje automático en sus dispositivos, con los componentes de inferencia, modelo y tiempo de ejecución como componentes básicos. AWS IoT Greengrasstambién le proporciona la flexibilidad de utilizar los componentes de muestra como plantillas y crear sus propios componentes personalizados según sea necesario. Puede combinar este enfoque modular para personalizar los componentes de inferencia del aprendizaje automático de las siguientes maneras:

Uso de ejemplos de componentes de inferencia
  • Modifique la configuración de los componentes de inferencia al implementarlos.

  • Utilice un modelo personalizado con el componente de inferencia de muestra sustituyendo el componente de tienda de modelos de muestra por un componente de modelo personalizado. El modelo personalizado debe entrenarse con el mismo tiempo de ejecución que el modelo de muestra.

Uso de componentes de inferencia personalizados
  • Use código de inferencia personalizado con los modelos y tiempos de ejecución de muestra agregando componentes de modelos públicos y componentes de tiempo de ejecución como dependencias de los componentes de inferencia personalizados.

  • Cree y añada componentes de modelo personalizados o componentes de tiempo de ejecución como dependencias de componentes de inferencia personalizados. Debe usar componentes personalizados si quiere usar un código de inferencia personalizado o un tiempo de ejecución para el que AWS IoT Greengrass no se proporcione un componente de muestra.

Modifique la configuración de un componente de inferencia público

En la AWS IoT Greengrassconsola, la página del componente muestra la configuración predeterminada de ese componente. Por ejemplo, la configuración predeterminada del componente de clasificación de imágenes de TensorFlow Lite es la siguiente:

{ "accessControl": { "aws.greengrass.ipc.mqttproxy": { "aws.greengrass.TensorFlowLiteImageClassification:mqttproxy:1": { "policyDescription": "Allows access to publish via topic ml/tflite/image-classification.", "operations": [ "aws.greengrass#PublishToIoTCore" ], "resources": [ "ml/tflite/image-classification" ] } } }, "PublishResultsOnTopic": "ml/tflite/image-classification", "ImageName": "cat.jpeg", "InferenceInterval": 3600, "ModelResourceKey": { "model": "TensorFlowLite-Mobilenet" } }

Al implementar un componente de inferencia público, puede modificar la configuración predeterminada para personalizar su implementación. Para obtener información sobre los parámetros de configuración disponibles para cada componente de inferencia pública, consulte el tema del componente en. AWS-proporcionó componentes de aprendizaje automático

En esta sección se describe cómo implementar un componente modificado desde la AWS IoT Greengrass consola. Para obtener información sobre la implementación de componentes mediante elAWS CLI, consulteCrear implementaciones.

Para implementar un componente de inferencia pública modificado (consola)
  1. Inicie sesión en la consola de AWS IoT Greengrass.

  2. En el menú de navegación, elija Componentes.

  3. En la página Componentes, en la pestaña Componentes públicos, elija el componente que desee implementar.

  4. En la página de componentes, elija Implementar.

  5. En Añadir a la implementación, elija una de las siguientes opciones:

    1. Para combinar este componente con una implementación existente en el dispositivo de destino, elija Agregar a la implementación existente y, a continuación, seleccione la implementación que desee revisar.

    2. Para crear una nueva implementación en el dispositivo de destino, elija Crear nueva implementación. Si tiene una implementación existente en su dispositivo, al elegir este paso se reemplaza la implementación existente.

  6. En la página Especificar detalles, haga lo siguiente:

    1. En Información de implementación, introduzca o modifique el nombre descriptivo de su implementación.

    2. En Objetivos de implementación, seleccione un objetivo para su implementación y elija Siguiente. No puede cambiar el objetivo de implementación si está revisando una implementación existente.

  7. En la página Seleccionar componentes, en Componentes públicos, compruebe que está seleccionado el componente de inferencia con la configuración modificada y elija Siguiente.

  8. En la página Configurar componentes, haga lo siguiente:

    1. Seleccione el componente de inferencia y elija Configurar componente.

    2. En Actualización de la configuración, introduzca los valores de configuración que desee actualizar. Por ejemplo, introduzca la siguiente actualización de configuración en el cuadro Configuración para fusionar para cambiar el intervalo de inferencia a 15 segundos e indique al componente que busque la imagen nombrada custom.jpg en la /custom-ml-inference/images/ carpeta.

      { "InferenceInterval": "15", "ImageName": "custom.jpg", "ImageDirectory": "/custom-ml-inference/images/" }

      Para restablecer toda la configuración de un componente a sus valores predeterminados, especifique una sola cadena vacía "" en el cuadro Restablecer rutas.

    3. Seleccione Confirmar y, a continuación, elija Siguiente.

  9. En la página Configurar los ajustes avanzados, conserve los valores de configuración predeterminados y seleccione Siguiente.

  10. En la página de revisión, elija Implementar

Utilice un modelo personalizado con el componente de inferencia de muestra

Si desea utilizar el componente de inferencia de ejemplo con sus propios modelos de aprendizaje automático para un tiempo de ejecución que AWS IoT Greengrass proporcione un componente de tiempo de ejecución de muestra, debe anular los componentes del modelo público por componentes que utilicen esos modelos como artefactos. En un nivel alto, debe completar los siguientes pasos para usar un modelo personalizado con el componente de inferencia de muestra:

  1. Cree un componente de modelo que utilice un modelo personalizado en un depósito de S3 como artefacto. Su modelo personalizado debe entrenarse con el mismo tiempo de ejecución que el modelo que desea reemplazar.

  2. Modifique el parámetro de ModelResourceKey configuración en el componente de inferencia para usar el modelo personalizado. Para obtener información sobre la actualización de la configuración del componente de inferencia, consulte Modifique la configuración de un componente de inferencia público

Al implementar el componente de inferencia, AWS IoT Greengrass busca la versión más reciente de las dependencias de sus componentes. Anula el componente del modelo público dependiente si existe una versión personalizada posterior del componente en la misma banda. Cuenta de AWS Región de AWS

  1. Cargue su modelo en un bucket de S3. Para obtener información sobre cómo cargar sus modelos en un bucket de S3, consulte Cómo trabajar con buckets de Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.

    nota

    Debe almacenar sus artefactos en depósitos S3 que estén en el mismo lugar Cuenta de AWS y Región de AWS como los componentes. Para permitir el acceso AWS IoT Greengrass a estos artefactos, el rol de dispositivo de Greengrass debe permitir la s3:GetObject acción. Para obtener más información sobre la función del dispositivo, consulteAutorizar a los dispositivos principales a interactuar con AWS los servicios.

  2. En el menú de navegación de la AWS IoT Greengrassconsola, elija Componentes.

  3. Recupere la receta del componente de la tienda de modelos pública.

    1. En la página Componentes, en la pestaña Componentes públicos, busque y elija el componente del modelo público para el que desee crear una nueva versión. Por ejemplo, variant.DLR.ImageClassification.ModelStore.

    2. En la página de componentes, elija Ver receta y copie la receta JSON que se muestra.

  4. En la página Componentes, en la pestaña Mis componentes, elija Crear componente.

  5. En la página Crear componente, en Información del componente, seleccione Introducir la receta como JSON como fuente del componente.

  6. En el cuadro Receta, pegue la receta del componente que copió anteriormente.

  7. En la receta, actualice los siguientes valores:

    • ComponentVersion: Aumente la versión secundaria del componente.

      Al crear un componente personalizado para anular un componente de modelo público, debe actualizar solo la versión secundaria de la versión del componente existente. Por ejemplo, si la versión del componente público es2.1.0, puede crear un componente personalizado con la versión2.1.1.

    • Manifests.Artifacts.Uri: actualice cada valor de URI al URI de Amazon S3 del modelo que desee utilizar.

    nota

    No cambie el nombre del componente.

  8. Selecciona Crear componente.

  1. Cargue su modelo en un bucket de S3. Para obtener información sobre cómo cargar sus modelos en un bucket de S3, consulte Cómo trabajar con buckets de Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.

    nota

    Debe almacenar sus artefactos en depósitos S3 que estén en el mismo lugar Cuenta de AWS y Región de AWS como los componentes. Para permitir el acceso AWS IoT Greengrass a estos artefactos, el rol de dispositivo de Greengrass debe permitir la s3:GetObject acción. Para obtener más información sobre la función del dispositivo, consulteAutorizar a los dispositivos principales a interactuar con AWS los servicios.

  2. Ejecute el siguiente comando para recuperar la receta del componente público. Este comando escribe la receta del componente en el archivo de salida que usted proporciona en el comando. Convierte la cadena codificada en base64 recuperada a JSON o YAML, según sea necesario.

    Linux, macOS, or Unix
    aws greengrassv2 get-component \ --arn <arn> \ --recipe-output-format <recipe-format> \ --query recipe \ --output text | base64 --decode > <recipe-file>
    Windows Command Prompt (CMD)
    aws greengrassv2 get-component ^ --arn <arn> ^ --recipe-output-format <recipe-format> ^ --query recipe ^ --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>
    PowerShell
    aws greengrassv2 get-component ` --arn <arn> ` --recipe-output-format <recipe-format> ` --query recipe ` --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>
  3. Actualice el nombre del archivo de recetas para que <component-name>-<component-version> la versión del componente sea la versión de destino del nuevo componente. Por ejemplo, variant.DLR.ImageClassification.ModelStore-2.1.1.yaml.

  4. En la receta, actualice los siguientes valores:

    • ComponentVersion: Aumente la versión secundaria del componente.

      Al crear un componente personalizado para anular un componente de modelo público, debe actualizar solo la versión secundaria de la versión del componente existente. Por ejemplo, si la versión del componente público es2.1.0, puede crear un componente personalizado con la versión2.1.1.

    • Manifests.Artifacts.Uri: actualice cada valor de URI al URI de Amazon S3 del modelo que desee utilizar.

    nota

    No cambie el nombre del componente.

  5. Ejecute el siguiente comando para crear un nuevo componente con la receta que recuperó y modificó.

    aws greengrassv2 create-component-version \ --inline-recipe fileb://path/to/component/recipe
    nota

    Este paso crea el componente en el AWS IoT Greengrass servicio enNube de AWS. Puede usar la CLI de Greengrass para desarrollar, probar e implementar su componente localmente antes de subirlo a la nube. Para obtener más información, consulte Desarrolle AWS IoT Greengrass componentes.

Para obtener más información sobre la creación de componentes, consulteDesarrolle AWS IoT Greengrass componentes.

Cree componentes de aprendizaje automático personalizados

Debe crear componentes personalizados si desea utilizar un código de inferencia personalizado o un tiempo de ejecución para el que AWS IoT Greengrass no se proporcione un componente de muestra. Puede usar su código de inferencia personalizado con los modelos de aprendizaje automático y tiempos de ejecución de muestra AWS proporcionados, o puede desarrollar una solución de inferencia de aprendizaje automático completamente personalizada con sus propios modelos y tiempo de ejecución. Si sus modelos utilizan un entorno de ejecución para el que se AWS IoT Greengrass proporciona un ejemplo de componente de tiempo de ejecución, puede utilizar ese componente de tiempo de ejecución y tendrá que crear componentes personalizados únicamente para el código de inferencia y los modelos que desee utilizar.

Recupera la receta de un componente público

Puede utilizar la receta de un componente público de aprendizaje automático existente como plantilla para crear un componente personalizado. Para ver la receta de componentes de la última versión de un componente público, utilice la consola o utilice las AWS CLI siguientes opciones:

  • Uso de la consola

    1. En la página Componentes, en la pestaña Componentes públicos, busque y elija el componente público.

    2. En la página del componente, elija Ver receta.

  • Uso de AWS CLI

    Ejecute el siguiente comando para recuperar la receta del componente de la variante pública. Este comando escribe la receta del componente en el archivo de recetas JSON o YAML que proporciones en el comando.

    Linux, macOS, or Unix
    aws greengrassv2 get-component \ --arn <arn> \ --recipe-output-format <recipe-format> \ --query recipe \ --output text | base64 --decode > <recipe-file>
    Windows Command Prompt (CMD)
    aws greengrassv2 get-component ^ --arn <arn> ^ --recipe-output-format <recipe-format> ^ --query recipe ^ --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>
    PowerShell
    aws greengrassv2 get-component ` --arn <arn> ` --recipe-output-format <recipe-format> ` --query recipe ` --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>

    Sustituya los valores del comando de la siguiente manera:

    • <arn>. El nombre de recurso de Amazon (ARN) del componente público.

    • <recipe-format>. El formato en el que desea crear el archivo de recetas. Los valores admitidos son JSON y YAML.

    • <recipe-file>. El nombre de la receta en el formato<component-name>-<component-version>.

Recupere ejemplos de artefactos de los componentes

Puede utilizar los artefactos que utilizan los componentes públicos de aprendizaje automático como plantillas para crear sus artefactos de componentes personalizados, como códigos de inferencia o scripts de instalación en tiempo de ejecución.

Para ver los artefactos de muestra que se incluyen en los componentes públicos de aprendizaje automático, implemente el componente de inferencia público y, a continuación, visualice los artefactos del dispositivo en la /greengrass/v2/packages/artifacts-unarchived/component-name/component-version/ carpeta.

Cargue los artefactos de los componentes en un bucket de S3

Antes de poder crear un componente personalizado, debe cargar los artefactos del componente en un bucket de S3 y utilizar los URI de S3 en la receta del componente. Por ejemplo, para usar un código de inferencia personalizado en su componente de inferencia, cargue el código en un bucket de S3. A continuación, puede utilizar el URI de Amazon S3 de su código de inferencia como un artefacto en su componente.

Para obtener información sobre cómo cargar contenido en un bucket de S3, consulte Trabajar con buckets de Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.

nota

Debe almacenar sus artefactos en depósitos de S3 que estén en el mismo lugar Cuenta de AWS y Región de AWS como los componentes. Para permitir el acceso AWS IoT Greengrass a estos artefactos, el rol de dispositivo de Greengrass debe permitir la s3:GetObject acción. Para obtener más información sobre la función del dispositivo, consulteAutorizar a los dispositivos principales a interactuar con AWS los servicios.

Cree componentes personalizados

Puede utilizar los artefactos y las recetas que ha recuperado para crear sus componentes de aprendizaje automático personalizados. Para ver un ejemplo, consulte Cree un componente de inferencia personalizado.

Para obtener información detallada sobre la creación e implementación de componentes en los dispositivos Greengrass, consulte Desarrolle AWS IoT Greengrass componentes y. Implemente AWS IoT Greengrass componentes en los dispositivos

Cree un componente de inferencia personalizado

En esta sección, se muestra cómo crear un componente de inferencia personalizado utilizando el componente de clasificación de imágenes del DLR como plantilla.

Cargue su código de inferencia a un bucket de Amazon S3

Cree su código de inferencia y, a continuación, cárguelo en un bucket de S3. Para obtener información sobre cómo cargar contenido en un bucket de S3, consulte Trabajar con buckets de Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.

nota

Debe almacenar sus artefactos en depósitos de S3 que estén en el mismo lugar Cuenta de AWS y Región de AWS como los componentes. Para permitir el acceso AWS IoT Greengrass a estos artefactos, el rol de dispositivo de Greengrass debe permitir la s3:GetObject acción. Para obtener más información sobre la función del dispositivo, consulteAutorizar a los dispositivos principales a interactuar con AWS los servicios.

Cree una receta para su componente de inferencia

  1. Ejecute el siguiente comando para recuperar la receta del componente de clasificación de imágenes del DLR. Este comando escribe la receta del componente en el archivo de recetas JSON o YAML que usted proporciona en el comando.

    Linux, macOS, or Unix
    aws greengrassv2 get-component \ --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version \ --recipe-output-format JSON | YAML \ --query recipe \ --output text | base64 --decode > <recipe-file>
    Windows Command Prompt (CMD)
    aws greengrassv2 get-component ^ --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version ^ --recipe-output-format JSON | YAML ^ --query recipe ^ --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>
    PowerShell
    aws greengrassv2 get-component ` --arn arn:aws:greengrass:region:aws:components:aws.greengrass.DLRImageClassification:versions:version ` --recipe-output-format JSON | YAML ` --query recipe ` --output text > <recipe-file>.base64 certutil -decode <recipe-file>.base64 <recipe-file>

    <recipe-file>Sustitúyala por el nombre de la receta en el formato<component-name>-<component-version>.

  2. En el ComponentDependencies objeto de la receta, realice una o varias de las siguientes acciones en función del modelo y los componentes del tiempo de ejecución que desee utilizar:

    • Mantenga la dependencia de los componentes del DLR si desea utilizar modelos compilados por el DLR. También puede reemplazarlo por una dependencia de un componente de tiempo de ejecución personalizado, como se muestra en el siguiente ejemplo.

      Componente de ejecución

      JSON
      { "<runtime-component>": { "VersionRequirement": "<version>", "DependencyType": "HARD" } }
      YAML
      <runtime-component>: VersionRequirement: "<version>" DependencyType: HARD
    • Mantenga la dependencia del almacén de modelos de clasificación de imágenes del DLR para utilizar los ResNet -50 modelos previamente entrenados que AWS proporciona, o modifíquelo para utilizar un componente de modelo personalizado. Al incluir una dependencia para un componente de modelo público, si existe una versión personalizada posterior del componente en el mismo Cuenta de AWS yRegión de AWS, entonces, el componente de inferencia utiliza ese componente personalizado. Especifique la dependencia del componente del modelo como se muestra en los siguientes ejemplos.

      Componente de modelo público

      JSON
      { "variant.DLR.ImageClassification.ModelStore": { "VersionRequirement": "<version>", "DependencyType": "HARD" } }
      YAML
      variant.DLR.ImageClassification.ModelStore: VersionRequirement: "<version>" DependencyType: HARD

      Componente de modelo personalizado

      JSON
      { "<custom-model-component>": { "VersionRequirement": "<version>", "DependencyType": "HARD" } }
      YAML
      <custom-model-component>: VersionRequirement: "<version>" DependencyType: HARD
  3. En el ComponentConfiguration objeto, añada la configuración por defecto para este componente. Más adelante, podrá modificar esta configuración al implementar el componente. El siguiente extracto muestra la configuración del componente de clasificación de imágenes del DLR.

    Por ejemplo, si usa un componente de modelo personalizado como dependencia para su componente de inferencia personalizado, modifíquelo ModelResourceKey para proporcionar los nombres de los modelos que está utilizando.

    JSON
    { "accessControl": { "aws.greengrass.ipc.mqttproxy": { "aws.greengrass.ImageClassification:mqttproxy:1": { "policyDescription": "Allows access to publish via topic ml/dlr/image-classification.", "operations": [ "aws.greengrass#PublishToIoTCore" ], "resources": [ "ml/dlr/image-classification" ] } } }, "PublishResultsOnTopic": "ml/dlr/image-classification", "ImageName": "cat.jpeg", "InferenceInterval": 3600, "ModelResourceKey": { "armv7l": "DLR-resnet50-armv7l-cpu-ImageClassification", "x86_64": "DLR-resnet50-x86_64-cpu-ImageClassification", "aarch64": "DLR-resnet50-aarch64-cpu-ImageClassification" } }
    YAML
    accessControl: aws.greengrass.ipc.mqttproxy: 'aws.greengrass.ImageClassification:mqttproxy:1': policyDescription: 'Allows access to publish via topic ml/dlr/image-classification.' operations: - 'aws.greengrass#PublishToIoTCore' resources: - ml/dlr/image-classification PublishResultsOnTopic: ml/dlr/image-classification ImageName: cat.jpeg InferenceInterval: 3600 ModelResourceKey: armv7l: "DLR-resnet50-armv7l-cpu-ImageClassification" x86_64: "DLR-resnet50-x86_64-cpu-ImageClassification" aarch64: "DLR-resnet50-aarch64-cpu-ImageClassification"
  4. En el Manifests objeto, proporcione información sobre los artefactos y la configuración de este componente que se utilizan cuando el componente se implementa en diferentes plataformas y cualquier otra información necesaria para ejecutar correctamente el componente. El siguiente extracto muestra la configuración del Manifests objeto para la plataforma Linux en el componente de clasificación de imágenes del DLR.

    JSON
    { "Manifests": [ { "Platform": { "os": "linux", "architecture": "arm" }, "Name": "32-bit armv7l - Linux (raspberry pi)", "Artifacts": [ { "URI": "s3://SAMPLE-BUCKET/sample-artifacts-directory/image_classification.zip", "Unarchive": "ZIP" } ], "Lifecycle": { "Setenv": { "DLR_IC_MODEL_DIR": "{variant.DLR.ImageClassification.ModelStore:artifacts:decompressedPath}/{configuration:/ModelResourceKey/armv7l}", "DEFAULT_DLR_IC_IMAGE_DIR": "{artifacts:decompressedPath}/image_classification/sample_images/" }, "run": { "RequiresPrivilege": true, "script": ". {variant.DLR:configuration:/MLRootPath}/greengrass_ml_dlr_venv/bin/activate\npython3 {artifacts:decompressedPath}/image_classification/inference.py" } } } ] }
    YAML
    Manifests: - Platform: os: linux architecture: arm Name: 32-bit armv7l - Linux (raspberry pi) Artifacts: - URI: s3://SAMPLE-BUCKET/sample-artifacts-directory/image_classification.zip Unarchive: ZIP Lifecycle: Setenv: DLR_IC_MODEL_DIR: "{variant.DLR.ImageClassification.ModelStore:artifacts:decompressedPath}/{configuration:/ModelResourceKey/armv7l}" DEFAULT_DLR_IC_IMAGE_DIR: "{artifacts:decompressedPath}/image_classification/sample_images/" run: RequiresPrivilege: true script: |- . {variant.DLR:configuration:/MLRootPath}/greengrass_ml_dlr_venv/bin/activate python3 {artifacts:decompressedPath}/image_classification/inference.py

Para obtener información detallada sobre la creación de recetas de componentes, consulte. AWS IoT Greengrass referencia de recetas de componentes

Cree el componente de inferencia

Utilice la AWS IoT Greengrass consola o la AWS CLI para crear un componente con la receta que acaba de definir. Después de crear el componente, puede implementarlo para realizar inferencias en su dispositivo. Para ver un ejemplo de cómo implementar un componente de inferencia, consulte. Tutorial: Realice una inferencia de clasificación de imágenes de muestra con Lite TensorFlow

  1. Inicie sesión en la consola de AWS IoT Greengrass.

  2. En el menú de navegación, elija Componentes.

  3. En la página Componentes, en la pestaña Mis componentes, elija Crear componente.

  4. En la página Crear componente, en Información del componente, seleccione Introducir la receta como JSON o Introducir la receta como YAML como fuente del componente.

  5. En el cuadro Receta, introduce la receta personalizada que has creado.

  6. Haga clic en Crear componente.

Ejecute el siguiente comando para crear un nuevo componente personalizado con la receta que ha creado.

aws greengrassv2 create-component-version \ --inline-recipe fileb://path/to/recipe/file
nota

Este paso crea el componente en el AWS IoT Greengrass servicio enNube de AWS. Puede usar la CLI de Greengrass para desarrollar, probar e implementar su componente localmente antes de subirlo a la nube. Para obtener más información, consulte Desarrolle AWS IoT Greengrass componentes.