quarta-feira, 5 de setembro de 2018

Entregando projetos de Machine Learning com Marvin-AI Parte 1

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 texto é pra você cara!

Recentemente comecei a trabalhar na B2W Digital (dona dos sites Submarino, Americanas, Shoptime e etc), em um projeto open source que tem o objetivo de 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. Estas 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 coloca-lo em produção, com certeza já esbarrou em pelo menos um esses 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 ans Evaluation) que foi criado junto com ele para dar base ao projeto. Este padrão prevê a separação do projeto em 7 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 esta 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 experiencia 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 pratica sejam 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 2 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ê.

Abaixo você pode ter uma ideia mais visual de como estas peças se encaixam.



Bom, acho melhor dividir este conteúdo e pararmos por aqui. Assim temos tempo para digerir os conceitos apresentados até aqui e conhecer melhor o projeto. Na parte 2 vamos 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!

Referencias

  1. Github do projeto
  2. Documentação
  3. Grupo de email para usuários
  4. Artigo Publicado
  5. Medium Marvin
  6. Meetups Marvin-AI
  7. Apresentação na QCon

Nenhum comentário:

Postar um comentário