Tutorial: Uma solução completa usando o Azure Machine Learning e o IoT Edge
Aplica-se a: IoT Edge 1.1
Importante
A data de fim do suporte do IoT Edge 1.1 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 o IoT Edge.
Frequentemente, os aplicativos de IoT querem tirar proveito da nuvem inteligente e da borda inteligente. Neste tutorial, orientamos você no treinamento de um modelo de aprendizado de máquina com dados coletados de dispositivos IoT na nuvem, implantando esse modelo no IoT Edge e mantendo e refinando o modelo periodicamente.
Nota
Os conceitos neste conjunto de tutoriais se aplicam a todas as versões do IoT Edge, mas o dispositivo de exemplo que você cria para experimentar o cenário executa o IoT Edge versão 1.1.
O principal objetivo deste tutorial é introduzir o processamento de dados de IoT com aprendizado de máquina, especificamente na borda. Embora toquemos em muitos aspetos de um fluxo de trabalho geral de aprendizado de máquina, este tutorial não pretende ser uma introdução aprofundada ao aprendizado de máquina. Como um caso em questão, não tentamos criar um modelo altamente otimizado para o caso de uso - apenas fazemos o suficiente para ilustrar o processo de criação e uso de um modelo viável para processamento de dados IoT.
Esta seção do tutorial discute:
- Os pré-requisitos para concluir as partes subsequentes do tutorial.
- O público-alvo do tutorial.
- O caso de uso que o tutorial simula.
- O processo geral que o tutorial segue para cumprir o caso de uso.
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, você precisa acessar uma assinatura do Azure na qual você tem direitos para criar recursos. Vários dos serviços usados neste tutorial incorrerão em cobranças do Azure. Se ainda não tiver uma subscrição do Azure, poderá conseguir começar a utilizar uma Conta Gratuita do Azure.
Você também precisa de uma máquina com o PowerShell instalado onde possa executar scripts para configurar uma Máquina Virtual do Azure como sua máquina de desenvolvimento.
Neste documento, utilizamos o seguinte conjunto de ferramentas:
Um hub IoT do Azure para captura de dados
Azure Notebooks como nosso principal front-end para preparação de dados e experimentação de aprendizado de máquina. Executar código Python em um bloco de anotações em um subconjunto dos dados de exemplo é uma ótima maneira de obter uma resposta rápida, iterativa e interativa durante a preparação dos dados. Os blocos de anotações Jupyter também podem ser usados para preparar scripts para execução em escala em um back-end de computação.
Azure Machine Learning como um back-end para aprendizado de máquina em escala e para geração de imagens de aprendizado de máquina. Conduzimos o back-end do Azure Machine Learning usando scripts preparados e testados em blocos de anotações Jupyter.
Azure IoT Edge para aplicação fora da nuvem de uma imagem de aprendizagem automática
Obviamente, existem outras opções disponíveis. Em determinados cenários, por exemplo, o IoT Central pode ser usado como uma alternativa sem código para capturar dados de treinamento inicial de dispositivos IoT.
Público-alvo e funções
Este conjunto de artigos destina-se a programadores sem experiência prévia em desenvolvimento de IoT ou aprendizagem automática. Implantar o aprendizado de máquina na borda requer conhecimento de como conectar uma ampla gama de tecnologias. Portanto, este tutorial cobre todo um cenário de ponta a ponta para demonstrar uma maneira de unir essas tecnologias para uma solução de IoT. Em um ambiente do mundo real, essas tarefas podem ser distribuídas entre várias pessoas com diferentes especializações. Por exemplo, os desenvolvedores se concentrariam no código do dispositivo ou da nuvem, enquanto os cientistas de dados projetavam os modelos de análise. Para permitir que um desenvolvedor individual conclua com sucesso este tutorial, fornecemos orientação suplementar com insights e links para mais informações que esperamos que sejam suficientes para entender o que está sendo feito, bem como por quê.
Alternativamente, você pode se juntar a colegas de trabalho de diferentes funções para seguir o tutorial juntos, trazendo toda a sua experiência para usar, e aprender como uma equipe como as coisas se encaixam.
Em ambos os casos, para ajudar a orientar o(s) leitor(es), cada artigo deste tutorial indica o papel do usuário. Essas funções incluem:
- Desenvolvimento em nuvem (incluindo um desenvolvedor de nuvem trabalhando em uma capacidade de DevOps)
- Análise de dados
Caso de uso: Manutenção preditiva
Baseamos este cenário em um caso de uso apresentado na Conferência de Prognósticos e Gestão em 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 utilizando o C-MAPSS, a versão comercial do software MAPSS (Modular Aero-Propulsion System Simulation). Este software fornece um ambiente flexível de simulação do motor turbofan para simular convenientemente a saúde, o controle e os parâmetros do motor.
Os dados usados neste tutorial são retirados do conjunto de dados de simulação de degradação do motor Turbofan.
A partir do arquivo readme:
Cenário Experimental
Os conjuntos de dados consistem em várias séries temporais multivariadas. Cada conjunto de dados é dividido em subconjuntos de treinamento e teste. Cada série temporal é de um motor diferente - ou seja, os dados podem ser considerados como sendo de uma frota de motores do mesmo tipo. Cada motor arranca com diferentes graus de desgaste inicial e variação de fabrico que é desconhecida para o utilizador. Este desgaste e variação é considerado normal, ou seja, não é considerado uma condição de falha. Existem três configurações operacionais que têm um efeito substancial no desempenho do motor. Essas configurações também estão incluídas nos dados. Os dados estão contaminados com o ruído do sensor.
O motor está funcionando normalmente no início de cada série temporal e desenvolve uma falha em algum momento durante a série. No conjunto de treinamento, a falha cresce em magnitude até a 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 valores reais de Vida Útil Restante (RUL) para os dados de teste.
Como os dados foram publicados para uma competição, várias abordagens para derivar modelos de aprendizado de máquina foram publicadas de forma independente. Descobrimos que estudar exemplos é útil para entender o processo e o raciocínio envolvidos na criação de um modelo específico de aprendizado de máquina. Ver, por exemplo:
Modelo de previsão de falha do motor da aeronave pelo usuário do GitHub jancervenka.
Degradação do motor turbofan pelo usuário do GitHub hankroark.
Processo
A imagem abaixo ilustra os passos aproximados que seguimos neste tutorial:
Coletar dados de treinamento: O processo começa com a coleta de dados de treinamento. 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. Em outros casos, especialmente para cenários de IoT, os dados precisam ser coletados de dispositivos e sensores IoT e armazenados na nuvem.
Supomos que você não tenha uma coleção de motores turbofan, então os arquivos do projeto incluem um simulador de dispositivo simples que envia os dados do dispositivo da NASA para a nuvem.
Prepare os dados. Na maioria dos casos, os dados brutos coletados de dispositivos e sensores exigirão preparação para o aprendizado de máquina. Esta etapa pode envolver limpeza de dados, reformatação de dados ou pré-processamento para injetar informações adicionais que o aprendizado de máquina pode desativar.
Para nossos dados de máquina de motor de avião, a preparação de dados envolve o cálculo de tempos explícitos de tempo até falha para cada ponto de dados na amostra com base nas observações reais nos dados. Essas informações permitem que o algoritmo de aprendizado de máquina encontre correlações entre os padrões de dados reais do sensor e o tempo de vida restante esperado do motor. Esta etapa é altamente específica do domínio.
Crie um modelo de aprendizado de máquina. Com base nos dados preparados, agora podemos experimentar diferentes algoritmos e parametrizações de aprendizado de máquina para treinar modelos e comparar os resultados entre si.
Neste caso, para o teste, comparamos o resultado previsto calculado pelo modelo com o resultado real observado em um conjunto de motores. No Azure Machine Learning, podemos gerenciar as diferentes iterações de modelos que criamos em um registro de modelo.
Implemente o modelo. Uma vez que tenhamos um modelo que satisfaça nossos critérios de sucesso, podemos passar para a implantação. Isso envolve envolver o modelo em um aplicativo de serviço Web que pode ser alimentado com dados usando chamadas REST e resultados de análise de retorno. O aplicativo de serviço Web é então empacotado em um contêiner docker, que, por sua vez, pode ser implantado na nuvem ou como um módulo IoT Edge. Neste exemplo, nos concentramos na implantação no IoT Edge.
Manter e refinar o modelo. Nosso trabalho não é feito depois que o modelo é implantado. Em muitos casos, queremos continuar a recolher dados e carregar periodicamente esses dados para a nuvem. Em seguida, podemos usar esses dados para treinar novamente e refinar nosso modelo, que podemos reimplantar no IoT Edge.
Clean up resources (Limpar recursos)
Este tutorial faz parte de um conjunto onde cada artigo se baseia no trabalho realizado nos anteriores. Aguarde para limpar todos os recursos até concluir o tutorial final.
Próximos passos
Este tutorial está dividido nas seguintes seções:
- Configure sua máquina de desenvolvimento e os serviços do Azure.
- Gere os dados de treinamento para o módulo de aprendizado de máquina.
- Treine e implante o módulo de aprendizado de máquina.
- Configure um dispositivo IoT Edge para atuar como um gateway transparente.
- Crie e implante módulos do IoT Edge.
- Envie dados para o seu dispositivo IoT Edge.
Continue para o próximo artigo para configurar uma máquina de desenvolvimento e provisionar recursos do Azure.