Back-End

23 jul, 2018

Machine Learning e containers

Publicidade

O machine learning faz parte da inteligência artificial, e muitos casos de uso estão aparecendo. Não é à toa que o assunto tem sido bastante citado. Os containers podem oferecer uma ótima maneira de criar e implementar aplicações. O machine learning, o que ele pode fazer pelos aplicativos e como criar utilizando containers.

A inteligência artificial não é nenhuma novidade. Desde os anos 80 as pessoas a utilizam, e o machine learning é uma subcategoria que foca na compreensão de dados utilizando algoritmos e tem mais aplicações práticas.

Aplicações com machine learning usam uma abordagem orientada a dados, onde eles se unem com a capacidade de armazenar petabytes de dados em sistemas simples (tradicionais) e baseados em nuvem, com o poder de aproveitar esses dados para diversos propósitos.

O que temos com o Machine Learning? O machine learning é um tipo de inteligência artificial que usa algoritmos para aprender com base nos dados, aplicam algoritmos que encontram padrões nesses dados e fazem tipos de previsões. Essas previsões podem ser bem simples, como dar recomendações a um comprador, ou tão complexas quanto determinar um modelo de automóvel.

Alguns desenvolvedores estão utilizando o machine learning em produtos wearables para auxiliar na assistência médica. As pessoas têm usado relógios que geram dados todos os dias (frequência cardíaca, passos, calorias e etc), e esses dados são coletados em sistemas de armazenamento em nuvem, onde os usuários acessam suas contas na web para obter relatórios.

Agora vamos colocar o machine learning neste liquidificador: esses wearables tem a capacidade de analisar dados da nossa saúde e dizer para o usuário o que isso significa. Nós também podemos ver o significado lógico dos dados e ter conhecimento a longo prazo com isso.

Ok, mas como assim? Baseado nos dados que aprendemos, os padrões nos levam a esses resultados. (exemplo: a pessoa sabe que tem intolerância a lactose após consumir laticínios algumas vezes e se sentir mal, óbvio que ela vai ao médico atrás de diagnóstico, mas ela aprendeu que laticínios a fazem mal).

Vamos a um exemplo mais profundo: uma pessoa sofre um ataque cardíaco, os sistemas de machine learning estudam o padrão de dados da saúde que ocorreram até esse evento e ensinam outros sistemas para procurar esses padrões. Conforme outros eventos vão ocorrendo, novos padrões são identificados para detectar e prevenir outros eventos ligados a saúde.

Os dados em si não têm muito valor, precisamos aplicar machine learning para obter dados, muitos dados! Gigabytes, petabytes, toda essa quantidade de dados para fornecer padrões e resultados. Assim, o sistema pode obter o conhecimento de milhares de médicos, selecionando esses dados para determinar quais padrões levam a quais resultados. Se implementado de uma forma eficaz, podemos salvar vidas com o auxílio da tecnologia (isso é só um dos milhares de exemplos de negócio).

Os sistemas de machine learning podem considerar muitos pontos de dados passados em tempo real para determinar os “níveis de estoque” mais eficientes para manter ou fazer previsões que analisam os padrões de dados passados, presentes e preditivos.

A sobrecarga dos sistemas de machine learning ainda são enormes, mas temos a opção de colocá-los na nuvem. A AWS, por exemplo, suporta o machine learning com a utilização de algoritmos para ler dados nativos da AWS, como: serviço de banco de dados relacional, “armazém” de dados do Redshift e o serviço de armazenamento simples. A Google oferece o Google Prediction API e a Microsoft os serviços de machine learning do Azure.

O que os containers tem a ver com isso? Vamos combinar as tecnologias de machine learning com os recursos de implantação de containers, onde podemos dar mais utilidade aos nossos sistemas e ainda deixá-los mais compartilháveis.

A capacidade de implantar aplicativos de machine learning como containers e juntar esses containers tem diversas vantagens:

  • Machine learning mais independente: eles podem ser misturados e combinados em qualquer número de plataformas. Como eles existem em contêineres, eles podem operar em um ambiente altamente distribuído e você pode colocar esses contêineres próximos aos dados que os aplicativos estão analisando.
  • A capacidade de expor os serviços de sistemas de aprendizado de máquina que existem dentro de contêineres, como serviços ou microsserviços. Isso permite que aplicativos externos, baseados em contêiner ou não, aproveitem esses serviços a qualquer momento, sem precisar mover o código dentro do aplicativo.
  • Agrupar e agendar o processamento de containers: permite que o aplicativo de machine learning seja dimensionado. Podemos colocar esses sistemas baseados em nuvem que são mais eficientes (dica: é melhor usar um sistema de gerenciamento de containers como o docker swarm).
  • A capacidade de acessar dados usando interfaces bem definidas que lidam com dados complexos usando camadas de abstração simplificadas. Os contêineres possuem mecanismos integrados para acesso a dados externos e distribuídos, para que você possa aproveitar interfaces comuns orientadas a dados que suportam muitos modelos de dados.
  • A capacidade de criar sistemas de machine learning compostos por contêineres funcionando como sub sistemas simple e acoplados. Essa é uma abordagem mais fácil para criar uma arquitetura de aplicativo eficiente, na qual podemos fazer coisas como colocar a volatilidade em seu próprio domínio usando contêineres.

Não tem nada de assustador em nenhuma dessas tecnologias. Ambas são baseadas em padrões de tecnologias do passado. O “desafio” dessas abordagens é que o machine learning é bem recente, o que traz diversas dúvidas desde como começar, até como implementar.

Por onde começar? Espero ter deixado claro como essas tecnologias podem se unir. Eu recomendo fortemente o uso de ferramentas de código aberto, mas existem outras plataformas de machine learning para escolher. No que envolve o machine learning com o uso de containers, acredito que muitas coisas ainda vão evoluir. Me deparei com esse caso na construção de um projeto no qual estou trabalhando e creio que em outros roteiros também possa aparecer.

O objetivo principal é a capacidade de extrair mais valor dos dados e implantar esses sistemas de maneiras mais portáteis e eficientes usando contêineres. A combinação das tecnologias é claramente um tipo 2 + 2 = 5, se estiver disposto a colocar o tempo em suas implementações iniciais. Conforme a análise de dados vai sendo aprimorada, precisaremos de sistemas que vão além de apresentações simples.

Precisamos aprender a lidar com dados com base na experiência (prática mesmo). Um caminho bom é criar sistemas que possam fazer esse trabalho, para que os sistemas aprendam como é feita a coleta das informações, permitindo que automatizam os processos.

Usando machine learning de forma eficaz, você pode salvar vidas – ou apenas reduzir os custos associados de estoque. À medida em que a quantidade de dados que são coletados continua acelerando, a demanda de negócios para colocar processos automatizados em torno desses dados e fazer ter sentido, acelerará.

Uma dica é ver os exemplos do Paco Nathan: