O documento discute o pipeline completo de machine learning, desde a preparação dos dados até o deploy do modelo em produção. Ele introduz os principais conceitos de ML e descreve as etapas do pipeline, incluindo preparação dos dados, treinamento do modelo, deploy do serviço e feedback loop. Além disso, apresenta o MLflow como uma plataforma que organiza todo o pipeline de ML com reprodutibilidade, documentação e capacidade de deploy simplificado em diferentes ambientes.
2. Quem eu sou?
● CDO na CQuantt - Responsável por conduzir
projetos de Ciência de Dados e Machine
Learning
● Pesquisador na área de Deep Learning - UFG
● Community Manager do Data Hackers
● Cientista de Dados e Dev nas horas vagas...
#estatistica #machineLearning #spark
#python #deepLearning #tensorFlow
#bigData #analytics
/marlesson-santana-25019358/
/marlesson
Marlesson Santana - marlesson@cquantt.com
3. ...
● quem já treinou algum modelo antes?
● quem já fez o deploy de um modelo por diversão?
● quem já fez o deploy de um modelo para o trabalho?
● quem acompanha o modelo em produção e gera indicadores de performance?
4. Roteiro
● Introdução a Machine Learning
● Pipeline de um projeto de ML
● End-to-end ML com MLflow
● Ferramentas
5. Machine Learning - Introdução
MachineLearning
Classificação
Regressão
Clusterização
Detecção de Fraudes
Reconhecimento Facial
Previsão de Demanda
Estimativa Receita/Demanda
Segmentação de Cliente
Modelagem de Tópico
Machine learning é sobre extração de padrões nos dados para que esses padrões
possam ser utilizados na resolução de problemas.
Modelo f(X) = y
Predição
6. Machine Learning - Introdução
Dados ???
Machine
Learning
??? $$$
Modelo
f(X) = y
Predição
A percepção é que o pipeline de ML é algo como...
7. Machine Learning - Pipeline de ML
Dados
Preparação
dos Dados
Treinamento
do Modelo
Deploy Serviço
● Histórico
● Tipos de Dados
● Fontes Externas
● Batch/Real Time
● DataViz
● Transformação e
Extração de Features
● Pipeline de dados
● Diferentes Modelos
● Tuning
● Avaliação
● Versionamento
● Pipelines
● Infraestrutura
● Escalabilidade
● Monitoramento
● Avaliação online
● Predição de novos dados
Engenheiro de Dados Cientista de Dados e Engenheiros de ML Engenheiro de Software
Feedback Loop
… mas é um processo que envolve diferentes profissionais, ferramentas e tecnologias...
8. Machine Learning - Pipeline de ML
Preparação
dos Dados
Treinamento
do Modelo
● DataViz
● Transformação e
Extração de Features
● Pipeline de dados
● Escolha do melhor
modelo
● Tuning
● Avaliação
● Versionamento
O processo de modelagem pode ser realizado
por diferentes ferramentas/linguagens e
geralmente cria MUITOS artefatos (datasets,
gráficos, parâmetros, modelos…)
Treinamento
Tuning
Model
Extração de
Features
Features
Avaliação
Evaluation
v1.ipynb
model_v2.ipynb
esse_é_melhor.ipynb
9. Machine Learning - Pipeline de ML
Preparação
dos Dados
Treinamento
do Modelo
● DataViz
● Transformação e
Extração de Features
● Pipeline de dados
● Escolha do melhor
modelo
● Tuning
● Avaliação
● Versionamento
O processo de modelagem pode ser realizado
por diferentes ferramentas/linguagens e
geralmente cria MUITOS artefatos (datasets,
gráficos, parâmetros, modelos…)
Treinamento
Tuning
Model
Extração de
Features
Features
Avaliação
Evaluation
Dúvidas frequentes:
● Como documentar?
● Reprodutibilidade?
● Dependências de bibliotecas?
● Como armazenar os modelos para o deploy?
10. Machine Learning - Pipeline de ML
Maria
Cientista de Dados
Jorge
Engenheiro de Software
Deploy Serviço
● Pipelines
● Infraestrutura
● Escalabilidade
● Monitoramento
● Avaliação online
● Predição de novos dados
Modelo
f(X) = y
Dúvidas frequentes:
● Como fazer deploy?
● Como realizar novas predições
em produção?
● Quando re-treinar o modelo?
● O que devo monitorar?
11. Machine Learning - Pipeline de ML
SCULLEY, David et al. Hidden technical debt in machine learning systems. In: Advances in neural information
processing systems. 2015. p. 2503-2511.
O código de ML é apenas uma pequena parte do todo….
13. Machine Learning - End-to-End com MLflow
https://mlflow.org
O MLflow é uma plataforma open source para gerenciar o ciclo de vida de machine
learning de ponta a ponta. Ele aborda três funções principais:
14. Machine Learning - Problema
f(x)
Model
price: R$ 221.900,00
Atributos
https://www.kaggle.com/harlfoxem/housesalesprediction
“Devemos criar um modelo para estimar o preço do imóvel a
partir de dados históricos. Esse modelo será utilizado em um
portal de classificados de imóveis”
16. O componente MLflow Tracking é uma API e uma interface para salvar
os parâmetros, versões de código, métricas, logs e artefatos que são
gerados no experimento, ele cria um repositório de experimentos.
Machine Learning - End-to-End com MLflow
18. Um Projeto MLflow é um formato de empacotamento de projetos para
ser reutilizável e reproduzível. Além disso, o componente Projetos
inclui uma API e ferramentas de linha de comando para executar
projetos, possibilitando a integração de pipelines.
Executa Local
Executa Remoto
Code Config Data
● Pode ser executado na cloud do DB
● “Pacote” com reprodutibilidade
● Define dependências do projeto
● API para execução do projeto
(similar em diferentes linguagens)
Machine Learning - End-to-End com MLflow
https://github.com/marlesson/mlflow_house_sales_prediction
19. O arquivo MLproject define a interface de execução, configurações e dependências
do projeto.
$ mlflow run <uri> -P param1=val1 ..
Exemplo:
$ mlflow run . -P max_depth=3 -P n_estimators=10
$ mlflow run . -e train_deep -P epochs=20 -P layers='[100, 50, 30, 10]'
$ mlflow run https://github.com/marlesson/mlflow_house_sales_prediction
Executa um projeto usando as definições
do MLproject
Machine Learning - End-to-End com MLflow
20. Um Projeto de MLFlow pode ser utilizado para orquestrar um pipeline de
transformação ou treinamento usando diferentes tecnologias, permitindo uma interface
entre as etapas.
https://github.com/mlflow/mlflow/tree/master/examples/multistep_workflow
Pipeline do Projeto:
● Load: Faz o download de um
dataset
● ETL: Transformações nos dados
● ML: Treinamento usando a Mlib
● Model Training: Treinamento
usando o keras
Machine Learning - End-to-End com MLflow
22. O MLflow Model empacota o modelo com as dependências e
parâmetros de execução. O formato define uma convenção que
permite salvar o modelo de forma que possa ser utilizado em diferentes
contextos.
● Define dependências do modelo
● Empacota diferentes “flavors” do
mesmo modelo, que podem ser
usados em diferentes contextos ou
diferentes linguagens (java, R,
python, docker)
● Deploy simplificado
Machine Learning - End-to-End com MLflow
23. $ mlflow pyfunc serve -m <path_model>
$ mlflow pyfunc predict -m <path_model> -i <path_input>
Abre um servidor web que serve o modelo
através de uma API REST
Realiza predição em batch usando um csv de
input
A partir da configuração do MLmodel, o Mlflow consegue servir o modelo em
diferentes formatos.
Machine Learning - End-to-End com MLflow
$ curl -H "Content-Type: application/json" --data
data/sample.json http://localhost:8080/invocations
24. O deploy do modelo usando o Mlflow pode ser realizado de diferentes formas:
● Rest API endpoint
● Microsoft Azure ML
● Amazon SageMaker
● Spark UDF
● …. Docker
Machine Learning - End-to-End com MLflow
25. Machine Learning - Arquitetura
Preparação
dos Dados
Treinamento
do Modelo
Deploy
Serviço
API
Arquitetura simplificada de uma solução para predição do preço de imóveis em sites de
busca On-line (real-time).
Real-time:
● Síncrono
● Alta performance
● Escalável
26. Machine Learning - Deploy on Cloud - GCP
Vamos criar um Container Docker para encapsular o modelo e as dependências
criada pelo MLFlow Model. O modelo será servido através da API Rest do próprio
MlFlow.
27. Machine Learning - Deploy on Cloud - GCP
GCP Console
$ gcloud builds submit --tag gcr.io/confraria-dos-dados/ml_model .
$ gcloud compute instances create-with-container ml-model
--container-image gcr.io/confraria-dos-dados/ml_model:latest
--tags http-server,https-server
--machine-type f1-micro
--zone us-east1-b
Docker
$ docker build -t ml_model .
$ docker run -it -p 3001:80 ml_model
Dockerfile para criar o container com o modelo para produção
28. Machine Learning - Arquitetura
load_data.py predict.py save_result.py
Serviço
Arquitetura simplificada de uma solução para predição do preço de imóveis em sites de
busca em lote (batch).
Batch:
● Assíncrono
● Uso através de
Trigger ou baseado
em evento de tempo
29. Machine Learning - Deploy Spark
O deploy do modelo no spark é através de uma UDF (User-Defined-Functions) e
pode ser utilizando tanto no stream ou batch. O modelo empacotado pelo MLFlow
Modes pode ser lido como UDF
Abre um servidor web que serve o modelo
através de uma API REST
31. Machine Learning - Pipeline de ML
Dados
Preparação
dos Dados
Treinamento
do Modelo
Deploy Serviço
Engenheiro de Dados Cientista de Dados e Engenheiros de ML Engenheiro de Software
Feedback Loop
O MLflow organiza o pipeline de ML com reprodutibilidade, documentação de experimentos
e “independência” de tecnologia para modelagem com deploy simplificado...
API
32. Machine Learning - Modelo em Produção...
Modelo em produção… e agora?
● Escalabilidade
● Monitoramento constante
● Métricas de avaliação online
● Quando devo re-treinar? nova versão?
● Processo de ML Ops