Neste tutorial, construímos um fluxo de trabalho completo de experimentação e implantação de ML de nível de produção usando MLflow. Começamos lançando um MLflow Tracking Server dedicado com um backend estruturado e um armazenamento de artefatos, o que nos permite rastrear experimentos de maneira escalável e reproduzível. Em seguida, treinamos vários modelos de machine learning usando uma varredura de hiperparâmetros aninhada, enquanto registramos automaticamente parâmetros, métricas e artefatos do modelo. Aprimoramos o experimento registrando visualizações de diagnóstico, avaliando o melhor modelo usando a estrutura de avaliação integrada do MLflow e armazenando resultados detalhados de avaliação para análise futura. Também implantamos o modelo treinado usando os recursos nativos de serviço do MLflow e interagimos com ele por meio de uma API REST, demonstrando como o MLflow preenche a lacuna entre a experimentação e a implantação de modelos no mundo real. Copiar Código Copiado Use um navegador diferente!pip -q install "mlflow>=3.0.0" scikit-learn pandas numpy matplotlib requests import os import time import json import shutil import socket import signal import subprocess from pathlib import Path import numpy as np import pandas as pd import matplotlib.pyplot as plt import requests from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.metrics import ( roc_auc_score, accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, ConfusionMatrixDisplay, ) import mlflow import mlflow.sklearn from mlflow.models.signature import infer_signature def _is_port_open(host: str, port: int, timeout_s: float = 0.2) -> bool: with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.settimeout(timeout_s) return s.connect_ex((host, port)) == 0 def _wait_for_http(url: str, timeout_s: int = 30) -> None: t0 = time.time() last_err = None while time.time() - t0 < timeout_s: try: r = requests.get(url, timeout=1) if r.status_code < 500: return except Exception as e: last_err = e time.sleep(0.5) raise RuntimeError(f"Server not ready at {url}. Last error: {last_err}") def _safe_kill(proc: subprocess.Popen): if proc is None: return try: proc.terminate() try: proc.wait(timeout=5) except subprocess.TimeoutExpired: proc.kill() except Exception: pass Instalamos todas as dependências necessárias e importamos as bibliotecas completas do MLflow, scikit-learn e do sistema necessárias para o rastreamento e implantação de experimentos.
Fonte: MarkTechPost
Publicado em 2026-03-01