Alura > Cursos de Data Science > Cursos de Machine Learning > Conteúdos de Machine Learning > Primeiras aulas do curso MLflow: gestão do ciclo de vidas de modelos de ML

MLflow: gestão do ciclo de vidas de modelos de ML

Conhecendo o MLflow - Apresentação

Olá, meu nome é Júlio e eu dou as boas-vindas ao curso de MLflow. Nesse curso, nós vamos aprender sobre uma ferramenta para gerenciamento do ciclo de vida de modelo de machine learning, o MLflow.

É nele que vamos ter algumas facilidades para melhorar o processo de MLW ApS dentro da empresa, dentro do nosso projeto.

Nós vamos aprender como podemos utilizar o MLflow para melhorar a parte de treino do nosso modelo, como podemos rastrear as melhorias que vamos fazendo ao longo do treino, como, por exemplo, utilização de diversas bibliotecas diferentes, ajustes de parâmetros, bases de dados diferentes.

Como podemos rastrear tudo isso de uma melhor forma durante o treino de um modelo de Machine Learning, durante o projeto de criação de um modelo de machine learning.

Além disso, vamos ver também como o MLflow nos ajuda a reproduzir modelos que nós criamos. Uma vez que eu tenho uma execução de um modelo, eu já criei um modelo de machine learning, como que eu posso reproduzir esse modelo?

Como que eu posso agora colocar esse modelo em produção, fazer o predict de base de dados, ou transformar esse modelo em uma API, de uma forma que o MLflow vai automatizar essa criação da API com o modelo que escolhemos lá dentro?

Além disso, também vamos ver como criar uma API com Docker utilizando o MLflow para gerar o contêiner já com o nosso modelo de machine learning gerado pelo MLflow lá dentro.

Além disso, vamos ver também como gerenciar, de uma melhor forma, o ciclo de vida de modelos de machine learning, tendo versões produtivas dos nossos modelos, conseguindo e lançando novas versões dos nossos modelos conforme avançamos no nosso projeto.

Muito importante, nesse curso, nós precisamos que você já esteja com bons conhecimentos de Python e o conhecimento básico de Data Science para melhor aproveitamento.

Ao final do curso, você vai sair com um material pronto para entrar no seu portfólio. Vamos lá para o curso porque o material está muito legal.

Conhecendo o MLflow - Instalação

Vamos entender então qual problema nós vamos resolver durante o curso. Imagina que nós somos do time de data science da Alura Imóveis, uma imobiliária digital da Alura, e nossa responsabilidade é aumentar a quantidade de vendas, melhorar a plataforma de venda de imóveis da Alura.

O nosso time recebeu um desafio que é criar um modelo de machine learning para prever por quanto uma casa será vendida, uma casa ou um apartamento.

E nós temos essa base de dados que tem o tamanho da casa, o ano que ela foi construída, quantidade de carros na garagem e o preço que o imóvel foi vendido. O nosso desafio, então, vai ser utilizar essa base de dados para criar um modelo de machine learning para prever esse resultado.

Mas o nosso time já é muito bom para desenvolver modelos. Nós já conhecemos várias técnicas de desenvolver modelos, temos pessoas no time que desenvolve modelos e nós já sabemos como criar, pegar um modelo e conseguir gerar um modelo de machine learning que consegue prever o preço dessa casa.

Durante o desenvolvimento do modelo e quando queremos colocar esse modelo em produção, nós encontramos alguns desafios que estão relacionados com o tema de MLflow? Como eu vou colocar esse modelo em produção, como que eu consigo acompanhar os experimentos que vou criando ao longo da jornada?

Nós vamos desenvolver esse modelo, só que, para isso, vamos utilizar o MLflow para gerenciar esse ciclo de vida durante o desenvolvimento do nosso modelo.

Vamos ver como que o MLflow pode nos ajudar durante o desenvolvimento, acompanhando os experimentos que vamos fazendo, e depois como ele vai nos ajudar a colocar em produção o modelo que nós criamos.

E o que é esse projeto? O MLflow é um projeto open source que foi criado em 2018 pela mesma empresa que está por trás do projeto Apache Spark, a Databricks.

E é um projeto que, como dizemos, ele diz que ajuda a gerenciar o ciclo de vida, lifecycle do machine learning, da criação de modelos de machine learning.

Esse é o site, disponível neste link, onde temos vários recursos que podemos consultar sobre a plataforma, as versões que são lançadas, e também uma documentação bem legal, bem completa, que vai ter muitas das coisas que vamos ver ao longo do curso.

Mas vamos começar já botando a mão na massa e tentando entender como o MLflow pode nos ajudar. Eu vou abrir o meu “Terminal” – lembrando que, no meu caso, eu estou utilizando o Windows Terminal e, apesar de estar trabalhando no Windows, estou dentro do WSL2 com a máquina com o sistema operacional Ubuntu-20.04.

Uma das coisas legal do MLflow é que ele é muito simples de começarmos a utilizar. Assim como utilizamos vários outros pacotes de Python, para começarmos a utilizar o MLflow, nos basta digitar pip install mlflow.

