Pular para o conteúdo principal

Deployment de modelos

Revisando o processo de minireção de dados

Enquanto não implantamos o modelo, podemos fazer tunning do modelo, reavaliar os dados, etc.

Ciclo de vida de modelos

  • Coleta e preparação de dados
  • Treinamento e validação
  • Deploy
  • Monitoramento contínuo
  • Atualização e re-treinamento
  • Depreciação de modelos desatualizados

Desafios nos deployments de modelos

  • Data drift
  • Diferença entre dev e prod
  • Monitoramento de performance
  • Gereneciamento de versões
  • Implementação e funcionamento do MLOps

MLOPS - Machine Learning Operations

Combina práticas de DevOps com Machine Learning para melhorar a qualidade e a velocidade de entrega de modelos de Machine Learning.

Automatiza o ciclo de vida de modelos de Machine Learning, incluindo treinamento, avaliação, deploy e monitoramento. Utiliza ferramentas e práticas de DevOps para facilitar a dinâmica entre cientistas de dados, engenheiros de software e operações de TI.

Ferramentas de MLOps

  • Kubeflow
  • MLflow
  • Weight & Biases
  • Neptune.ai
  • Seldon
  • Polyaxon

MLflow

  • Mlflow Tracking: Gerencia experimentos, resultados e métricas
  • Mlflow Projects: Empacota e executa código em diferentes ambientes
  • Mlflow Models: Empacota modelos em formato padrão para deploy
  • Mlflow Registry: Armazena, gerencia e controla versões de modelos

Benefícios do MLflow

  • Rastreabilidade e controle de versão
  • Integração com multiplos frameworks e linguagens
  • Simplificação de deploy e monitoramento
  • Facilita o retreiamento e atualização de modelos

Arquitetura do MLflow

MLflow

Deploy de modelos

Deploy

Uma das formas de expor os modelos é através de APIs REST.

Rodando o MLflow

python -m venv .venv
source .venv/bin/activate
# Instalando o MLflow
pip install mlflow

# Rodando o MLflow
mlflow ui
# Acessar http://localhost:5000

Um experimento é uma execução de um código de treinamento de um modelo. Cada experimento tem uma ID única e pode ter várias execuções (runs).

No Mlflow input é o parâmetro que você passa para o seu modelo, e output é metrica ou resultado do modelo.

Publicar runs, criar modelo e gerencias versões, consumido modelos via API.

loaded_model = mlflow.statsmodels.load_model(
"models:/<modelo_name>/<environment>"
)

Servindo modelos com MLflow

export MLFLOW_TRACKING_URI=http://localhost:5000
mlflow models serve -m models:/<modelo_name>/<environment> -p 5299
curl http://localhost:5200/invocations -H "Content-Type: application/json" -d '{"dataframe_records": [{"distancia": 20}]}'
#{'predictions': [{'0': 34.25675675675675}]}

Para saber mais