Desenvolvimento

23 out, 2018

Entregando projetos de Machine Learning com Marvin-AI – Parte 01

100 visualizações
Publicidade

E ai, pessoal! Tudo bem?

Depois de algum tempo sem novidades, quero mostrar o projeto em que estou trabalhando: o Marvin AI – um projeto open source para ajudar no desenvolvimento e entrega de modelos de machine learning.

Se você já teve problemas durante a criação ou no deploy de um projeto de aprendizado de máquina, esse artigo é pra você!

Recentemente comecei a trabalhar na B2W Digital (dona dos sites Submarino, Americanas, Shoptime e etc), em um projeto open source que tem como objetivo ajudar cientistas de dados a desenvolver e entregar modelos de M.L (machine learning) de forma rápida e robusta. A ideia aqui é apresentar o projeto e mostrar como é fácil começar!

Marvin?

Sim, eu sei, a escolha do nome foi ótima! Pra quem não pegou, o nome e mascote do projeto foram inspirados no Marvin do Guia do Mochileiro das Galaxias – mas não só nele. A outra inspiração foi Marvin Minsky, renomado pesquisador na área de inteligência artificial.

O projeto Marvin surgiu na B2W em 2016, das necessidades e dificuldades encontradas em praticamente todos os projetos de aprendizado de máquina. Essas necessidades/dificuldades são diversas e variam de acordo com o projeto, mas podemos dar alguns exemplos:

  • Falta de um padrão que organize o projeto;
  • Dificuldade em compartilhar e reproduzir os resultados;
  • Ausência quase completa de ferramentas e padrões para a entrega (deploy) do projeto;
  • Não atendimento dos requisitos não funcionais (escalabilidade, tolerância a falhas, segurança e etc).

Se você já treinou um modelo de machine learning e pensou em colocá-lo em produção, com certeza já esbarrou em pelo menos um desses itens, certo?

“Ok, cara, mas como o Marvin vai me ajudar, então?”, você deve ter pensado.

Eu vou passar por cada um desses itens, mas, de modo geral, o Marvin vai instrumentar o seu projeto. Ele vai te oferecer um padrão a seguir e disponibilizar uma série de ferramentas e soluções prontas para te ajudar com seu projeto. O Marvin não vai substituir sua lib favorita de M.L., ele vai cuidar de toda a parte chata e deixar você livre para fazer a parte legal – treinar seu algoritmo!

1) O padrão: mais do que apenas um monte de código, o Marvin é a implementação do padrão DASFE (Data Acquisition, Serving, Feedback and Evaluation), que foi criado junto com ele para dar base ao projeto. Este padrão prevê a separação do projeto em sete ações divididas em ações Online e Batch.

2) Reprodução dos resultados: projetos de M.L têm uma natureza iterativa, onde o cientista de dados está constantemente elaborando e testando hipóteses até que o resultado esperado seja alcançado. Neste processo, podem ser usadas várias técnicas de pré-processamento (gerando versões diferentes do dataset) e vários algoritmos de M.L (gerando vários modelos diferentes).

O Marvin apoiará aqui versionando todos estes artefatos sem que o cientista de dados precise escrever uma linha de código para isso. O Marvin irá salvar cada versão do dataset e do modelo, sendo possível voltar a uma versão específica muito facilmente.

3) O deploy: um dos objetivos do projeto é não reinventar a roda! Queremos causar o menor atrito possível na experiência do nosso usuário e, por isso, usamos o que existe de padrão e melhor prática em cada assunto. Em relação ao deploy, acreditamos que o padrão/melhor prática seja os containers!

No final do processo de desenvolvimento, é possível gerar uma imagem Docker com uma interface HTTP (que esta pronta e é chamada de Engine Executor) que servirá o seu modelo. Tudo isso com apenas um comando!

4) Requisitos não funcionais: depois de algum tempo de estudo, você pode perceber que criar um modelo de machine learning no seu editor ou notebook não é assim tão complicado (se ele vai acertar suas previsões é outra história!), mas como fazer esse modelo atender milhares de requisições por segundo? Como fazer ele ser tolerante a falhas? Essas são apenas duas perguntas relacionadas aos tais requisitos não funcionais que você terá que responder se quiser colocar seu projeto em produção.

Com o Marvin, estes são pontos resolvidos! O que chamamos de Engine Executor, aquele componente que serve a API HTTP para o consumo do modelo, usa o chamado Modelo de Atores com o framework Akka na linguagem Scala.

Esta escolha de ferramentas, modelos e arquitetura permite que o Marvin atenda os principais requisitos não funcionais para você.

Bom, acho melhor dividir este conteúdo e pararmos por aqui. Dessa forma teremos mais tempo para digerir os conceitos apresentados e conhecer melhor o projeto. Na Parte 02 iremos direto para a parte legal: mão na massa!

Vou deixar uma série de links para outros conteúdos do Marvin! Fique a vontade para explorar mais o projeto e tirar suas dúvidas conosco!

Um abraço!

Referências