Opcional: configurar o dispositivo para qualificação de ML - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, AWS IoT Greengrass V1 não lançaremos atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adiciona novos recursos significativos e suporte para plataformas adicionais.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Opcional: configurar o dispositivo para qualificação de ML

O IDT do AWS IoT Greengrass fornece testes de qualificação de machine learning (ML) para validar se os dispositivos podem realizar inferências de ML localmente usando modelos treinados em nuvem.

Para executar testes de qualificação de ML, primeiro é preciso configurar os dispositivos conforme descrito em Configure seu dispositivo para executar testes de IDT. Depois, siga as etapas deste tópico para instalar dependências para as estruturas de ML que você deseja executar.

É necessária a versão 3.1.0 ou posterior do IDT para executar testes de qualificação de ML.

Instalar dependências de estrutura do ML

Todas as dependências de estrutura do ML devem ser instaladas no diretório /usr/local/lib/python3.x/site-packages. Para certificar-se de que estão instaladas no diretório correto, é recomendado usar permissões raiz sudo ao instalar as dependências. Os ambientes virtuais não oferecem suporte a testes de qualificação.

nota

Se você estiver testando funções do Lambda executadas com conteinerização (no modo de Contêiner do Greengrass, a criação de symlinks para bibliotecas Python em /usr/local/lib/python3.x não é compatível. Para evitar erros, instale as dependências no diretório correto.

Siga as etapas para instalar as dependências na estrutura de destino:

 

Instalar dependências do Apache MxNet

Os testes de qualificação do IDT para esta estrutura têm as seguintes dependências:

  • Python 3.6 ou Python 3.7.

    nota

    Se estiver usando Python 3.6, você deve criar um symblink de Python 3.7 para binários Python 3.6. Isso configura seu dispositivo para atender ao requisito Python para AWS IoT Greengrass. Por exemplo:

    sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  • Apache MXNet v1.2.1 ou posterior.

  • NumPy. A versão deve ser compatível com a sua versão do MXNet.

Instalar o MXNet

Siga as instruções na documentação do MXNet para instalar o MXNet.

nota

Se o Python 2.x e o Python 3.x estiverem instalados no seu dispositivo, use o Python 3.x nos comandos executados para instalar as dependências.

Validar a instalação do MXNet

Selecione uma das opções a seguir para validar a instalação do MXNet.

Opção 1: usar SSH para o seu dispositivo e executar scripts

  1. SSH para o seu dispositivo.

  2. Execute o script a seguir para verificar se as dependências estão instaladas corretamente.

    sudo python3.7 -c "import mxnet; print(mxnet.__version__)"
    sudo python3.7 -c "import numpy; print(numpy.__version__)"

    A saída imprime o número da versão e o script deve sair sem erro.

Opção 2: executar o teste de dependência de IDT

  1. Certifique-se de que device.json esteja configurado para qualificação de ML. Para obter mais informações, consulte Configurar device.json para qualificação de ML.

  2. Execute o teste de dependências para a estrutura.

    devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id mxnet_dependency_check

    O resumo do teste exibe um resultado PASSED para mldependencies.

 

Instalar dependências do TensorFlow

Os testes de qualificação do IDT para esta estrutura têm as seguintes dependências:

  • Python 3.6 ou Python 3.7.

    nota

    Se estiver usando Python 3.6, você deve criar um symblink de Python 3.7 para binários Python 3.6. Isso configura seu dispositivo para atender ao requisito Python para AWS IoT Greengrass. Por exemplo:

    sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  • TensorFlow 1.x.

Como instalar o TensorFlow

Siga as instruções na documentação do TensorFlow para instalar o TensorFlow 1.x com pip ou da origem.

nota

Se o Python 2.x e o Python 3.x estiverem instalados no seu dispositivo, use o Python 3.x nos comandos executados para instalar as dependências.

Validar a instalação do TensorFlow

Selecione uma das seguintes opções para validar a instalação do TensorFlow.

Opção 1: usar SSH para o seu dispositivo e executar um script

  1. SSH para o seu dispositivo.

  2. Execute o script a seguir para verificar se a dependência está instalada corretamente.

    sudo python3.7 -c "import tensorflow; print(tensorflow.__version__)"

    A saída imprime o número da versão e o script deve sair sem erro.

Opção 2: executar o teste de dependência de IDT

  1. Certifique-se de que device.json esteja configurado para qualificação de ML. Para obter mais informações, consulte Configurar device.json para qualificação de ML.

  2. Execute o teste de dependências para a estrutura.

    devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id tensorflow_dependency_check

    O resumo do teste exibe um resultado PASSED para mldependencies.

 

Instalar dependências de runtime de aprendizado profundo (DLR) do Amazon SageMaker Neo

Os testes de qualificação do IDT para esta estrutura têm as seguintes dependências:

  • Python 3.6 ou Python 3.7.

    nota

    Se estiver usando Python 3.6, você deve criar um symblink de Python 3.7 para binários Python 3.6. Isso configura seu dispositivo para atender ao requisito Python para AWS IoT Greengrass. Por exemplo:

    sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  • DLR do SageMaker Neo.

  • numpy.

Depois de instalar as dependências de teste do DLR, é preciso compilar o modelo.

Instalar o DLR

Siga as instruções na documentação do DLR para instalar o Neo DLR.

nota

Se o Python 2.x e o Python 3.x estiverem instalados no seu dispositivo, use o Python 3.x nos comandos executados para instalar as dependências.

Validar a instalação do DLR

Selecione uma das opções a seguir para validar a instalação do DLR.

Opção 1: usar SSH para o seu dispositivo e executar scripts

  1. SSH para o seu dispositivo.

  2. Execute o script a seguir para verificar se as dependências estão instaladas corretamente.

    sudo python3.7 -c "import dlr; print(dlr.__version__)"
    sudo python3.7 -c "import numpy; print(numpy.__version__)"

    A saída imprime o número da versão e o script deve sair sem erro.

Opção 2: executar o teste de dependência de IDT

  1. Certifique-se de que device.json esteja configurado para qualificação de ML. Para obter mais informações, consulte Configurar device.json para qualificação de ML.

  2. Execute o teste de dependências para a estrutura.

    devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id dlr_dependency_check

    O resumo do teste exibe um resultado PASSED para mldependencies.

Compilar o modelo de DLR

Você deve compilar o modelo de DLR antes de usá-lo para testes de qualificação de ML. Selecione uma das seguintes opções para saber mais detalhes:

Opção 1: use o Amazon SageMaker para compilar o modelo

Siga estas etapas para usar o SageMaker para compilar o modelo de ML fornecido pelo IDT. Este modelo é pré-treinado com Apache MXNet.

  1. Verifique se o dispositivo é compatível com o SageMaker. Para obter mais informações, consulte as opções do dispositivo de destino na Referência de API do Amazon SageMaker. Se, no momento, o seu tipo de dispositivo não for compatível com o SageMaker, siga as etapas em Opção 2: usar o TVM para compilar o modelo de DLR.

    nota

    A execução do teste de DLR com um modelo compilado pelo SageMaker pode demorar 4 ou 5 minutos. Não interrompa o IDT durante esse período.

  2. Faça download do arquivo tarball que contém o modelo MXNet pré-treinado e não compilado para DLR:

  3. Descompacte o tarball. Esse comando gera a seguinte estrutura de diretório.

    O diretório resnet18 contém três arquivos.
  4. Mova o arquivo synset.txt do diretório resnet18 para outro local. Anote o novo local. Posteriormente, copie este arquivo para o diretório do modelo compilado.

  5. Compacte o conteúdo do diretório resnet18.

    tar cvfz model.tar.gz resnet18v1-symbol.json resnet18v1-0000.params
  6. Faça upload do arquivo compactado para um bucket do Amazon S3 em sua Conta da AWS e siga as etapas em Compile um modelo (console) para criar um trabalho de compilação.

    1. Em Configuração de entrada, use os seguintes valores:

      • Em Configuração de dados de entrada, digite {"data": [1, 3, 224, 224]}.

      • Em Estrutura de machine learning, selecione MXNet.

    2. Em Configuração de saída, use os seguintes valores:

      • Em Local de saída do S3, insira o caminho para o bucket do Amazon S3 ou a pasta onde deseja armazenar o modelo compilado.

      • Em Dispositivo de destino, selecione o tipo de dispositivo.

  7. Faça download do modelo compilado do local de saída especificado e descompacte o arquivo.

  8. Copie synset.txt para o diretório do modelo compilado.

  9. Altere o nome do diretório do modelo compilado para resnet18.

    O diretório do modelo compilado deve ter a seguinte estrutura de diretório.

    O diretório do modelo compilado resnet18 contém quatro arquivos.

Opção 2: usar o TVM para compilar o modelo de DLR

Siga estas etapas para usar o TVM para compilar o modelo de ML fornecido pelo IDT. Este modelo é pré-treinado com o Apache MXNet, portanto, é necessário instalar o MXNet no computador ou dispositivo onde o modelo será compilado. Para instalar o MxNet, siga as instruções na documentação do MxNet.

nota

Recomendamos que você compile o modelo no dispositivo de destino. Essa prática é opcional, mas pode ajudar a garantir a compatibilidade e mitigar possíveis problemas.

 

  1. Faça download do arquivo tarball que contém o modelo MXNet pré-treinado e não compilado para DLR:

  2. Descompacte o tarball. Esse comando gera a seguinte estrutura de diretório.

    O diretório resnet18 contém três arquivos.
  3. Siga as instruções na documentação do TVM para criar e instalar o TVM da origem para a sua plataforma.

  4. Depois de criar o TVM, execute a compilação do TVM para o modelo resnet18. As etapas a seguir são baseadas no Quick Start Tutorial for Compiling Deep Learning Models na documentação do TVM.

    1. Abra o arquivo relay_quick_start.py a partir do repositório do TVM clonado.

    2. Atualize o código que define uma rede neural em retransmissão. Você pode usar uma das opções a seguir:

      • Opção 1: usar mxnet.gluon.model_zoo.vision.get_model para obter o módulo e os parâmetros de retransmissão:

        from mxnet.gluon.model_zoo.vision import get_model block = get_model('resnet18_v1', pretrained=True) mod, params = relay.frontend.from_mxnet(block, {"data": data_shape})
      • Opção 2: copiar os seguintes arquivos do modelo não compilado que você baixou na etapa 1 para o mesmo diretório que o arquivo relay_quick_start.py. Esses arquivos contêm o módulo e os parâmetros de retransmissão.

        • resnet18v1-symbol.json

        • resnet18v1-0000.params

    3. Atualize o código que salva e carrega o módulo compilado para usar o código a seguir.

      from tvm.contrib import util path_lib = "deploy_lib.so" # Export the model library based on your device architecture lib.export_library("deploy_lib.so", cc="aarch64-linux-gnu-g++") with open("deploy_graph.json", "w") as fo: fo.write(graph) with open("deploy_param.params", "wb") as fo: fo.write(relay.save_param_dict(params))
    4. Crie o modelo:

      python3 tutorials/relay_quick_start.py --build-dir ./model

      Este comando gera os seguintes arquivos.

      • deploy_graph.json

      • deploy_lib.so

      • deploy_param.params

  5. Copie os arquivos de modelo gerados em um diretório chamado resnet18. Este é o diretório do modelo compilado.

  6. Copie o diretório do modelo compilado para o computador host. Depois, copie o arquivo synset.txt do modelo não compilado que você baixou na etapa 1 para o diretório do modelo compilado.

    O diretório do modelo compilado deve ter a seguinte estrutura de diretório.

    O diretório do modelo compilado resnet18 contém quatro arquivos.

Depois, configure as credenciais da AWS e o arquivo device.json.