Tutorial: uma solução ponto a ponto com o Azure Machine Learning e IoT Edge

Aplica-se a:sim ícone IoT Edge 1.1

Importante

IoT Edge 1,1 data de fim do suporte foi 13 de dezembro de 2022. Consulte o Ciclo de Vida de Produtos da Microsoft para obter informações sobre como é suportado este produto, serviço, tecnologia ou API. Para obter mais informações sobre como atualizar para a versão mais recente do IoT Edge, consulte Atualizar IoT Edge.

Frequentemente, as aplicações IoT querem tirar partido da cloud inteligente e do edge inteligente. Neste tutorial, vamos orientá-lo ao longo da preparação de um modelo de machine learning com dados recolhidos a partir de dispositivos IoT na cloud, implementando esse modelo para IoT Edge e mantendo e refinando o modelo periodicamente.

Nota

Os conceitos neste conjunto de tutoriais aplicam-se a todas as versões do IoT Edge, mas o dispositivo de exemplo que cria para experimentar o cenário é executado IoT Edge versão 1.1.

O principal objetivo deste tutorial é introduzir o processamento de dados IoT com machine learning, especificamente no edge. Embora toquemos em muitos aspetos de um fluxo de trabalho de machine learning geral, este tutorial não se destina a uma introdução aprofundada ao machine learning. Como um caso em questão, não tentamos criar um modelo altamente otimizado para o caso de utilização . Basta ilustrar o processo de criação e utilização de um modelo viável para o processamento de dados IoT.

Esta secção do tutorial aborda:

  • Os pré-requisitos para concluir as partes subsequentes do tutorial.
  • O público-alvo do tutorial.
  • O caso de utilização que o tutorial simula.
  • O processo geral que o tutorial segue para cumprir o caso de utilização.

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

Para concluir o tutorial, precisa de acesso a uma subscrição do Azure na qual tem direitos para criar recursos. Vários dos serviços utilizados neste tutorial irão incorrer em custos do Azure. Se ainda não tiver uma subscrição do Azure, poderá começar a utilizar uma Conta Gratuita do Azure.

Também precisa de uma máquina com o PowerShell instalado, onde pode executar scripts para configurar uma Máquina Virtual do Azure como a sua máquina de desenvolvimento.

Neste documento, utilizamos o seguinte conjunto de ferramentas:

  • Um hub IoT do Azure para captura de dados

  • Blocos de Notas do Azure como o nosso front-end principal para preparação de dados e experimentação de machine learning. Executar código Python num bloco de notas num subconjunto dos dados de exemplo é uma excelente forma de obter uma reviravolta iterativa e interativa rápida durante a preparação de dados. Os blocos de notas do Jupyter também podem ser utilizados para preparar scripts para serem executados em escala num back-end de computação.

  • O Azure Machine Learning como um back-end para machine learning em escala e para a geração de imagens de machine learning. Conduzimos o back-end do Azure Machine Learning com scripts preparados e testados em blocos de notas do Jupyter.

  • Azure IoT Edge para a aplicação off-cloud de uma imagem de machine learning

Obviamente, existem outras opções disponíveis. Em determinados cenários, por exemplo, o IoT Central pode ser utilizado como uma alternativa sem código para capturar dados de preparação iniciais de dispositivos IoT.

Público-alvo e funções

Este conjunto de artigos destina-se a programadores sem experiência anterior no desenvolvimento de IoT ou machine learning. A implementação de machine learning no edge requer conhecimentos sobre como ligar uma vasta gama de tecnologias. Por conseguinte, este tutorial abrange todo um cenário ponto a ponto para demonstrar uma forma de unir estas tecnologias para uma solução de IoT. Num ambiente real, estas tarefas podem ser distribuídas por várias pessoas com especializações diferentes. Por exemplo, os programadores concentrar-se-iam no código do dispositivo ou da cloud, enquanto os cientistas de dados conceberam os modelos de análise. Para permitir que um programador individual conclua este tutorial com êxito, fornecemos orientações suplementares com informações e ligações para mais informações que esperamos que sejam suficientes para compreender o que está a ser feito, bem como porquê.

Em alternativa, pode juntar-se a colegas de diferentes funções para seguir o tutorial em conjunto, reunir toda a sua experiência e aprender como as coisas se encaixam em equipa.

Em ambos os casos, para ajudar a orientar os leitores, cada artigo neste tutorial indica a função do utilizador. Essas funções incluem:

  • Desenvolvimento na cloud (incluindo um programador de cloud que trabalha numa capacidade de DevOps)
  • Análise de dados

Caso de utilização: Manutenção preditiva

Baseámos este cenário num caso de utilização apresentado na Conferência sobre o Prognóstico e a Gestão de Saúde (PHM08) em 2008. O objetivo é prever a vida útil restante (RUL) de um conjunto de motores de avião turbofan. Estes dados foram gerados com C-MAPSS, a versão comercial do software MAPSS (Modular Aero-Propulsion System Simulation). Este software fornece um ambiente de simulação de motor turbofan flexível para simular convenientemente os parâmetros de estado de funcionamento, controlo e motor.

