

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Calidad de datos
<a name="model-monitor-data-quality"></a>

La supervisión de la calidad de los datos supervisa automáticamente los modelos de machine learning (ML) en producción y le avisa cuando surgen problemas de calidad de datos. Los modelos de ML en producción tienen que hacer predicciones sobre datos del mundo real que no están cuidadosamente seleccionados como la mayoría de los conjuntos de datos de entrenamiento. Si la naturaleza estadística de los datos que recibe el modelo mientras está en producción se desvía de la naturaleza de los datos de referencia en los que se realizó el entrenamiento, el modelo comienza a perder precisión en sus predicciones. Amazon SageMaker Model Monitor utiliza reglas para detectar la desviación de datos y le avisa cuando ocurre. Para supervisar la calidad de los datos, siga estos pasos:
+ Habilite la captura de datos. Esto captura las entradas y salidas de inferencias de un punto de conexión de inferencia en tiempo real o de un trabajo de transformación por lotes y almacena los datos en Amazon S3. Para obtener más información, consulte [Captura de datos](model-monitor-data-capture.md).
+ Cree una referencia. En este paso, ejecutará un trabajo de referencia que analiza un conjunto de datos de entrada que usted proporciona. La referencia calcula las restricciones de esquema de referencia y las estadísticas para cada característica utilizando [Deequ](https://github.com/awslabs/deequ), una biblioteca de código abierto creada en Apache Spark, que se utiliza para medir la calidad de los datos en grandes conjuntos de datos. Para obtener más información, consulte [Crear una referencia](model-monitor-create-baseline.md).
+ Defina y programe los trabajos de supervisión de la calidad de los datos. Para obtener información específica y ejemplos de códigos de trabajos de supervisión de la calidad de los datos, consulte [Programe trabajos de supervisión de la calidad de los datos](model-monitor-schedule-data-monitor.md). Para obtener información general sobre los trabajos de supervisión, consulte [Programe trabajos de supervisión](model-monitor-scheduling.md).
  + Si lo desea, utilice scripts de preprocesamiento y postprocesamiento para transformar los datos que salen del análisis de calidad de los datos. Para obtener más información, consulte [Preprocesamiento y postprocesamiento](model-monitor-pre-and-post-processing.md).
+ Vea las métricas de calidad de los datos. Para obtener más información, consulte [Esquema para estadísticas (archivo statistics.json)](model-monitor-interpreting-statistics.md).
+ Integre la supervisión de la calidad de los datos con Amazon CloudWatch. Para obtener más información, consulte [CloudWatch Métricas](model-monitor-interpreting-cloudwatch.md).
+ Interprete los resultados de un trabajo de supervisión. Para obtener más información, consulte [Interpretación de los resultados](model-monitor-interpreting-results.md).
+ Utilice SageMaker Studio para permitir la supervisión de la calidad de los datos y visualizar los resultados si utiliza un punto final en tiempo real. Para obtener más información, consulte [Visualice los resultados de los puntos de enlace en tiempo real en Amazon Studio SageMaker](model-monitor-interpreting-visualize-results.md).

**nota**  
El monitor de modelos calcula las métricas y estadísticas del modelo únicamente a partir de datos tabulares. Por ejemplo, aún se puede supervisar un modelo de clasificación de imágenes que toma imágenes como entrada y genera una etiqueta basada en esa imagen. El monitor de modelos podría calcular métricas y estadísticas para la salida, no para la entrada.

**Topics**
+ [Crear una referencia](model-monitor-create-baseline.md)
+ [Programe trabajos de supervisión de la calidad de los datos](model-monitor-schedule-data-monitor.md)
+ [Esquema para estadísticas (archivo statistics.json)](model-monitor-interpreting-statistics.md)
+ [CloudWatch Métricas](model-monitor-interpreting-cloudwatch.md)
+ [Esquema para infracciones (archivo constraint\$1violations.json)](model-monitor-interpreting-violations.md)

# Crear una referencia
<a name="model-monitor-create-baseline"></a>

Los cálculos de referencia de las estadísticas y las restricciones son necesarios como norma para detectar la deriva de los datos y otros problemas de calidad de los datos. El monitor de modelos proporciona un contenedor integrado que brinda la capacidad de sugerir las restricciones automáticamente para la entrada CSV y JSON plana. Este *sagemaker-model-monitor-analyzer*contenedor también le proporciona una gama de capacidades de monitoreo de modelos, incluida la validación de restricciones con respecto a una línea base y la emisión de métricas de Amazon CloudWatch . Este contenedor se basa en la versión 3.3.0 de Spark y se crea con la versión 2.0.2 de [Deequ](https://github.com/awslabs/deequ). Todos los nombres de las columnas de su conjunto de datos de referencia deben cumplir con Spark. Para los nombres de las columnas, usa solo caracteres en minúscula y `_` como único carácter especial.

El conjunto de datos de entrenamiento que utilizó para entrenar al modelo suele ser un buen conjunto de datos de referencia. El esquema de datos del conjunto de datos de entrenamiento y el esquema de conjunto de datos de inferencia deben coincidir exactamente (el número y el orden de las características). Ten en cuenta que se supone que las prediction/output columnas son las primeras columnas del conjunto de datos de entrenamiento. A partir del conjunto de datos de entrenamiento, puedes pedirle a la SageMaker IA que sugiera un conjunto de restricciones de referencia y que genere estadísticas descriptivas para explorar los datos. Para este ejemplo, cargue el conjunto de datos de entrenamiento que se utilizó para entrenar el modelo preentrenado incluido en este ejemplo. Si ya ha almacenado el conjunto de datos de entrenamiento en Amazon S3, puede apuntar a él directamente.

**Para crear una referencia a partir de un conjunto de datos de entrenamiento** 

Cuando tenga los datos de entrenamiento listos y almacenados en Amazon S3, inicie un trabajo de procesamiento básico con el `DefaultModelMonitor.suggest_baseline(..)` [SDK de Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable). Esto utiliza un [Contenedor prediseñado de Amazon SageMaker Model Monitor](model-monitor-pre-built-container.md) que genera estadísticas de referencia y sugiere restricciones de referencia para el conjunto de datos y las escribe en la ubicación `output_s3_uri` que especifique.

```
from sagemaker.model_monitor import DefaultModelMonitor
from sagemaker.model_monitor.dataset_format import DatasetFormat

my_default_monitor = DefaultModelMonitor(
    role=role,
    instance_count=1,
    instance_type='ml.m5.xlarge',
    volume_size_in_gb=20,
    max_runtime_in_seconds=3600,
)

my_default_monitor.suggest_baseline(
    baseline_dataset=baseline_data_uri+'/training-dataset-with-header.csv',
    dataset_format=DatasetFormat.csv(header=True),
    output_s3_uri=baseline_results_uri,
    wait=True
)
```

**nota**  
Si proporciona feature/column los nombres del conjunto de datos de entrenamiento en la primera fila y establece la `header=True` opción como se muestra en el ejemplo de código anterior, SageMaker AI utilizará el nombre de la función en el archivo de restricciones y estadísticas.

Las estadísticas de referencia para el conjunto de datos están contenidas en el archivo statistics.json y las restricciones de referencia sugeridas están contenidas en el archivo constraints.json en la ubicación que especifique con `output_s3_uri`.

Archivos de salida para estadísticas y restricciones de conjunto de datos tabular


| Nombre de archivo | Description (Descripción) | 
| --- | --- | 
| statistics.json |  Se espera que este archivo tenga estadísticas en columnas para cada característica en el conjunto de datos que se analiza. Para obtener más información acerca del esquema para este archivo, consulte [Esquema para estadísticas (archivo statistics.json)](model-monitor-byoc-statistics.md).  | 
| constraints.json |  Se espera que este archivo tenga las restricciones en las características observadas. Para obtener más información acerca del esquema para este archivo, consulte [Esquema para restricciones (archivo constraints.json)](model-monitor-byoc-constraints.md).  | 

El [SDK de Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) proporciona funciones prácticas que se describen para generar las restricciones y las estadísticas de referencia. Pero si desea llamar al trabajo de procesamiento directamente para este fin en su lugar, debe establecer el mapa `Environment` como se muestra en el siguiente ejemplo:

```
"Environment": {
    "dataset_format": "{\"csv\”: { \”header\”: true}",
    "dataset_source": "/opt/ml/processing/sm_input",
    "output_path": "/opt/ml/processing/sm_output",
    "publish_cloudwatch_metrics": "Disabled",
}
```

# Programe trabajos de supervisión de la calidad de los datos
<a name="model-monitor-schedule-data-monitor"></a>

Una vez que haya creado su referencia, puede utilizar el método `create_monitoring_schedule()` de la instancia de clase `DefaultModelMonitor` para programar una supervisión de calidad de los datos cada hora. En las siguientes secciones, se muestra cómo crear un monitor de calidad de datos para un modelo implementado en un punto de conexión en tiempo real, así como para un trabajo de transformación por lotes.

**importante**  
Puede especificar una entrada de transformación por lotes o una entrada de punto de conexión, pero no ambas, al crear su programa de supervisión.

## Supervisión de la calidad de los datos para los modelos implementados en puntos de conexión en tiempo real
<a name="model-monitor-data-quality-rt"></a>

Para programar un monitor de calidad de datos para un punto de conexión en tiempo real, pase la instancia `EndpointInput` al argumento `endpoint_input` de la instancia `DefaultModelMonitor`, como se muestra en el siguiente ejemplo de código:

```
from sagemaker.model_monitor import CronExpressionGenerator
                
data_quality_model_monitor = DefaultModelMonitor(
   role=sagemaker.get_execution_role(),
   ...
)

schedule = data_quality_model_monitor.create_monitoring_schedule(
   monitor_schedule_name=schedule_name,
   post_analytics_processor_script=s3_code_postprocessor_uri,
   output_s3_uri=s3_report_path,
   schedule_cron_expression=CronExpressionGenerator.hourly(),
   statistics=data_quality_model_monitor.baseline_statistics(),
   constraints=data_quality_model_monitor.suggested_constraints(),
   schedule_cron_expression=CronExpressionGenerator.hourly(),
   enable_cloudwatch_metrics=True,
   endpoint_input=EndpointInput(
        endpoint_name=endpoint_name,
        destination="/opt/ml/processing/input/endpoint",
   )
)
```

## Supervisión de la calidad de los datos para trabajos de transformación por lotes
<a name="model-monitor-data-quality-bt"></a>

Para programar un monitor de calidad de datos para un trabajo de transformación por lotes, pase la instancia `BatchTransformInput` al argumento `batch_transform_input` de la instancia `DefaultModelMonitor`, como se muestra en el siguiente ejemplo de código:

```
from sagemaker.model_monitor import CronExpressionGenerator
                
data_quality_model_monitor = DefaultModelMonitor(
   role=sagemaker.get_execution_role(),
   ...
)

schedule = data_quality_model_monitor.create_monitoring_schedule(
    monitor_schedule_name=mon_schedule_name,
    batch_transform_input=BatchTransformInput(
        data_captured_destination_s3_uri=s3_capture_upload_path,
        destination="/opt/ml/processing/input",
        dataset_format=MonitoringDatasetFormat.csv(header=False),
    ),
    output_s3_uri=s3_report_path,
    statistics= statistics_path,
    constraints = constraints_path,
    schedule_cron_expression=CronExpressionGenerator.hourly(),
    enable_cloudwatch_metrics=True,
)
```

# Esquema para estadísticas (archivo statistics.json)
<a name="model-monitor-interpreting-statistics"></a>

El contenedor prediseñado de Amazon SageMaker Model Monitor calcula según las estadísticas. column/feature Las estadísticas se calculan para el conjunto de datos de referencia y también para el conjunto de datos actual que se está analizando.

```
{
    "version": 0,
    # dataset level stats
    "dataset": {
        "item_count": number
    },
    # feature level stats
    "features": [
        {
            "name": "feature-name",
            "inferred_type": "Fractional" | "Integral",
            "numerical_statistics": {
                "common": {
                    "num_present": number,
                    "num_missing": number
                },
                "mean": number,
                "sum": number,
                "std_dev": number,
                "min": number,
                "max": number,
                "distribution": {
                    "kll": {
                        "buckets": [
                            {
                                "lower_bound": number,
                                "upper_bound": number,
                                "count": number
                            }
                        ],
                        "sketch": {
                            "parameters": {
                                "c": number,
                                "k": number
                            },
                            "data": [
                                [
                                    num,
                                    num,
                                    num,
                                    num
                                ],
                                [
                                    num,
                                    num
                                ][
                                    num,
                                    num
                                ]
                            ]
                        }#sketch
                    }#KLL
                }#distribution
            }#num_stats
        },
        {
            "name": "feature-name",
            "inferred_type": "String",
            "string_statistics": {
                "common": {
                    "num_present": number,
                    "num_missing": number
                },
                "distinct_count": number,
                "distribution": {
                    "categorical": {
                         "buckets": [
                                {
                                    "value": "string",
                                    "count": number
                                }
                          ]
                     }
                }
            },
            #provision for custom stats
        }
    ]
}
```

Tenga en cuenta lo siguiente:
+ Los contenedores prediseñados calculan el [boceto KLL](https://datasketches.apache.org/docs/KLL/KLLSketch.html) que es un boceto compacto de cuantiles.
+ Por defecto, materializamos la distribución en 10 buckets. Esto no se puede configurar actualmente.

# CloudWatch Métricas
<a name="model-monitor-interpreting-cloudwatch"></a>

Puede usar el contenedor integrado de Amazon SageMaker Model Monitor para CloudWatch las métricas. Cuando la `emit_metrics` opción está `Enabled` en el archivo de restricciones de referencia, SageMaker AI emite estas métricas para cada una de las feature/column observadas en el conjunto de datos en el siguiente espacio de nombres:
+ Espacio de nombres `For real-time endpoints: /aws/sagemaker/Endpoints/data-metric` con dimensiones `EndpointName` y `ScheduleName`.
+ Espacio de nombres `For batch transform jobs: /aws/sagemaker/ModelMonitoring/data-metric` con dimensión `MonitoringSchedule`.

En el caso de los campos numéricos, el contenedor integrado emite las siguientes métricas: CloudWatch
+ Métrica: Máx → consulta para `MetricName: feature_data_{feature_name}, Stat: Max`
+ Métrica: Mín → consulta para `MetricName: feature_data_{feature_name}, Stat: Min`
+ Métrica: Suma → consulta para `MetricName: feature_data_{feature_name}, Stat: Sum`
+ Métrica: SampleCount → consulta para `MetricName: feature_data_{feature_name}, Stat: SampleCount`
+ Métrica: Promedio → consulta para `MetricName: feature_data_{feature_name}, Stat: Average`

Tanto para los campos numéricos como para los de cadena, el contenedor integrado emite las siguientes CloudWatch métricas:
+ Métrica: Integridad → consulta para `MetricName: feature_non_null_{feature_name}, Stat: Sum`
+ Métrica: Desviación de la referencia → consulta para `MetricName: feature_baseline_drift_{feature_name}, Stat: Sum`

# Esquema para infracciones (archivo constraint\$1violations.json)
<a name="model-monitor-interpreting-violations"></a>

El archivo de infracciones se genera como la salida de a `MonitoringExecution`, que enumera los resultados de la evaluación de las infracciones (especificadas en el archivo constraints.json) respecto al conjunto de datos actual que se analizó. El contenedor prediseñado de Amazon SageMaker Model Monitor proporciona las siguientes comprobaciones de infracciones.

```
{
    "violations": [{
      "feature_name" : "string",
      "constraint_check_type" :
              "data_type_check",
            | "completeness_check",
            | "baseline_drift_check",
            | "missing_column_check",
            | "extra_column_check",
            | "categorical_values_check"
      "description" : "string"
    }]
}
```

Tipos de infracciones supervisadas 


| Tipo de comprobación de infracción | Description (Descripción)  | 
| --- | --- | 
| data\$1type\$1check | Si los tipos de datos de la ejecución actual no son los mismos que en el conjunto de datos de referencia, se marca esta infracción. Durante el paso de línea base, las restricciones generadas sugieren el tipo de datos inferido para cada columna. El parámetro `monitoring_config.datatype_check_threshold` se puede modificar para ajustar el umbral cuando se marca como infracción.  | 
| completeness\$1check | Si la integridad (% de elementos no nulos) observada en la ejecución actual supera el umbral especificado en el umbral de integridad especificado por característica, se marca esta infracción. Durante el paso de referencia, las restricciones generadas sugieren un valor de integridad.   | 
| baseline\$1drift\$1check | Si la distancia de distribución calculada entre los conjuntos de datos actual y de referencia es mayor que el umbral especificado en `monitoring_config.comparison_threshold`, se marca esta infracción.  | 
| missing\$1column\$1check | Si el número de columnas en el conjunto de datos actual es menor que el número en el conjunto de datos de referencia, se marca esta infracción.  | 
| extra\$1column\$1check | Si el número de columnas del conjunto de datos actual es mayor que el número en la referencia, se marca esta infracción.  | 
| categorical\$1values\$1check | Si hay más valores desconocidos en el conjunto de datos actual que en el conjunto de datos de referencia, se marca esta infracción. Este valor viene dictado por el umbral de `monitoring_config.domain_content_threshold`.  | 