Provider: MLflow
El provider mlflow ejecuta el pipeline completo en tu máquina local con tracking automático en MLflow. Es el provider por defecto y el recomendado para desarrollo y experimentación.
Configuración
provider: mlflow
dataset:
uri: ./data/train.csv # ruta local (CSV o Parquet)
target: mi_columna_target
model:
type: xgboost
hyperparameters:
max_depth: 6
eta: 0.3
metrics:
- name: auc
threshold: 0.80
deploy:
batch_output: ./output/predictions.csv
godml run -f godml.yml
Flujo de ejecución
Carga CSV local
↓
DataPrep (si dataset.dataprep está definido)
↓
Compliance (si governance.compliance está definido)
↓
Train/Test split (80/20; estratificado solo si el target es clasificación)
↓
AutoTuner (completa objective/eval_metric/criterion/solver según el tipo de tarea)
↓
Entrenamiento del modelo
↓
Evaluación (auc/accuracy/precision/recall/f1 en clasificación, mse/mae/r2 en regresión)
↓
Validación de thresholds
↓
Registro en MLflow Model Registry
↓
Guardado de predicciones (batch_output)
Tracking en MLflow UI
godml registra automáticamente en MLflow:
- Hiperparámetros del modelo
- Métricas (auc/accuracy/precision/recall/f1 para clasificación; mse/mae/r2 para regresión — p.ej.
lstm_forecast) - El dataset como artefacto
- Tags: versión, owner, dataset.target
Para ver la UI:
mlflow ui --backend-store-uri sqlite:///mlflow.db --host 0.0.0.0 --port 5001
# Abre: http://localhost:5001
El backend file:./mlruns fue descontinuado en MLflow 3.x. godml usa SQLite por defecto (mlflow.db). Al abrir la UI debes especificar el mismo backend.
AutoTuner
El AutoTuner detecta automáticamente si el problema es clasificación binaria, multiclase o regresión (según el número de valores distintos en y_train) y completa los hiperparámetros de objective/eval_metric/criterion/solver que falten — nunca pisa un valor que ya hayas puesto explícito en model.hyperparameters (usa setdefault).
model:
type: xgboost
hyperparameters:
max_depth: 6
eta: 0.3
n_estimators: 200
# objective/eval_metric quedan libres para que el AutoTuner los complete
Reglas del AutoTuner por modelo:
xgboost: multiclase →objective: multi:softprob+num_class+eval_metric: mlogloss; binaria →objective: binary:logistic+eval_metric: auc; regresión →objective: reg:squarederror.random_forest: multiclase →criterion: gini; binaria →criterion: entropy; regresión →criterion: squared_error.logistic_regression: multiclase →multi_class: ovr+solver: lbfgs; binaria →solver: liblinear.lstm_forecast: completaepochs/batch_sizesi faltan.
No ajusta hiperparámetros según el tamaño del dataset ni detecta desbalance de clases (scale_pos_weight) todavía.
Dataset con DataPrep embebido
La receta necesita su propio inputs/outputs (mismo schema que una receta standalone); godml sobreescribe dataset.uri con el resultado.
dataset:
uri: ./data/raw.csv
target: churn
dataprep:
inputs:
- name: raw
connector: csv
uri: ./data/raw.csv
outputs:
- name: clean
connector: csv
uri: ./data/raw.csv
steps:
- op: drop_columns
params:
columns: [id, created_at]
- op: fillna
params:
columns: [monthly_charges]
value: 0
- op: one_hot
params:
columns: [region, plan_type]
drop_first: true
→ Lista completa de operaciones: DataPrep Service
Guardar modelo local
deploy:
batch_output: ./output/predictions.csv
model_output: ./output/model.pkl # guarda joblib .pkl
Variables de entorno
| Variable | Descripción |
|---|---|
MLFLOW_TRACKING_URI | URI del servidor MLflow. Default: sqlite:///mlflow.db |
MLFLOW_EXPERIMENT_NAME | Nombre del experimento. Default: godml-experiment |
Requisitos
pip install godml # MLflow ya incluido
→ SageMaker Provider — ejecuta en AWS