Executar a inferência de machine learning - 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á.

Executar a inferência de machine learning

Esse atributo está disponível para o AWS IoT Greengrass Core v1.6 ou posterior.

Com o AWS IoT Greengrass, você pode realizar a inferência de machine learning (ML) localmente nos dados gerados localmente usando modelos treinados na nuvem. Você se beneficia da baixa latência e da redução de custos na execução da inferência local, e ainda aproveita a capacidade de computação em nuvem para modelos de treinamento e processamento complexo.

Para começar a realizar a inferência local, consulte Como configurar a inferência de machine learning usando o AWS Management Console.

Como a inferência de ML do AWS IoT Greengrass funciona

Você pode treinar seus modelos de inferência em qualquer lugar, implantá-los localmente como recursos de machine learning em um grupo do Greengrass e, em seguida, acessá-los a partir das funções do Lambda do Greengrass. Por exemplo, você pode criar e treinar modelos de deep learning no SageMaker e implantá-los no núcleo do Greengrass. Em seguida, suas funções do Lambda poderão usar os modelos locais para realizar inferências nos dispositivos conectados e enviar novos dados de treinamento de volta para a nuvem.

O diagrama a seguir mostra o fluxo de trabalho de inferência de ML do AWS IoT Greengrass.

Componentes do fluxo de trabalho de machine learning e o fluxo de informações entre o dispositivo de núcleo, o serviço do AWS IoT Greengrass e os modelos treinados na nuvem.

A inferência de ML do AWS IoT Greengrass simplifica cada etapa do fluxo de trabalho do ML, incluindo:

  • Criação e implantação de protótipos de estrutura do ML.

  • Acesso aos modelos treinados em nuvem e implementação em dispositivos de núcleo do Greengrass.

  • Criação de aplicativos de inferência que podem acessar aceleradores de hardware (por exemplo, GPUs e FPGAs) como recursos locais.

Recursos de machine learning

Recursos de machine learning representam modelos de inferência treinados em nuvem que são implantados em um núcleo AWS IoT Greengrass. Para implantar recursos de machine learning, primeiro adicione os recursos a um grupo do Greengrass e defina como as funções do Lambda no grupo poderão acessá-los. Durante a implantação do grupo, o AWS IoT Greengrass recupera os pacotes do modelo de origem da nuvem e os extrai para diretórios dentro do namespace do runtime. Em seguida, as funções do Lambda do Greengrass usam os modelos implantados localmente para realizar a inferência.

Para atualizar um modelo implantado localmente, primeiro atualize o modelo de origem (na nuvem) que corresponde ao recurso de machine learning e, em seguida, implemente o grupo. Durante a implantação, o AWS IoT Greengrass verifica se há alterações na origem. Se forem detectadas alterações, o AWS IoT Greengrass atualiza o modelo local.

Fontes de modelo compatíveis

O AWS IoT Greengrass é compatível com origens de modelo do SageMaker e do Amazon S3 para recursos de machine learning.

Os requisitos a seguir se aplicam a fontes de modelo:

  • Os buckets do S3 que armazenam suas fontes de modelo do SageMaker e do Amazon S3 não devem ser criptografadas usando SSE-C. Para depósitos que usam criptografia do lado do servidor, a inferência ML do AWS IoT Greengrass só oferece suporte às opções de criptografia SSE-S3 ou SSE-KMS no momento. Para obter mais informações sobre as opções criptografia no lado do servidor, consulte Protegendo dados usando criptografia no lado do servidor no Guia do usuário do Amazon Simple Storage Service.

  • Os nomes dos buckets do S3 que armazenam as origens de modelo do SageMaker e do Amazon S3 não devem incluir pontos (.). Para obter mais informações, consulte a regra sobre como usar buckets hospedados virtualmente com SSL em Regras para nomenclatura de buckets no Guia do usuário do Amazon Simple Storage Service.

  • O suporte para a Região da AWS no nível de serviço deve estar disponível para o AWS IoT Greengrass e o SageMaker. Atualmente, o AWS IoT Greengrass oferece suporte a modelos do SageMaker nas seguintes regiões:

    • Leste dos EUA (Ohio)

    • Leste dos EUA (N. da Virgínia)

    • Oeste dos EUA (Oregon)

    • Asia Pacific (Mumbai)

    • Ásia-Pacífico (Seul)

    • Ásia-Pacífico (Singapura)

    • Ásia-Pacífico (Sydney)

    • Ásia-Pacífico (Tóquio)

    • Europa (Frankfurt)

    • Europa (Irlanda)

    • Europa (Londres)

  • O AWS IoT Greengrass precisa ter permissão read para a fonte do modelo, conforme descrito nas seções a seguir.

SageMaker

O AWS IoT Greengrass é compatível com modelos salvos como trabalhos de treinamento do SageMaker. O SageMaker é um serviço de ML totalmente gerenciado que pode ser usado para criar e treinar modelos usando algoritmos integrados ou personalizados. Para obter mais informações, consulte O que é o SageMaker? no Guia do desenvolvedor do SageMaker.

Se você configurou seu ambiente do SageMaker criando um bucket cujo nome contém sagemaker, o AWS IoT Greengrass terá permissão suficiente para acessar seus trabalhos de treinamento do SageMaker. A política gerenciada AWSGreengrassResourceAccessRolePolicy permite o acesso a buckets cujo nome contém a string sagemaker. Esta política é anexada ao perfil de serviço do Greengrass.

