Saltar al contenido principal

Troubleshooting

Errores de instalación

ModuleNotFoundError: No module named 'godml'

# Verifica que instalaste en el entorno correcto
which python
pip show godml

# Si usas venv, actívalo primero
source .venv/bin/activate
pip install godml

ERROR: Could not build wheels for sagemaker

Necesitas instalar con el extra [aws]:

pip install godml[aws]

Errores al ejecutar godml run

ValidationError: field required — dataset.target

El YAML no tiene la columna objetivo definida:

dataset:
uri: ./data/train.csv
target: churned # ← esto es obligatorio

FileNotFoundError: ./data/train.csv

La ruta del dataset es relativa al directorio donde ejecutas el comando, no al YAML:

# Ejecuta desde la carpeta del proyecto
cd mi-proyecto
godml run -f godml.yml

KeyError: 'churned' not in DataFrame

La columna target no existe en tu CSV. Verifica los nombres:

python -c "import pandas as pd; print(pd.read_csv('data/train.csv').columns.tolist())"

AUC threshold not met: 0.62 < 0.80

El modelo no alcanzó el umbral mínimo. Opciones:

# 1. Bajar el threshold
metrics:
- name: auc
threshold: 0.65 # más permisivo

# 2. Ajustar hiperparámetros
model:
type: xgboost
hyperparameters:
max_depth: 8 # más profundo
n_estimators: 300 # más árboles
eta: 0.1 # learning rate más bajo
tip

Un AUC bajo casi siempre indica un problema con los datos, no con el modelo. Revisa que target tenga la distribución esperada y que no haya data leakage.

Pipeline failed: dataset has only 1 unique value in target

El dataset está mal filtrado — la columna objetivo tiene un solo valor. Verifica que tu CSV tenga ejemplos de ambas clases.


Errores de compliance

ComplianceError: No columns masked but compliance is pci-dss

godml no encontró columnas PII para enmascarar. Esto puede ser intencional (tu dataset ya está limpio) o un problema de nombres de columnas.

Para verificar qué columnas detecta como sensibles:

from godml.compliance_service.pii_detector import PIIDetector
import pandas as pd

df = pd.read_csv("./data/train.csv")
detector = PIIDetector()
print(detector.scan_dataframe(df))

Errores con MLflow

mlflow.exceptions.MlflowException: Run ... is already active

Hay un run de MLflow colgado de una ejecución anterior:

import mlflow
mlflow.end_run()

O elimina la carpeta mlruns/:

rm -rf mlruns/

Address already in use: port 5001

# Usa otro puerto
mlflow ui --port 5002

Errores con SageMaker

ClientError: An error occurred (ValidationException): No resource

El role_arn no existe o está mal formado:

# Verifica el ARN
aws iam get-role --role-name SageMakerRole

ClientError: AccessDenied

El IAM role no tiene los permisos necesarios. El role necesita al menos:

  • AmazonSageMakerFullAccess
  • AmazonS3FullAccess

botocore.exceptions.NoCredentialsError

No hay credenciales AWS configuradas:

export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_DEFAULT_REGION=us-east-1

# O configura con AWS CLI
aws configure

dataset.uri must start with s3:// for sagemaker provider

Con el provider SageMaker el dataset debe estar en S3:

dataset:
uri: s3://mi-bucket/data/churn.csv # ✅ correcto
# uri: ./data/churn.csv # ❌ no funciona con sagemaker
# Sube tu dataset a S3
aws s3 cp data/churn.csv s3://mi-bucket/data/churn.csv

Modo debug

Para ver logs detallados de cada paso:

GODML_LOG_LEVEL=DEBUG godml run -f godml.yml

¿Sigues con problemas?

  • Abre un issue en GitHub con el mensaje de error completo
  • Incluye tu versión: godml --version
  • Incluye tu godml.yml (sin credenciales)