Machine Learning
Do notebook ao modelo em Produção
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
...
● 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?
Roteiro
● Introdução a Machine Learning
● Pipeline de um projeto de ML
● End-to-end ML com MLflow
● Ferramentas
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
Machine Learning - Introdução
Dados ???
Machine
Learning
??? $$$
Modelo
f(X) = y
Predição
A percepção é que o pipeline de ML é algo como...
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...
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
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?
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?
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….
Machine Learning - mas, ok...
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:
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”
Machine Learning - End-to-End com MLflow
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
Machine Learning - End-to-End com MLflow
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
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
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
Machine Learning - End-to-End com MLflow
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
$ 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
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
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
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.
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
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
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
Machine Learning - End-to-End com MLflow
https://mlflow.org
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
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
Dúvidas

Machine Learning: Do Notebook ao modelo em produção

  • 1.
    Machine Learning Do notebookao modelo em Produção
  • 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 aMachine 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….
  • 12.
  • 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”
  • 15.
    Machine Learning -End-to-End com MLflow
  • 16.
    O componente MLflowTracking é 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
  • 17.
    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 MLprojectdefine 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 deMLFlow 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
  • 21.
    Machine Learning -End-to-End com MLflow
  • 22.
    O MLflow Modelempacota 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 pyfuncserve -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 domodelo 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
  • 30.
    Machine Learning -End-to-End com MLflow https://mlflow.org
  • 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
  • 33.