Machine Learning com a Tail Refinaria

Machine Learning com a Tail Refinaria
19

Já que 80% de um projeto de Ciência de Dados é composto de tarefas de Engenharia de Dados (alguns dizem que é 90%), nós na Tail investimos os últimos anos criando um produto para resolver essa parte, de forma que nós pudéssemos focar nos 20% que representam a parte mais divertida de um projeto de Ciência de Dados.

A Tail Refinaria  resolve muitas das tarefas comuns de Engenharia de Dados: provê um catálogo de dados, automaticamente detecta tipos de dados para adicionar semântica ao catálogo, provê uma ferramenta de Data Lineage para rastrear mudanças nos datastores, mantém registro de bases legais dos dados, para facilitar a implantação de regulações como a LGPD, provê um Data Science Notebook compatível com Spark SQL para experimentação, permite criar e agendar pipelines para processamento em lote, usando o mesmo código criado durante a experimentação interativa, automaticamente cria amostras dos dados para serem usados por Cientistas de Dados durante a experimentação, conecta-se com o Google Data Studio para permitir visualizações complexas, e muito mais.

Nós conseguimos criar uma ferramenta para nossos clientes que tornou a construção e gerenciamento de Data Lakes e o processo de construção e execução de Pipelines de Dados muito mais fácil. Nós acreditamos que com a Tail Refinaria nós resolvemos a maioria dos problemas comuns de Engenharia de Dados. Prova disso é que nós temos usado a ferramenta nós mesmos para criar e executar nossos pipelines e gerenciar nosso próprio Data Lake.

No entanto, nós notamos que o processo de criar, rastrear e colocar em produção modelos de machine learning era ainda uma tarefa difícil e trabalhosa para a maioria dos times de Ciência de Dados, incluindo o nosso e de nossos clientes. E por isso, decidimos resolver esse problema também.

Essas são as principais dificuldades que identificamos na criação e manutenção de modelos de machine learning:

 

Acesso fácil a dados para treino

Talvez uma das tarefas que mais consome tempo quando vamos treinar um modelo de machine learning seja conseguir acessar os dados para o treino. Geralmente há vários scripts de ETL envolvidos, autorizações necessárias, criação de amostras, limpeza, negociações, etc. E se você precisa de uma fonte de dados externa, como dados censitários, por exemplo, mais trabalho precisa ser feito para obter os dados e torna-los disponíveis em um ambiente que possa ser usado no treino. Se o conjunto de dados é grande, Cientistas de Dados terão que ter acesso a alguma forma de armazenamento na nuvem ou mesmo acesso a um cluster capaz de executar processamento distribuído.

 

Tornar o processo de feature engineering mais fácil

Feature engineering é um passo essencial em machine learning. Existem vários algoritmos de feature engineering bem conhecidos, mas escolher o mais adeuqado, experimentá-lo e principalmente, aplicar os mesmos algoritmos de feature engineering ao dados de produção para garantir a correta execução dos modelos de machine learning, ainda é uma tarefa geralmente feita manualmente e sujeita a erros.

 

Implantar o modelo treinado em produção

Quando um modelo é treinado e está pronto para ser usado, como torná-lo disponível em produção? É importante controlar as diferentes versões do modelo, mantendo as métricas para cada versão para ter certeza que que ele está performando bem e comparar com outras versões. Deveria também ser fácil usar um modelo já treinado como parte de outros pipelines de Ciência de Dados para produzir predições e insights. Um catálogo de modelos deveria estar disponível, de forma que a equipe da empresa possa encontrar os modelos disponíveis, e inspecionar suas métricas para saber como eles foram treinados e quão bons eles são. Infelizmente, isso não é uma realidade para a maioria das equipes.

 

Integração completa com notebooks de Data Science

Data Science notebooks são excelentes ferramentas para experimentação. No entanto, nem todos os ambientes de notebooks possuem algoritmos de machine learning nativamente embutidos e prontos para serem usados. Além disso, quando treinando com grandes volumes de dados, o notebook deveria ter acesso a um cluster de máquinas capazes de processar grandes volumes, mas muitas vezes isso não está facilmente disponível para a equipe de Ciência de Dados da empresa.

 

Guardar o Model Lineage, ou a História do Modelo

Outro aspecto do gerenciamento de modelos de Machine Learning que dificilmente se vê bem resolvido nas empresas é o Model Lineage, ou a História do Modelo. Assim como uma ferramenta de Data Lineage deveria guardar a história de um datastore, ou seja, que pipelines modificaram os dados, de onde os dados vieram, etc, as ferramentas de Model Lineage deveriam guardar a história de um modelo. Isso melhora a rastreabilidade e torna o re-treino de um modelo mais fácil. Uma ferramenta de Model Lineage deveria armazenar para cada modelo que dados foram usados no treino, transformações, métodos de feature engineering, algoritmos e parâmetros que foram usados no treino e quando cada versão do modelo foi criada. Além disso, os dados gerados por um modelo deveriam ser parte da história do datastore. Assim, a ferramenta de Data Lineage deveria rastrear dados gerados por um modelo, mostrando os algoritmos, parâmetros e dados envolvidos na geração do modelo, tornando possível recriar o modelo e reproduzir os dados.

 

Como você pode notar, esses são problemas típicos que a engenharia de machine learning busca resolver. Nos próximos artigos, vamos mostrar como resolvemos estes problemas na Tail Refinaria.

 

Esse post faz parte de uma série de conteúdos sobre Refinaria de Dados.

Confira todos os conteúdos:

Post 1: Tail Refinaria – Resolvendo os problemas da Engenharia de Dados

Post 2: Machine Learning com a Tail Refinaria

Post 3: Acesso fácil a dados de treino para construção de modelos de Machine Learning com a Tail Refinaria

Post 4: Simplificando a utilização de algoritmos de Feature Engineering com a Tail Refinaria

Post 5: Treinando e implantando um modelo de Machine Learning com a Tail Refinaria

Post 6: Usando Notebooks de Ciência de Dados para Treino e Implantação de Modelos de Machine Learning

Post 7: Precisamos falar sobre Model Lineage

 

Post escrito por Fabiane Bizinella Nardon (@fabianenardon), Cientista Chefe da Tail. Com mestrado em Ciência da Computação e Doutorado em Engenharia Elétrica, é especialista em Engenharia de Dados e Engenharia de Machine Learning. É também responsável pelo conteúdo editorial da trilha de Engenharia de Machine Learning do QCon São Paulo, palestrante frequente sobre o tema e autora de diversos artigos. Fabiane também foi escolhida Java Champion pela Sun Microsystems, como reconhecimento de sua contribuição para o ecossistema Java.