Experiment tracking + registry: MLflow
- ⬜🗃️ Feature stores: Feast e alternativas(MLOps — ML em produção)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Dois problemas, duas peças
| Peça | Responde a | Sem ela |
|---|---|---|
| Registro de experimentos | Qual combinação de dado e hiperparâmetro gerou este resultado? | Você não reproduz o modelo que funcionou |
| Catálogo de modelos | Qual versão está em produção, e desde quando? | Ninguém sabe qual arquivo está servindo |
| Estágio da versão | Isto é candidato, produção ou aposentado? | Promoção vira cópia de arquivo à mão |
| Linhagem | De qual conjunto e commit este modelo saiu? | Auditoria impossível |
| Cartão do modelo | Onde ele falha, e para que não deve ser usado? | Quem consome não sabe em que confiar |
MLflow cobre dois problemas distintos. O primeiro é reprodutibilidade: você precisa voltar no tempo e saber exatamente qual código, qual dataset e quais hyperparams produziram aquele modelo. O segundo é governança: você precisa controlar qual versão está em produção, quem promoveu, quando e com qual evidência.
Tracking — cada experimento logado
import mlflow
import mlflow.sklearn
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import f1_score
mlflow.set_tracking_uri("http://mlflow.ffv.internal")
mlflow.set_experiment("churn-v2")
with mlflow.start_run(run_name="gbm-baseline"):
params = {"n_estimators": 300, "max_depth": 4, "learning_rate": 0.05}
model = GradientBoostingClassifier(**params).fit(X_train, y_train)
mlflow.log_params(params)
mlflow.log_metric("f1_val", f1_score(y_val, model.predict(X_val)))
mlflow.log_metric("f1_golden", f1_score(y_golden, model.predict(X_golden)))
mlflow.log_dict({"feature_snapshot": features_meta}, "features.json")
mlflow.set_tag("dataset_hash", dataset_hash)
mlflow.set_tag("owner", "growth-ml")
mlflow.sklearn.log_model(
model, artifact_path="model", registered_model_name="ffv-churn",
)Registry — ciclo de vida do modelo
from mlflow.tracking import MlflowClient
client = MlflowClient()
# Promover ModelVersion 7 para Staging apos CI verde
client.transition_model_version_stage(
name="ffv-churn",
version=7,
stage="Staging",
archive_existing_versions=False,
)
# Apos review humano e metrica validada, promover para Production
client.transition_model_version_stage(
name="ffv-churn",
version=7,
stage="Production",
archive_existing_versions=True,
)
client.update_model_version(
name="ffv-churn", version=7,
description="Gate: +2.1pp F1 golden set, sem regressao em slice age_60+, cost/1k igual",
)Use archive_existing_versions=True apenas em Production. Em Staging, mantenha histórico para comparação lado a lado.
Qual é a diferença entre acompanhar experimentos e registrar modelos?
Model Card como artifact
# model_card.yaml anexado como artifact do run
model_name: ffv-churn
version: 7
intended_use: priorizar campanhas de retencao B2C
training_data:
window: 2025-07 a 2025-12
rows: 1_240_000
drift_check: passed
metrics:
f1_golden: 0.781
auc_golden: 0.892
cost_per_1k_inferences_usd: 0.012
slices:
idade_60_plus: {f1: 0.742, delta_vs_geral: -0.039}
novos_clientes_30d: {f1: 0.612, delta_vs_geral: -0.169}
limitations:
- nao validado para clientes b2b
- baixa performance em novos clientes < 30 dias
owners: [growth-ml@ffv]Alternativas e integração
- Weights & Biases: UI mais rica, sweeps built-in, ótimo para deep learning research.
- Neptune: foco em experiment management de larga escala e metadata queryável.
- MLflow: open-source, padrão de mercado, integra com quase tudo.
Para a maioria dos times em 2026, MLflow self-hosted (ou managed via Databricks) resolve tracking + registry com custo baixo e zero lock-in.
Perguntas frequentes
❓ Para que serve um registro de modelos?
❓ Rastreamento de experimento vale para projeto pequeno?
❓ Como versionar dado junto do modelo?
Fixando
Por que a promoção a produção deve passar por aprovação registrada?
O que um cartão de modelo deve documentar, além das métricas?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…