Saltar al contenido principal

YAML Schema β€” godml.yml

Referencia completa de todos los campos del archivo de configuraciΓ³n de godml.

Estructura completa​

# ─── IdentificaciΓ³n ──────────────────────────────────
name: mi-pipeline # requerido β€” nombre del pipeline
version: 1.0.0 # requerido β€” versiΓ³n semΓ‘ntica
provider: mlflow # requerido β€” mlflow | sagemaker
description: "..." # opcional

# ─── Dataset ─────────────────────────────────────────
dataset:
uri: ./data/train.csv # requerido β€” ruta local o s3://
target: churned # requerido β€” columna objetivo
compliant_output: ./data/train_clean.csv # opcional
hash: auto # opcional β€” "auto" = pendiente; usa `godml calc-hash` para calcular y fijar el valor real
dataprep: # opcional β€” receta de limpieza (requiere su propio inputs/outputs)
inputs: [...]
outputs: [...]
steps: [...]

# ─── Modelo ──────────────────────────────────────────
model:
type: xgboost # requerido β€” ver tipos soportados
source: core # opcional β€” core | adhoc | local
hyperparameters:
max_depth: 6
eta: 0.3
n_estimators: 200
objective: binary:logistic
max_features: sqrt
random_state: 42

# ─── MΓ©tricas ────────────────────────────────────────
metrics:
- name: auc # nombre de la mΓ©trica
threshold: 0.80 # mΓ­nimo requerido para registrar el modelo
- name: f1
threshold: 0.70

# ─── Governance ──────────────────────────────────────
governance:
owner: "equipo-ml"
compliance: pci-dss # opcional β€” pci-dss | null
policy: mask_sensitive # mask_sensitive | drop_sensitive | hash_sensitive
tags:
- environment: production
- team: data-science

# ─── Deploy ──────────────────────────────────────────
deploy:
realtime: false # flag informativo (gobernanza); no levanta un servidor por sΓ­ solo
batch_output: ./output/predictions.csv
model_output: ./output/model.pkl

# ─── AWS (solo provider: sagemaker) ──────────────────
aws:
role_arn: ${SAGEMAKER_ROLE_ARN}
region: us-east-1
s3_bucket: mi-bucket
s3_prefix: godml # default: "godml"
kms_key_id: ${KMS_KEY_ID} # opcional

# ─── Compute (solo provider: sagemaker) ──────────────
compute:
preprocessing: ml.m5.large
training: ml.m5.2xlarge
evaluation: ml.m5.large

# ─── Model Registry (solo provider: sagemaker) ───────
registry:
model_package_group: mi-grupo-de-modelos
approval: manual # manual | auto

Campos por secciΓ³n​

dataset​

CampoTipoRequeridoDescripciΓ³n
uristringβœ…Ruta al dataset. Local (./data/file.csv) o S3 (s3://bucket/path).
targetstringβœ…Nombre de la columna objetivo.
compliant_outputstring❌Dónde guardar el dataset después de aplicar compliance.
hashstring❌"auto" (default) es un placeholder β€” no se calcula automΓ‘ticamente al correr el pipeline. Corre godml calc-hash para fijar el hash real en el YAML.
dataprepobject❌Receta de limpieza. Ver DataPrep.

model​

CampoTipoRequeridoDescripciΓ³n
typestringβœ…xgboost, random_forest, logistic_regression, linear_regression, lstm_forecast (godml[deep]). lightgbm solo estΓ‘ soportado en el provider sagemaker, no en mlflow.
sourcestring❌core (modelos incluidos) o local (modelo personalizado en el proyecto).
hyperparametersobjectβœ…Depende del tipo de modelo.

hyperparameters por tipo de modelo​

logistic_regression y linear_regression pasan hyperparameters directo a sklearn.linear_model.LogisticRegression/LinearRegression β€” cualquier campo que esas clases no acepten (p.ej. max_depth) rompe el entrenamiento. lstm_forecast usa un set de campos completamente distinto al de los modelos de Γ‘rboles.

CampoXGBoostRandomForestLogisticRegLinearReglstm_forecast
max_depthβœ…βœ…βŒβŒβŒ
etaβœ…βŒβŒβŒβŒ
n_estimatorsβœ…βœ…βŒβŒβŒ
objectiveβœ…βŒβŒβŒβŒ
max_featuresβŒβœ…βŒβŒβŒ
random_stateβœ…βœ…βœ…βŒ (no lo acepta sklearn LinearRegression)❌
look_backβŒβŒβŒβŒβœ… (tamaΓ±o de ventana de secuencia)
unitsβŒβŒβŒβŒβœ… (neuronas LSTM)
learning_rateβŒβŒβŒβŒβœ…
epochsβŒβŒβŒβŒβœ…
batch_sizeβŒβŒβŒβŒβœ…

governance​

CampoValoresDescripciΓ³n
compliancepci-dssNorma a aplicar. Enmascarado de columnas sensibles antes del entrenamiento.
policymask_sensitive | drop_sensitive | hash_sensitiveQuΓ© hacer con datos sensibles.

aws (solo SageMaker)​

CampoRequeridoDescripciΓ³n
role_arnβœ…ARN del IAM role con permisos de SageMaker. Soporta ${VAR}.
regionβœ…RegiΓ³n AWS. Default: us-east-1.
s3_bucketβœ…Bucket S3 para intermedios y modelos.
s3_prefix❌Prefijo dentro del bucket. Default: godml.
kms_key_id❌Key de KMS para cifrado.

Variables de entorno en el YAML​

Usa ${VAR_NAME} o ${VAR_NAME:default} para inyectar valores desde el entorno:

aws:
role_arn: ${SAGEMAKER_ROLE_ARN}
kms_key_id: ${KMS_KEY_ID:} # vacΓ­o si no estΓ‘ definida

β†’ CLI Reference