No seu caso, se ele não estiver instalado, ele vai instalar. Você pode pedir para atualizar, vamos ver qual versão eu já tenho instalado aqui. import mlflow, e aqui vou digitar mlflow.__version__.

Ao longo desse curso, eu estou usando a versão 1.13.1 do MLflow. Vou dar “Ctrl + D”, exit() aqui, estou de volta no Terminal do Linux, deixa eu limpar. Se você precisar, às vezes, de instalar alguns pacotes extras do MLflow, você digita o comando pip install mlflow, mas com esses [extras] aqui.

Caso você precise de algum pacote específico que foi lançado em alguma versão, alguma componente da scalene, coisas desse tipo. Eu já tenho instalado, já podemos, de imediato, abrir a tela do MLflow e começar conhecendo um pouco mais sobre a ferramenta.

Então, vou digitar aqui mlflow ui, esse “ui” é de “user interface/interface do usuário”, dou “Enter”. Ele está iniciando e, notem, bem parecido como vemos quando estamos utilizando algum flask para fazer algum serviço Web de unicorn por trás, é uma tela bem parecida. Notem que ele criou um serviço, criou um backend para nós.

Aqui ele dá o endereço para nós onde ele está disponível. Como eu não passei nada, ele já gerou aqui no meu local host, no meu 127.0.0.1, esse é o endereço da minha máquina, e na porta 5000.

Vou copiar isso aqui, copiando no Terminal com o botão direito e vamos abrir essa tela. Está aqui. Notem essa parte muito legal do MLflow, que ele é uma ferramenta bem completa, vamos ver várias coisas ainda, mas que é muito simples de você iniciar.

Bastou um pip install que eu já acessei a UI, a interface do usuário do MLflow. Já dá para ver várias coisas que vamos utilizar durante a construção do projeto.

Estou aqui na parte de experimentos do MLflow, vamos ver como podemos usar essa parte de um pouco mais de experimentos primeiro. Essa primeira parte que estamos vendo é a “Tracking UI”. Notem que o projeto do MLflow está dividido em quatro etapas: “MLflow Tracking”, que é a parte de rastreamento, é a primeira que estamos vendo.

Então, muito relacionado com essa tela que estamos vendo. Se você precisar de gerar o MLflow em outra porta, se a porta 5000 estiver ocupada, dei “Ctrl + C” aqui, você pode digitar mlflow ui --port, na porta que você quiser. 5050, por exemplo, ele vai gerar, ao invés desse endereço, na porta 5050.

Conhecendo o MLflow - Executando um projeto

Agora que já temos o pacote instalado na nossa máquina, conhecemos o MLflow e o UI já, podemos executar o nosso primeiro projeto, esse vai ser o nosso “Hello World”, vai ser o nosso start aqui no mundo do MLflow.

Vamos executar de novo a UI, no caso, eu parei aqui para mostrar como você muda a porta da execução. Deixa eu executar aqui novamente, mlflow ui. Vamos só garantir que aqui está tudo funcionando, deixa eu atualizar aqui.

Estou aqui na UI, está funcionando, vamos voltar lá no Terminal e eu vou criar aqui uma outra aba para executarmos os comandos. Estou deixando aqui o server da minha ui rodando aqui, criei outra aba no meu Terminal. Basta você abrir outra tela de Terminal e executar os comandos.

O que vamos fazer então? Uma das coisas legais que o MLflow dá de possibilidade para nós é conseguir executar projetos prontos. Então, para conhecermos o poder do MLflow e as facilidades que ele traz, vamos executar um projeto pronto que está lá na documentação, dentro do próprio código do MLflow que foi feito pela comunidade.

Vou entrar aqui dentro da parte de code para irmos lá para GitHub do MLflow. Aqui é o projeto open source, você pode ver o código do MLflow aqui, tem várias explicações, tem passo a passo, tem várias coisas, aqui ensinando a usar o MLflow UI, por exemplo.

Eu vou voltar na parte do usuário do MLflow, tem alguns outros projetos aqui e tem esse projeto de exemplo, que é o “mlflow-example”. Vamos entrar nele e isso aqui é um projeto do MLflow.

Foi oferecido pela comunidade que desenvolve o MLflow esse projeto já pronto e vamos ver como podemos executar esse projeto. Notem que algumas coisas estamos acostumados a ver dentro de modelos de machine learning.

Tem uma base de dados aqui sobre qualidade de vinhos. Deixa eu abrir essa base de dados. Então, uma tabela com algumas colunas provavelmente relacionadas à qualidade do vinho. Eu tenho um código de treino que vai executar um ElasticNet ele está calculando algumas métricas como rmse, mean_absolute_error, r_quadrado.

Algumas métricas, algumas coisas comuns de machine learning, mas está aqui em formato de script ao invés de estar no Jupyter Notebook, alguma coisa assim.

Esse é um projeto que já foi criado dentro do MLflow que está aqui disponível para usarmos. Como que eu posso executar esse projeto que já está aqui no padrão do MLflow?

Esse é um repositório do GitHub, eu vou pegar aqui o caminho que normalmente utilizaríamos para clonar, para acessar esse repositório, vou clicar aqui para copiar. Se eu apertar o meu botão direito, ele vai colar aqui esse endereço e vamos digitar mlflow run.

