10.1 Introdução

Colocar modelos em produção não se resume a servir um modelo para que ele possa ser consumido, seja em tarefas online ou batch. Isso por um motivo muito simples: assim como qualquer outro artefato de software, um modelo de machine learning não é um artefato estático. Ele evolui com o passar do tempo, devido a mudanças em todo o contexto onde ele se insere. Pode haver mudanças em regras de negócio, mudanças em legislação, tendências novas nos dados envolvidos e que exigem retreinamento, novos algoritmos e técnicas mais elaboradas... Tudo isso pode gerar a necessidade de atualização desse artefato.

O gerenciamento dessa evolução tem uma série de particularidades. Como explicado neste vídeo tutorial da Databricks, um projeto de machine learning tem algumas particularidades que o diferenciam do software tradicional:

  • Não existe um conjunto de requisitos bem especificados. O objetivo é otimizar alguma métrica, como por exempo acurácia. Assim, é necessário constante experimentação para melhorá-la;

  • Não basta ser um bom desenvolvedor de software e desenvolver bom código. A qualidade depende dos dados de entrada e dos hiperparâmetros;

  • Não há um conjunto fixo de tecnologias e frameworks. É comum testar, combinar e comparar muitas bibliotecas, algoritmos e modelos;

  • Não há uma única linguagem e um único ambiente. O ambiente de desenvolvimento é muito diversificado.

Tudo isso gera particularidades que podem fazer o desenvolvimento ficar bastante complexo, principalmente quando é necessário escalar:

  • Muitos modelos;

  • Muito volume de dados;

  • Muitas pessoas.

Por esse motivo surgiu o MLflow, uma ferramenta open source para todo o ciclo de desenvolvimento de machine learning.

Last updated