Motivação
Parabéns por chegares até aqui! Percorremos uma jornada significativa até aqui. No início da nossa jornada, abordamos conceitos fundamentais de machine learning, isto é, no artigo I, também discutimos alguns desafios que podem se apresentar ao iniciar uma carreira nesta área empolgante. Caso ainda não tenhas lido, confira neste link.
Mais adiante, introduzimos o CRISP-DM, que serviu como bússola para desenvolver o nosso projeto de estudo de caso. Agora, com um modelo de aprendizado de máquina em mãos, é o momento de levá-lo à produção. Tudo pronto para embarcar nesta próxima fase da nossa aventura? Então vamos nessa.
Agenda:
- Explorando MLOps: Uma visão abrangente
- Entendendo Drift em Machine Learning: Uma breve introdução
- Construindo um Pipeline de Desenvolvimento para Machine Learning
1. Explorando MLOps: Uma visão abrangente
Para profissionais que atuam no desenvolvimento de software, é amplamente reconhecido que ao implantar uma solução em produção, a adoção de práticas de DevOps é fundamental. No contexto de projetos de machine learning, a realidade não é diferente; para colocar uma solução em produção, recorremos a práticas de MLOps. Diria que MLOps é uma extensão do DevOps direcionada ao aprendizado de máquina, acredito que só com este argumento já dá para ter uma visão abrangente dessa abordagem.
Neste artigo veremos, como automatizar o cíclo de vida de desenvolvimento de um projeto ML usando ferramentas e práticas de MLOps. Abaixo, apresentamos uma lista das principais ferramentas que contribuem para a cultura de MLOps:
- Cookiecutter: ferramenta de linha de comando que facilita a criação de projetos a partir de templates pré-definidos.
- git/github: ferramentas de versionamento e hospegagem de código
- Data version control (DVC): ferramenta projetada para gerenciar o versionamento de dados em projetos de ciência de dados e machine learning (não veremos aqui).
-
MLFlow: Registro e organização (
versionamento
) de experimentos de machine learning. Isso inclui a gravação de parâmetros, métricas e artefatos associados a um modelo durante o treinamento. (usaremos apenas para o veriosnamento e gravação de artifatos
) - Docker: plataforma de código aberto que automatiza o processo de implantação de aplicativos dentro de container
Outras ferramentas:
- Flask: framework para desenvolvimento de apps web e restfull em Python
- Pytest: framework de teste em Python que facilita a escrita de testes unitários, de integração e funcionais
- ReactJs: biblioteca JavaScript para a construção de interfaces de usuário
2. Entendendo Drift em Machine Learning: Uma breve introdução
Em machine learning, o termo drift refere-se a um fenômeno em que a distribuição dos dados utilizados para treinar um modelo de machine learning muda ao longo do tempo de maneira não esperada. Esse fenômeno pode ter um impacto significativo no desempenho do modelo, pois o modelo foi treinado com base em uma distribuição específica de dados, e sua eficácia pode diminuir quando confrontado com dados que diferem dessa distribuição original.
Existem dois tipos principais de drift em machine learning:
1. Drift de Conceito (Concept Drift): Isso ocorre quando a relação entre as variáveis de entrada e a variável de saída (rótulo) muda ao longo do tempo
2. Drift de Dados (Data Drift): Refere-se a mudanças na distribuição dos dados de entrada ao longo do tempo, ou seja, Se o modelo foi treinado em uma distribuição específica e é exposto a dados que não seguem mais essa distribuição, sua eficácia pode diminuir.
Abaixo, estão algumas práticas para prevenir drift em projetos de Machine Learning:
- Monitoramento Contínuo
- Re-treinamento Incremental (a importância desse tópico será abordada no próximo ponto)
- Desenvolvimento de Modelos Robustos
3. Construindo um Pipeline de Desenvolvimento para Machine Learning
Pipeline em machine learning, refere - se a uma sequência de processos automatizados encadeados para realizar tarefas específicas, desde a preparação dos dados até a avaliação do modelo. O ciclo de vida de um modelo de machine learning não se encerra após o treinamento inicial e a implantação, como discutimos anteriormente, o cíclo de vida do projeto é transformado em um processo contínuo para evitar problemas como o Drift. É nesse contexto que os pipelines se destacam, essa abordagem sistemática é projetada para facilitar a reprodutibilidade, modularidade e eficiência no desenvolvimento e implementação de modelos de machine learning.
Os pipelines em machine learning geralmente incluem as seguintes etapas:
- Coleta de Dados: Aquisição e importação dos dados necessários para treinar e testar o modelo.
- Pré-processamento de Dados: Manipulação e limpeza dos dados brutos para torná-los adequados para treinamento de modelos
- Engenharia de Recursos (Feature Engineering): Criação ou modificação de variáveis para melhorar o desempenho do modelo
- Treinamento do Modelo: Utilização de algoritmos de machine learning para treinar o modelo nos dados preparados
- Validação do Modelo: Avaliação do desempenho do modelo utilizando dados de validação ou testes
- Ajuste do Modelo (Fine-Tuning): Ajuste dos hiperparâmetros do modelo para melhorar o desempenho.
- Implantação: Colocação do modelo em produção para que ele possa ser usado para fazer previsões em dados novos
Já que estamos utilizando o scikit-learn em nosso projeto de caso de uso, então veremos na pratica a construção da pipeline usando esta ferramenta.
Conclusão
Agora que estabelecemos os fundamentos para a implantação de um projeto de machine learning, é importante recordar que abordamos temas cruciais, tais como MLOps, sua relevância, estratégias para evitar o drift em projetos de machine learning, e concluímos a discussão com o conceito de pipeline.
No próximo artigo, iremos colocar tudo isso em prática. Vamos construir nossa pipeline de machine learning, incorporando práticas de MLOps para automatizar o fluxo de re-treinamento e implantação do nosso modelo em produção. Até lá, cuide-se, e nos encontramos no próximo artigo.
Top comments (0)