Caso contrário, você deve conceder ao AWS IoT Greengrass a permissão read para o bucket onde seu trabalho de treinamento está armazenado. Para fazer isso, incorpore a seguinte política em linha no perfil de serviço. Você pode listar vários ARNs do bucket.

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

O AWS IoT Greengrass é compatível com modelos armazenados no Amazon S3 como arquivos tar.gz ou .zip.

Para habilitar o AWS IoT Greengrass para acessar modelos armazenados nos buckets do Amazon S3, você precisa conceder ao AWS IoT Greengrass permissão read para acessar os buckets realizando uma das seguintes ações:

  • Armazene seu modelo em um recipiente cujo nome contém greengrass.

    A política gerenciada AWSGreengrassResourceAccessRolePolicy permite o acesso a buckets cujo nome contém a string greengrass. Esta política é anexada ao perfil de serviço do Greengrass.

     

  • Incorpore uma política inline no perfil de serviço do Greengrass.

    Se o nome do seu intervalo não contiver greengrass, adicione a seguinte política inline ao perfil de serviço. Você pode listar vários ARNs do bucket.

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

    Para mais informações, consulte Incorporando políticas inline no Guia do usuário do IAM.

Requisitos

Os requisitos a seguir se aplicam para criar e usar recursos de machine learning:

  • Você deve estar usando o AWS IoT Greengrass Core v1.6 ou posterior.

  • As funções do Lambda definidas pela usuário podem realizar operações read ou read and write no recurso. Permissões para outras operações não estão disponíveis. O modo de conteinerização das funções afiliadas do Lambda determina as permissões de acesso são definidas. Para obter mais informações, consulte Acesse os recursos de machine learning das funções do Lambda.

  • Você precisa fornecer o caminho completo do recurso no sistema operacional do dispositivo de núcleo.

  • Um nome de recurso ou ID tem um comprimento máximo de 128 caracteres e deve usar o padrão [a-zA-Z0-9:_-]+.

Tempos de execução e bibliotecas para inferência de ML

Você pode usar os seguintes tempos de execução de ML e bibliotecas com o AWS IoT Greengrass.

Esses tempos de execução e bibliotecas podem ser instalados nas plataformas NVIDIA Jetson TX2, Intel Atom e Raspberry Pi. Para baixar as informações, consulte Bibliotecas e tempos de execução de machine learning compatíveis. Você pode instalá-los diretamente no dispositivo principal.

Leia as seguintes informações sobre compatibilidade e limitações.

Runtime de aprendizado profundo do SageMaker Neo

Você pode usar o runtime de aprendizado profundo (DLR) do SageMaker Neo para realizar inferência com modelos de machine learning otimizados nos dispositivos do AWS IoT Greengrass. Esses modelos são otimizados usando o compilador de aprendizado profundo (DLC) do SageMaker Neo para acelerar a previsão de inferência de machine learning. Para obter mais informações sobre o modelo de otimização no SageMaker, consulte a Documentação do SageMaker Neo.

nota

No momento, é possível otimizar modelos de machine learning usando o compilador de aprendizado profundo do Neo somente em Regiões específicas da Amazon Web Services. No entanto, você pode usar o runtime de aprendizado profundo do Neo com modelos otimizados em cada Região da AWS com a qual o núcleo AWS IoT Greengrass é compatível. Para obter informações, consulte Como configurar a inferência otimizada de Machine Learning.

Versionamento do MXNet

O Apache MXNet atualmente não garante compatibilidade com versões futuras, portanto, os modelos que você treina usando versões posteriores da estrutura podem não funcionar corretamente em versões anteriores da estrutura. Para evitar conflitos entre os estágios de treinamento de modelo e a veiculação de modelo e fornecer uma experiência completa e consistente, use a mesma versão de estrutura do MXNet em ambos os estágios.

MXNet no Raspberry Pi

As funções do Lambda do Greengrass que acessam modelos locais do MXNet devem definir a seguinte variável de ambiente:

MXNET_ENGINE_TYPE=NativeEngine

É possível definir a variável de ambiente no código da função ou adicioná-la à configuração específica do grupo da função. Para um exemplo que a adiciona como uma configuração, consulte esta etapa.

nota

Para uso geral da estrutura do MXNet, como executar um exemplo de código de terceiros, a variável de ambiente deve ser configurada no Raspberry Pi.

Limitações de fornecimento do modelo TensorFlow no Raspberry Pi

As recomendações a seguir para melhorar os resultados de inferência são baseadas nos nossos testes com as bibliotecas do TensorFlow 32-bit Arm na plataforma Raspberry Pi. Estas recomendações são destinadas apenas para usuários avançados, sem garantias de qualquer tipo.

  • Modelos treinados usando o formato de ponto de verificação deve ser "congelado" para o formato de buffer de protocolo antes do fornecimento. Por exemplo, consulte Biblioteca de modelos de classificação de imagem TensorFlow-Slim.

  • Não use as bibliotecas TF-Estimator e TF-Slim no código de treinamento nem no de inferência. Em vez disso, use o arquivo .pb padrão de carregamento do modelo mostrado no exemplo a seguir.

    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 obter mais informações sobre plataformas suportadas no TensorFlow, consulte Instalar o TensorFlow na documentação do TensorFlow.