Demonstração: teste e visualização de solicitações pull com Signadot
24 de janeiro de 2024Simule o comportamento do cluster Kubernetes com SimKube
24 de janeiro de 2024É bem sabido que pássaros e morcegos ameaçados às vezes são mortos por turbinas eólicas. O que não se sabe é com que frequência isso acontece, especialmente no exterior. Um estudo piloto da Western EcoSystems Technology (WEST) mostra como os algoritmos de aprendizado de máquina (ML) podem ser aproveitados na borda com o Docker para resolver esse problema.
O desafio é significativo. As turbinas eólicas offshore são remotas, sem conectividade com a Internet porque são remotas, e o hardware para qualquer solução deve ser capaz de resistir a condições extremas, explicou Lewis Hein, analista de programação da WEST. Ele apresentou o projeto na DockerCon deste ano em Los Angeles. Embora a WEST tenha executado o projeto, ele foi financiado por uma doação do Departamento de Energia dos EUA.
Até agora, a tarefa de contar as colisões de pássaros e morcegos foi resolvida manualmente, fazendo com que alguém andasse ao redor da turbina eólica para contar os corpos. A tarefa pode informar como os parques eólicos são gerenciados, disse ele – mas caminhar pelo campo não é possível para turbinas eólicas offshore.
“Em geral, a energia eólica emergiu como uma venda de energia com mais vantagens e menos desvantagens do que muitas das nossas outras fontes de energia”, disse Hein. “Dito isto, a energia eólica não é perfeita e precisamos de formas de gerir essas imperfeições. Precisa ser monitorado cuidadosamente para mitigar o perigo para os animais voadores…” que são protegidos pela Lei de Espécies Ameaçadas ou por leis estaduais.
O problema no limite
O primeiro desafio foi a conectividade. As turbinas eólicas não estão conectadas à Internet, em parte porque são remotas. Mas também fazem parte da infra-estrutura energética, por isso há muitas agências reguladoras ansiosas por dizer que não é possível ligar turbinas eólicas à Internet, disse Jean.
“Isso significa que podemos não ter conectividade, e não ter conectividade significa que precisamos processar todos os nossos dados no mesmo local onde coletamos todos os nossos dados”, disse ele.
O monitoramento de colisões requer muitas câmeras por turbina para obter uma boa cobertura das pás à medida que elas se movem. Somente o feed de vídeo pode significar alguns 100 gigabytes de dados por dia – o que leva ao segundo desafio: não há para onde enviar esses dados.
“Se você tentasse fazer algo ingênuo e simplesmente armazenar todos os dados em discos rígidos na turbina, você se depararia com outro problema: você não pode necessariamente chegar lá por meses a fio”, explicou Hein. “E discos rígidos de um terabyte suficientes para armazenar essa quantidade de dados durante alguns meses seriam uma pilha ridiculamente grande de discos rígidos.”
Isso deixa uma opção: uma espécie de algoritmo de compressão usando um sistema de visão computacional que analisa os dados transmitidos em tempo real. Para conseguir isso, o hardware tem algumas restrições que precisa seguir: Deve funcionar de forma confiável e sem supervisão por até oito meses, pelo menos, porque os trabalhadores não podem verificá-lo com mais frequência. E ela precisa funcionar em tempo real e ser bastante fácil de configurar porque seriam os trabalhadores da turbina que a configurariam devido às restrições de treinamento necessárias até mesmo para ir até o local da turbina.
“Agora, essas pessoas não necessariamente entendem nosso sistema, nem deveria ser esperado que o fizessem”, disse ele. “Isso significava que poderíamos pegar nosso computador e fazer uma pré-imagem com todos os arquivos, contêineres Docker e imagens de que precisávamos, e entregá-lo a essas pessoas.”
Arquitetura de microsserviços para a vitória
A equipe optou por ter um dispositivo de ponta que endurecesse o máximo possível e o tornasse o mais confiável possível. Em seguida, eles implantaram uma arquitetura de microsserviços com cada microsserviço em um contêiner Docker separado.
“Isso nos permitiu desenvolver todos esses microsserviços com diferentes equipes que são especialistas nesses domínios específicos, como nossa equipe de aprendizado de máquina poderia desenvolver o serviço que fazia inferência e nossa (equipe) de desenvolvimento para desenvolver serviços com coisas como gerenciamento de dados de atendimento, por meio da interação com as câmeras e aquisição de dados”, disse ele. “Esta foi uma das nossas primeiras dicas de que o Docker seria realmente bom para isso.”
A equipe do projeto percebeu que poderia simplesmente concordar com os contratos de interface nos limites dos microsserviços e garantir que a outra equipe soubesse o que era esperado deles e então cada um poderia trabalhar em seu mundo em contêineres.
“Isso também nos permitiu testar nossos próprios serviços e ter alguma confiança de que esses testes seriam significativos para a confiabilidade no ambiente de produção”, disse ele. “Além disso, para instalação, como poderíamos hospedar no hub Docker, isso tornou a instalação em novo hardware ou o teste de hardware tão simples quanto executar uma chamada Docker.”
Eles coordenam todos os serviços em um arquivo Docker Compose que foi pré-instalado na máquina e configurado para ser executado quando o hardware for conectado.
“O processo de instalação, depois que nossos contêineres foram construídos e hospedados, foi tão fácil quanto extrair as imagens do contêiner, obter dados de teste e executar rapidamente o Docker Compose para validar a instalação”, disse ele.
O Docker também ajudou a equipe a acompanhar o quartel de dados da solução criada, permitindo-lhes usar algumas soluções testadas em batalha, como Triton e a pilha NVIDIA, acrescentou. Embora fosse possível fazer isso sem o Docker, teria sido muito doloroso, disse ele, especialmente se as dependências de uma parte começassem a entrar em conflito com as dependências de outra parte.
“Além disso, a natureza desses tipos de projetos é que, especialmente no momento dos testes, você adiciona e subtrai sensores e altera sua carga de trabalho”, disse ele. “Ter uma arquitetura de microsserviços nos permitiu escalar para atender à demanda apenas adicionando novos contêineres Docker ou desativando contêineres Docker que não usávamos.”
O dispositivo de borda precisava ser capaz de inicializar assim que fosse conectado, sem supervisão adicional, mas há câmeras e switches de rede que também precisam ser conectados e configurados. Então, eles registraram seu Docker Compose como um serviço systemd e usaram o sistema DOT para iniciar o Docker Compose em um horário especificado.
“Além disso, queríamos fazer verificações de integridade para garantir que nenhum serviço fosse iniciado antes que o hardware associado estivesse pronto e, novamente, o Docker era incrivelmente poderoso para isso”, disse ele ao público. “Por causa das verificações de integridade disponíveis no Docker Compose, pudemos construir um contêiner Docker cuja função exclusiva era verificar uma peça de hardware dedicada e relatar a integridade quando o hardware estivesse pronto.”
Docker resolve problemas piloto
O estudo piloto que realizaram foi baseado em terra, em parte porque tinham acesso a uma turbina eólica terrestre na Universidade de Minnesota e também porque precisavam ser capazes de solucionar problemas caso encontrassem problemas. Eles também queriam poder verificar os resultados com o antigo método de caminhada manual.
“Outra grande vitória do Docker neste projeto ocorreu cerca de uma semana após nossa implantação inicial (quando) descobrimos que algumas de nossas câmeras, que deveriam salvar dados com uma programação, na verdade não estavam salvando dados”, ele disse . “Quais foram (as) razões – nunca descobrimos, porque era fácil pegar um arquivo Docker, ativar algum streaming RTSP, que é um protocolo muito padrão usado para câmeras de segurança, e após a implantação, era fácil apenas empacotar criar esse novo microsserviço, enviá-lo e integrá-lo ao nosso sistema.”
O projeto também encontrou problemas de consumo de energia. O consumo de energia do dispositivo de ponta começou a disparar aleatoriamente a ponto de o dispositivo travar.
“Dissemos na época que ela havia aderido à IoT, sendo essa a internet das torradas”, brincou Hein. “Então, alerta de spoiler, foi muito mais fácil do que pensávamos que seria, obrigado novamente ao Docker, porque colocamos tanto esforço em um fluxo de trabalho em contêineres e em uma implantação fácil que foi realmente muito fácil configurar nosso novo dispositivo de ponta.”
Eles adquiriram novo hardware, instalaram alguns drivers de GPU, o que provavelmente foi a parte mais difícil, acrescentou ele, depois copiaram os arquivos systemd e Docker Compose e, em seguida, digitaram o Docker compose-up pela conexão SSH.
“Embora isso certamente não tenha sido bem-vindo no meio de uma implantação, eu realmente gostaria de destacar que isso é tão bom quanto uma reimplantação surpresa pode ser, e isso se deve muito ao fato de que todos os nossos aplicativos foram conteinerizados”, ele disse. “Esses contêineres continham todas as bibliotecas necessárias, todas as dependências, sem que precisássemos pensar nisso. Bem, tivemos que pensar sobre isso, mas não tivemos que colocar manualmente todos aqueles patos em uma fileira, eles estavam automaticamente em uma fileira graças ao Docker.”
Os resultados do piloto
O sistema funcionou sem supervisão por aproximadamente seis semanas antes do término do estudo. A única coisa que fizeram durante esse período foi examinar os logs do sistema para garantir que o sistema estava funcionando.
“Se estivesse em uma turbina offshore sem conectividade, teria feito seu trabalho perfeitamente durante esse período”, disse Hein. “Este estudo analisou em tempo real mais de 6.000 horas de vídeo e, em tempo real, classificou vídeos relevantes de vídeos não relevantes, alcançando um fator de taxa de compressão de dados de cerca de 10. E nossos algoritmos detectaram diversas colisões.”
Na verdade, pode ter detectado mais uma colisão do que os contadores manuais, acrescentou. A Western EcoSystems Technology está agora à procura de empresas de turbinas eólicas dispostas a implantar a solução offshore.
“Modelos de Machine Learning… para fazer a diferença e ter um impacto positivo no mundo, eles precisam interagir com o mundo e essa interação precisa acontecer em locais que podem não ser convenientes para um desenvolvedor, eles podem não ter conectividade “, disse Hein. “Podemos levar essas tecnologias a novos lugares e resolver novos problemas e com um nível de qualidade e de implantação, velocidade e precisão que antes eram inatingíveis, graças ao poder de combinar ML com Docker.”
A postagem Docker at the Edge: como o aprendizado de máquina transformou a tarefa de aves apareceu pela primeira vez em The New Stack.