Vamos seguir com a Parte 2 da série de artigos sobre MLOps. Se perdeu a Parte 1, clique aqui.

Funções Envolvidas em MLOps

Colocar um modelo de Machine Learning em produção requer um conjunto de habilidades que até agora eram consideradas separadas. Para ter sucesso precisamos de uma equipe híbrida que, em conjunto, cubra essa gama de habilidades.

Obviamente, é possível que uma única pessoa seja boa o suficiente em todas as habilidades e, nesse caso, poderíamos chamá-la de Engenheiro MLOps. Mas o cenário mais provável agora é que uma equipe de sucesso inclua, pelo menos, um Cientista de Dados, Engenheiro de Machine Learning, um Engenheiro de DevOps e um Engenheiro de Dados.

A composição, organização e títulos exatos da equipe podem variar, mas o essencial é perceber que um Cientista de Dados sozinho não pode atingir os objetivos do MLOps. Mesmo se uma organização incluir todas as habilidades necessárias, ela não terá sucesso se eles não trabalharem juntos.

Outra mudança importante é que os Cientistas de Dados devem ser proficientes em habilidades básicas de engenharia de software, como modularização de código, reutilização, teste e controle de versão; fazer um modelo funcionar bem em um notebook não é suficiente. É por isso que muitas empresas estão contratando também o perfil de Engenheiro de Machine Learning, que enfatiza essas habilidades. Em muitos casos, os Engenheiros de Machine Learning estão, na prática, realizando muitas das atividades necessárias para o MLOps.

Pipelines de Machine Learning

Um dos principais conceitos da Engenharia de Dados é o pipeline de dados. Um pipeline de dados é uma série de transformações aplicadas aos dados entre sua origem e um destino. Eles são geralmente definidos como um grafo em que cada nó é uma transformação e as arestas representam dependências ou ordem de execução.

Existem muitas ferramentas especializadas que ajudam a criar, gerenciar e executar esses pipelines. Os pipelines de dados também podem ser chamados de pipelines ETL (extrair, transformar e carregar).

Os modelos de Machine Learning sempre exigem algum tipo de transformação de dados, o que geralmente é obtido por meio de scripts ou mesmo células em um jupyter notebook, tornando-os difíceis de gerenciar e executar de forma confiável. Mudar para pipelines de dados adequados oferece muitas vantagens na reutilização de código, visibilidade do tempo de execução, gerenciamento e escalabilidade.

Como o treinamento de modelos de Machine Learning (ML) também pode ser considerado uma transformação de dados, é natural incluir as etapas específicas de ML no próprio pipeline de dados, transformando-o em um pipeline de ML. A maioria dos modelos precisará de 2 versões do pipeline: uma para treinamento e outra para produção. Isso ocorre porque, geralmente, os formatos de dados e a forma de acessá-los são muito diferentes entre cada momento, especialmente para modelos que são atendidos em solicitações em tempo real (ao contrário de execuções de predição em lote).

O Pipeline de ML é um artefato de código puro, independente de instâncias de dados específicas. Isso significa que é possível rastrear suas versões na origem e automatizar sua implantação com um pipeline regular de CI / CD, uma prática básica do DevOps. Isso nos permite conectar o código e os planos de dados de forma estruturada e automatizada, como resumido na imagem abaixo.

mlpipeline

Observe que há dois pipelines de ML distintos: o pipeline de treinamento e o pipeline de produção (serving ou serviço). O que eles têm em comum é que as transformações de dados que realizam precisam produzir dados no mesmo formato, mas suas implementações podem ser muito diferentes. Por exemplo, o pipeline de treinamento geralmente é executado em arquivos em lote que contêm todos os recursos, enquanto o pipeline de serviço geralmente é executado online e recebe apenas parte dos recursos nas solicitações, recuperando o restante de um banco de dados.

É importante, no entanto, garantir que esses dois pipelines sejam consistentes. Portanto, deve-se tentar reutilizar o código e os dados sempre que possível. Algumas ferramentas podem ajudar com esse objetivo.

Como exemplo, os frameworks de transformação, como o TensorFlow Transform, podem garantir que os cálculos baseados nas estatísticas do conjunto de treinamento, como médias e desvios padrão para normalização, sejam consistentes.

Armazenamentos de recursos (Features Stores) são bancos de dados que armazenam valores que não fazem parte de uma solicitação de predição, por exemplo, recursos que são calculados sobre o histórico de um usuário.

Continuamos na Parte 3.

Equipe DSA

Referências:

Formação Engenheiro de Machine Learning

ML Ops: Machine Learning as an Engineering Discipline

MLOps Best Practices on Google Cloud

O Que São Feature Stores e Por Que São Essenciais na Escalabilidade em Data Science?