Os dados utilizados neste tutorial são retirados do conjunto de dados de simulação de degradação do motor Turbofan.

No ficheiro readme:

Cenário Experimental

Os conjuntos de dados consistem em várias séries de tempo multivariadas. Cada conjunto de dados está ainda dividido em subconjunto de preparação e teste. Cada série temporal é de um motor diferente, ou seja, os dados podem ser considerados provenientes de uma frota de motores do mesmo tipo. Cada motor começa com diferentes graus de desgaste inicial e variação de fabrico que é desconhecida para o utilizador. Este desgaste e variação são considerados normais, ou seja, não é considerado uma condição de falha. Existem três definições operacionais que têm um efeito substancial no desempenho do motor. Estas definições também estão incluídas nos dados. Os dados estão contaminados com ruído do sensor.

O motor está a funcionar normalmente no início de cada série temporal e desenvolve uma falha em algum momento durante a série. No conjunto de preparação, a falha aumenta de magnitude até à falha do sistema. No conjunto de testes, a série temporal termina algum tempo antes da falha do sistema. O objetivo da competição é prever o número de ciclos operacionais restantes antes da falha no conjunto de testes, ou seja, o número de ciclos operacionais após o último ciclo em que o motor continuará a funcionar. Também forneceu um vetor de verdadeiros valores de Vida Útil Restante (RUL) para os dados de teste.

Como os dados foram publicados para um concurso, várias abordagens para derivar modelos de machine learning foram publicadas de forma independente. Descobrimos que estudar exemplos é útil para compreender o processo e o raciocínio envolvidos na criação de um modelo de machine learning específico. Veja por exemplo:

Modelo de predição de falhas do motor de aeronaves por jancervenka de utilizador do GitHub.

Degradação do motor turbofan pelo utilizador do GitHub hankroark.

Processo

A imagem abaixo ilustra os passos difíceis que seguimos neste tutorial:

Diagrama de arquitetura para passos de processo

  1. Recolher dados de preparação: o processo começa por recolher dados de preparação. Em alguns casos, os dados já foram recolhidos e estão disponíveis numa base de dados ou sob a forma de ficheiros de dados. Noutros casos, especialmente em cenários de IoT, os dados têm de ser recolhidos a partir de dispositivos e sensores IoT e armazenados na cloud.

    Partimos do princípio de que não tem uma coleção de motores turbofan, pelo que os ficheiros do projeto incluem um simulador de dispositivos simples que envia os dados do dispositivo da NASA para a cloud.

  2. Preparar dados. Na maioria dos casos, os dados não processados recolhidos a partir de dispositivos e sensores exigirão preparação para machine learning. Este passo pode envolver a limpeza de dados, reformatação de dados ou pré-processamento para injetar informações adicionais de machine learning.

    Para os nossos dados do computador do motor de avião, a preparação de dados envolve calcular tempos de tempo para falhas explícitos para cada ponto de dados na amostra com base nas observações reais nos dados. Estas informações permitem que o algoritmo de machine learning encontre correlações entre padrões de dados de sensores reais e o tempo de vida restante esperado do motor. Este passo é altamente específico do domínio.

  3. Crie um modelo de machine learning. Com base nos dados preparados, podemos agora experimentar diferentes algoritmos e parâmetros de machine learning para preparar modelos e comparar os resultados uns com os outros.

    Neste caso, para testes, comparamos o resultado previsto calculado pelo modelo com o resultado real observado num conjunto de motores. No Azure Machine Learning, podemos gerir as diferentes iterações de modelos que criamos num registo de modelos.

  4. Implementar o modelo. Assim que tivermos um modelo que satisfaça os nossos critérios de sucesso, podemos avançar para a implementação. Isto envolve encapsular o modelo numa aplicação de serviço Web que pode ser alimentada com dados através de chamadas REST e devolver resultados de análise. Em seguida, a aplicação de serviço Web é empacotada num contentor docker, que por sua vez pode ser implementado na cloud ou como um módulo de IoT Edge. Neste exemplo, focamo-nos na implementação para IoT Edge.

  5. Manter e refinar o modelo. O nosso trabalho não é feito depois de o modelo ser implementado. Em muitos casos, queremos continuar a recolher dados e carregar periodicamente esses dados para a cloud. Em seguida, podemos utilizar estes dados para voltar a preparar e refinar o nosso modelo, que depois podemos reimplementar para IoT Edge.

Limpar os recursos

Este tutorial faz parte de um conjunto em que cada artigo baseia-se no trabalho realizado nos anteriores. Aguarde para limpar todos os recursos até concluir o tutorial final.

Passos seguintes

Este tutorial está dividido nas seguintes secções:

  1. Configure o computador de desenvolvimento e os serviços do Azure.
  2. Gere os dados de preparação para o módulo de machine learning.
  3. Preparar e implementar o módulo de machine learning.
  4. Configure um dispositivo IoT Edge para funcionar como um gateway transparente.
  5. Criar e implementar IoT Edge módulos.
  6. Envie dados para o seu dispositivo IoT Edge.

Avance para o artigo seguinte para configurar uma máquina de desenvolvimento e aprovisionar recursos do Azure.