Olha que legal, esse projeto já está pronto para receber alguns parâmetros para execução de um modelo de machine learning. Por exemplo, o que esse modelo vai fazer?

Vai ser treinar um modelo de machine learning utilizando o ElasticNet e eu vou passar um parâmetro que ele já está preparado para recer, que é o alpha, que faz parte desse modelo, é um parâmetro do algoritmo.

Então, eu vou passar -P, para falar que estou passando um parâmetro. -P alpha=0.5. Notem que isso é uma configuração específica desse modelo de machine learning que estamos falando.

Vou executar esse comando e vamos ver o que vai acontecer. Ele está falando comigo que ele está baixando o projeto do endereço GitHub, ele já executou e trouxe os resultados do RMSE.

Ele deu alguns warnings aqui sobre versões de biblioteca, versões que estamos usando e foram sendo utilizadas, mas nenhum erro, apenas alguns warnings. E também, uma coisa importante, ele utilizou conda aqui, criou um ambiente virtual.

Todas as dependências desse modelo de machine learning está instalando através do conda. Então, se, às vezes, na sua máquina ele não tem essas dependências instaladas, ele vai buscar essas dependências e vai instalá-las usando conda.

Você pode executar esse modelo sem a instalação usando conda, utilizando o comando no-conda, mas você tem que garantir que todas as dependências estão instaladas.

No meu caso, eu tenho o Anaconda, está tudo certo, eu consigo executar do jeito que fizemos. Dei “Ctrl + C” aqui, continuando, nós vimos que ele fez a execução, ele treinou o modelo, que é o que esse train_test_split(data), não vamos entrar em tantos detalhes nele, mas é basicamente o que esse script está fazendo.

E já gravou alguns resultados. O que tem de novo aqui até então? Em teoria, quando estamos desenvolvendo um modelo de machine learning, nós podemos colocar isso para printar na tela, para gravar em um arquivo.

Nós poderíamos executar um script e gravar essas coisas aqui, baixar o script. Ele pegou diretamente do GitHub, eu poderia fazer o clone no GitHub.

Vamos lá no MLflow UI e ver o que aconteceu lá, vamos atualizar a página. Se eu olhar aqui, notem, apareceu aqui para mim – deixa eu tirar um pouco do zoom para ficar melhor para enxergarmos – o experimento que nós rodamos.

Ele está falando aqui “executei um experimento no dia 23-02”, aqui minha data, às “21h02”, o usuário foi o “julio”, o “source mlflow-example”, a versão, o modelo que ele executou foi o modelo do “sklearn” e aqui ele gravou para mim qual foi o “alpha”, qual foi o “l1_ratio”, qual foi o erro médio absoluto e qual foi o “r2”, o resultados que tivemos da execução do modelo.

Vamos executar de novo com um alpha diferente agora e ver o que acontece. Estou executando de novo, mudei o alpha. Notem que aqui nós tivemos resultados diferentes já, o RMSE com resultado diferente, um pouco menor, parece que o modelo está até um pouco melhor, está errando menos, o R2 maior.

Vamos aqui, vamos atualizar e atualizou. Notem que agora apareceu mais um experimento aqui em cima. O que estávamos veio para baixo e o mais recente está aparecendo primeiro. Às “21h05”, foi o horário que eu executei, o mesmo “Source: mlflow-example”, a mesma versão, o mesmo modelo.

O “alpha” agora diferente e já conseguimos acompanhar aqui as diferenças do nosso resultado. Então, já deu para ver como o MLflow nos ajuda a acompanhar as execuções dos experimentos, eu não preciso ficar olhando o log, eu não preciso ficar olhando um print, ele está deixando isso salvo para mim nessa tela.

Eu consigo entrar desse experimento, se eu clicar aqui, e ver várias coisas sobre ele, por exemplo, o comando que eu posso usar para gerar esse mesmo experimento, em qual “Git Commit” que ele está relacionado, os parâmetros que usei para executar, aqui as métricas que vimos naquele resumo da tela, e mais outras coisas que vamos ver como o MLflow pode nos ajudar.

Então, já deu para ter uma boa ideia até aqui de como o MLflow vai poder nos fazer acompanhar o tracking dos experimentos. Essa palavra “tracking” está relacionada a esse primeiro módulo do MLflow, que é “rastreamento”.

Esse módulo de “Tracking” é muito do que estamos vendo aqui, que nos ajuda a acompanhar os experimentos que fazemos. Quando estamos falando de executar um modelo de machine learning com alguma configuração, testar de novo, testar de novo, cada vez que nós fazemos esse teste testando uma ou outra configuração, é o que nós chamamos de experimento.

E o MLflow Tracking é o que nos ajuda a fazer esse rastreio de como foi cada experimento e quais os resultados que nós obtemos.

Sobre o curso MLflow: gestão do ciclo de vidas de modelos de ML

O curso MLflow: gestão do ciclo de vidas de modelos de ML possui 129 minutos de vídeos, em um total de 39 atividades. Gostou? Conheça nossos outros cursos de Machine Learning em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Machine Learning acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas