Eu falei com líderes de pensamento em várias grandes corporações que abrangem várias indústrias, como médicos, utilitários, comunicações, transportes, varejo e entretenimento. Todos estavam pensando o que eles podiam e deveriam fazer com aprendizado profundo e inteligência artificial. Eles são todos impulsionados pelo que viram em projetos bem publicitados de líderes de software bem conhecidos como Facebook, Alphabet, Amazon, IBM, Apple e Microsoft. Eles estão começando a construir ambientes baseados em GPU para serem executados em escala. Eu tenho recomendado que todos eles adicionem esses servidores ricos em GPU aos seus agendas Hadoop existentes para que eles possam aproveitar a infraestrutura de nível de produção existente no local. Embora TensorFlow certamente não seja a única opção, é a primeira que é mencionada por todos os quais eu falo. A pergunta que eles sempre perguntam é: “Como uso GPUs e TensorFlow contra o meu lago de dados Hadoop existente e aproveito os dados e o poder de processamento já em meus centros de dados e ambientes em nuvem?” Eles querem saber como treinar, como classificar em escala e como configurar pipelines de aprendizado profundo enquanto utilizam os lagos de dados existentes e a grande infraestrutura de dados.
Então, por que TensorFlow? TensorFlow é uma biblioteca conhecida de código aberto para aprendizado profundo desenvolvido pelo Google. Está agora na versão 1.3 e é executado em um grande número de plataformas usadas por negócios, desde dispositivos móveis até desktop, dispositivos embutidos, carros, estações de trabalho especializadas, para clusters distribuídos de servidores corporativos na nuvem e no local. Essa comunidade de ubiquidade, abertura e grande tem pressionado o TensorFlow na empresa para resolver aplicativos do mundo real, como análise de imagens, geração de dados, processamento de linguagem natural, chatbots inteligentes, robótica e muito mais. Para corporações de todos os tipos e tamanhos, os casos de uso que se encaixam bem com TensorFlow incluem:
Para desenvolvedores corporativos, o TensorFlow permite o desenvolvimento em linguagens familiares como Java, Python, C e Go. O TensorFlow também está sendo executado em telefones Android, permitindo que os modelos de aprendizagem profunda sejam utilizados em contextos móveis, casando-o com a miríade de sensores de smartphones modernos.
As corporações que já adotaram dados importantes têm os casos de uso, idiomas disponíveis, dados, membros da equipe e projetos para aprender e começar.
O primeiro passo é identificar um dos casos de uso que se encaixam na sua empresa. Para uma empresa que possui uma grande quantidade de ativos físicos que exigem manutenção, um bom caso de uso é detectar possíveis problemas e falhas antes de se tornarem um problema. Este é um caso de uso fácil de entender, potencialmente economizando grandes somas de dinheiro e melhorando a eficiência e a segurança.
O segundo passo é desenvolver um plano para um projeto piloto básico. Você precisará adquirir alguns pedaços de hardware e uma equipe com um engenheiro de dados e alguém familiarizado com o Linux e a experiência básica do dispositivo.
Esta equipe piloto pode começar facilmente com uma câmera Raspberry Pi acessível e uma placa Raspberry Pi, assumindo que a câmera atenda aos requisitos de resolução deles. Eles precisarão adquirir o hardware, construir uma imagem do SO Raspberry Pi e instalar uma série de bibliotecas de código aberto. Este processo está bem documentado aqui .
O primeiro teste deste projeto seria enviar imagens da câmera em intervalos regulares, analisados com reconhecimento de imagem e enviar os dados e imagens resultantes através do Apache MiNiFi para servidores em nuvem para análises e aprendizado preditivos adicionais. A combinação de MiNiFi e TensorFlow é suficientemente flexível para que a classificação das imagens através de um modelo existente possa ser feita diretamente no dispositivo. Este exemplo está documentado aqui no Hortonworks e utiliza OpenCV, TensorFlow, Python, MiNiFi e NiFi.
Depois de obter as imagens e os resultados do Tensorflow, agora você pode passar para o próximo passo, que é treinar seus modelos para entender o seu conjunto de dados. A equipe precisará capturar imagens de bom estado em diferentes condições para cada equipamento utilizado no piloto. Eu recomendo capturar essas imagens em diferentes épocas do ano e em diferentes ângulos. Também recomendo usar o Apache NiFi para ingerir essas imagens de treinamento, encolhê-las para um tamanho padrão e convertê-las em preto e branco, a menos que a cor tenha um significado especial para seus dispositivos. Isso pode ser realizado usando os processadores NiFi incorporados: ListFiles, ResizeImage e um script Python usando a imagem de scikit OpenCVor.
A equipe também precisará obter imagens de equipamentos danificados, defeituosos, defeituosos ou anormais conhecidos. Depois de ter estes, você pode construir e treinar seus modelos personalizados. Você deve testá-los em um grande cluster YARN equipado com GPUs. Para que a TensorFlow utilize GPUs, você precisará instalar a versão do fluxo de tensão, bem como as bibliotecas necessárias ao seu GPU. Para a NVidia, isso significa que você precisará instalar e configurar o CUDA. Você pode precisar investir em uma série de GPUs decentes para treinamento inicial. O treinamento pode ser executado em infra-estrutura interna ou utilizando uma das nuvens disponíveis que oferecem GPUs. Este é o passo mais intenso e, dependendo do tamanho das imagens, do número de elementos de dados e da precisão necessária, esta etapa pode levar horas, dias ou semanas; então espere tempo para isso. Isso também pode ser executado várias vezes devido a erros ou ajustes de parâmetros ou dados.
Depois de ter esses modelos atualizados, eles podem ser implantados em seus dispositivos remotos para serem executados. Os dispositivos remotos não precisam do poder de processamento dos servidores que estão fazendo o treinamento. Certamente, existem casos em que novos dispositivos GPU multicore disponíveis podem ser utilizados para lidar com processamento mais rápido e mais câmeras. Isso exigiria a análise do meio ambiente, o custo do equipamento, os requisitos para o tempo e outros fatores relacionados ao seu caso de uso específico. Se isso for para um veículo, um drone ou um robô, investir em melhor equipamento valerá a pena. Não coloque o hardware inicial em um veículo caro e suponha que ele funcionará de forma excelente. Você também pode precisar investir em versões industriais desses dispositivos para trabalhar em ambientes com maiores intervalos de temperatura, tempos de funcionamento mais longos, vibrações ou outras condições mais difíceis.
Uma das razões pelas quais eu recomendo este caso de uso é que a maior parte do trabalho já está completa. Existem exemplos bem documentados deste disponível no DZone para você começar. As ferramentas necessárias para ingerir, processar, transformar, treinar e armazenar são as mesmas que você iniciará.
TensorFlow e Apache NiFi estão agrupados e podem ser dimensionados para uma grande quantidade de fluxos simultâneos em tempo real. Isso oferece um ambiente compatível com produção pronto para executar esses milhões de operações de aprendizado de transmissão contínua. Além disso, executando TensorFlow diretamente nos pontos de borda, você pode escalar facilmente à medida que você adiciona novos dispositivos e aponta para sua rede. Você também pode mudar facilmente dispositivos únicos, grupos de dispositivos ou todos os seus dispositivos para o processamento remotamente sem alterar o sistema, os fluxos ou os padrões. Um ambiente misto onde TensorFlow vive nas bordas, em vários centros de coleta, e nos centros de dados fazem sentido. Para certos casos de uso, como treinamento, você pode querer investir em recursos temporários de nuvem que são pesados em GPU para diminuir os tempos de treinamento. Google, Amazon e Microsoft oferecem bons recursos GPU on-demand para esses casos de uso transitório. O Google, sendo o criador inicial do TensorFlow, tem uma experiência realmente boa em executar o TensorFlow e algum hardware interessante para executá-lo.
Eu recomendo usar Apache NiFi, Apache MiNiFi, TensorFlow, OpenCV, Python e Spark como parte de seu fluxo de conhecimento de inteligência artificial. Você estará utilizando ferramentas poderosas e bem-consideradas de código aberto com comunidades saudáveis que melhorarão continuamente. Esses projetos ganham recursos, desempenho e exemplos em um ritmo surpreendente. É hora de a sua organização se juntar à comunidade utilizando primeiro essas ferramentas e depois contribuindo de volta.