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 de dispositivos IoT na cloud, implementação desse modelo para IoT Edge e manutenção e refinação do 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 objetivo principal 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 à aprendizagem automática. 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 satisfazer o caso de utilização.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure 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 um computador com o PowerShell instalado, onde pode executar scripts para configurar uma Máquina Virtual do Azure como máquina de desenvolvimento.

Neste documento, utilizamos o seguinte conjunto de ferramentas:

  • Um hub IoT do Azure para captura de dados

  • O Azure Notebooks 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 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 aplicação fora da 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 conhecimento de 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 ser 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, reunindo toda a sua experiência e aprendendo como uma equipa como as coisas se encaixam.

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 Conference on Prognostics and Health Management (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 o 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 o estado de funcionamento, o controlo e os parâmetros do 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 mais dividido em subconjuntos de preparação e teste. Cada série temporal provém 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 envolvido na criação de um modelo de machine learning específico. Veja, por exemplo:

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

Degradação do motor turbofan por hankroark de utilizador do GitHub.

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 dispositivo 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 dados da máquina 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 dos dados. Estas informações permitem que o algoritmo de machine learning encontre correlações entre os padrões de dados reais do sensor e o tempo de vida restante esperado do motor. Este passo é altamente específico do domínio.

  3. Criar um modelo de machine learning. Com base nos dados preparados, podemos agora experimentar diferentes algoritmos de machine learning e parametrizações para preparar modelos e comparar os resultados entre si.

    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 modelo.

  4. Implemente 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 resultados de análise de devolução. Em seguida, a aplicação do serviço Web é empacotada num contentor do 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. Mantenha e refine 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. Create e implementar módulos de IoT Edge.
  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.