

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.

# Support para sus propios contenedores con Amazon SageMaker Model Monitor
<a name="model-monitor-byoc-containers"></a>

Amazon SageMaker Model Monitor proporciona un contenedor prediseñado con la capacidad de analizar los datos capturados desde puntos de enlace o trabajos de transformación por lotes para conjuntos de datos tabulares. Si desea traer su propio contenedor, el monitor de modelos proporciona puntos de extensión que puede utilizar.

Desde dentro del sistema, cuando se crea una `MonitoringSchedule`, el monitor de modelos inicia en última instancia los trabajos de procesamiento. Por lo tanto, el contenedor debe estar al tanto del contrato de trabajo de procesamiento documentado en el tema [Cómo crear su propio contenedor de procesamiento (escenario avanzado)](build-your-own-processing-container.md). Tenga en cuenta que el monitor de modelos inicia el trabajo de procesamiento en su nombre según la programación. Al invocar, el monitor de modelos configura variables de entorno adicionales para que su contenedor tenga suficiente contexto para procesar los datos para esa ejecución particular de la supervisión programada. Para obtener información adicional sobre las entradas de contenedores, consulte [Entradas de contrato de contenedor](model-monitor-byoc-contract-inputs.md).

En el contenedor, utilizando las variables de entorno/contexto anteriores, ahora puede analizar el conjunto de datos para el período actual en su código personalizado. Una vez completado este análisis, puede optar por emitir sus informes para que se carguen en buckets de S3. Los informes que genera el contenedor prediseñado se documentan en [Salidas del contrato de contenedor](model-monitor-byoc-contract-outputs.md). Si desea que la visualización de los informes funcione en SageMaker Studio, debe utilizar el mismo formato. También puede optar por emitir informes completamente personalizados.

También puede emitir CloudWatch métricas desde el contenedor siguiendo las instrucciones que se indican en[CloudWatch Métricas de Bring Your Own Containers](model-monitor-byoc-cloudwatch.md).

**Topics**
+ [Entradas de contrato de contenedor](model-monitor-byoc-contract-inputs.md)
+ [Salidas del contrato de contenedor](model-monitor-byoc-contract-outputs.md)
+ [CloudWatch Métricas de Bring Your Own Containers](model-monitor-byoc-cloudwatch.md)

# Entradas de contrato de contenedor
<a name="model-monitor-byoc-contract-inputs"></a>

La plataforma Amazon SageMaker Model Monitor invoca tu código de contenedor según un cronograma específico. Si elige escribir su propio código de contenedor, están disponibles las siguientes variables de entorno. En este contexto, puede analizar el conjunto de datos actual o evaluar las restricciones si decide emitir métricas, si procede.

Las variables de entorno disponibles son las mismas para los puntos de conexión en tiempo real y los trabajos de transformación por lotes, excepto para la variable `dataset_format`. Si utiliza un punto de conexión en tiempo real, la variable `dataset_format` admite las siguientes opciones:

```
{\"sagemakerCaptureJson\": {\"captureIndexNames\": [\"endpointInput\",\"endpointOutput\"]}}
```

Si utiliza un trabajo de transformación por lotes, `dataset_format` admite las siguientes opciones:

```
{\"csv\": {\"header\": [\"true\",\"false\"]}}
```

```
{\"json\": {\"line\": [\"true\",\"false\"]}}
```

```
{\"parquet\": {}}
```

El siguiente ejemplo de código muestra el conjunto completo de variables de entorno disponibles para el código de contenedor (y utiliza el formato `dataset_format` para un punto de conexión en tiempo real).

```
"Environment": {
 "dataset_format": "{\"sagemakerCaptureJson\": {\"captureIndexNames\": [\"endpointInput\",\"endpointOutput\"]}}",
 "dataset_source": "/opt/ml/processing/endpointdata",
 "end_time": "2019-12-01T16: 20: 00Z",
 "output_path": "/opt/ml/processing/resultdata",
 "publish_cloudwatch_metrics": "Disabled",
 "sagemaker_endpoint_name": "endpoint-name",
 "sagemaker_monitoring_schedule_name": "schedule-name",
 "start_time": "2019-12-01T15: 20: 00Z"
}
```

Parameters 


| Nombre del parámetro | Description (Descripción) | 
| --- | --- | 
| dataset\$1format |  Para un trabajo iniciado a partir de un `MonitoringSchedule` respaldado por un `Endpoint`, esto es `sageMakerCaptureJson` con los índices de captura `endpointInput` o `endpointOutput`, o ambos. Para un trabajo de transformación por lotes, esto especifica el formato de los datos, ya sea CSV, JSON o Parquet.  | 
| dataset\$1source |  S usa un punto de conexión en tiempo real, la ruta local en la que están disponibles los datos correspondientes al período de supervisión, según lo especificado por `start_time` y `end_time`. En esta ruta, los datos están disponibles en ` /{endpoint-name}/{variant-name}/yyyy/mm/dd/hh`. A veces descargamos más de lo que especifican las horas de inicio y fin. Depende del código contenedor analizar los datos según sea necesario.  | 
| output\$1path |  La ruta local para escribir informes de salida y otros archivos. Debe especificar este parámetro en la solicitud `CreateMonitoringSchedule` como `MonitoringOutputConfig.MonitoringOutput[0].LocalPath`. Se carga en la ruta de `S3Uri` especificada en `MonitoringOutputConfig.MonitoringOutput[0].S3Uri`.  | 
| publish\$1cloudwatch\$1metrics |  Para un trabajo iniciado por `CreateMonitoringSchedule`, este parámetro se establece en `Enabled`. El contenedor puede elegir escribir el archivo de CloudWatch salida de Amazon en`[filepath]`.  | 
| sagemaker\$1endpoint\$1name |  Si utiliza un punto de conexión en tiempo real, el nombre del `Endpoint` para el que se lanzó este trabajo programado.  | 
| sagemaker\$1monitoring\$1schedule\$1name |  El nombre de la `MonitoringSchedule` que lanzó este trabajo.  | 
| \$1sagemaker\$1endpoint\$1datacapture\$1prefix\$1 |  Si utiliza un punto de conexión en tiempo real, el prefijo especificado en el parámetro `DataCaptureConfig` del `Endpoint`. El contenedor puede usarlo si necesita acceder directamente a más datos de los que ya ha descargado la SageMaker IA en la `dataset_source` ruta.  | 
| start\$1time, end\$1time |  Se ejecuta la ventana de tiempo para este análisis. Por ejemplo, para un trabajo programado para ejecutarse a las 05:00 UTC y un trabajo que se ejecuta el 20/02/2020, `start_time`: es 2020-02-19T06:00:00Z y `end_time`: es 2020-02-20T05:00:00Z  | 
| baseline\$1constraints: |  La ruta local del archivo de restricción de referencia especificado en ` BaselineConfig.ConstraintResource.S3Uri`. Esto solo está disponible si este parámetro se especificó en la solicitud `CreateMonitoringSchedule`.  | 
| baseline\$1statistics |  La ruta de acceso local al archivo de estadísticas de referencia especificado en `BaselineConfig.StatisticsResource.S3Uri`. Esto solo está disponible si este parámetro se especificó en la solicitud `CreateMonitoringSchedule`:   | 

# Salidas del contrato de contenedor
<a name="model-monitor-byoc-contract-outputs"></a>

El contenedor puede analizar los datos disponibles en la ruta `*dataset_source*` y escribir informes en la ruta en `*output_path*.` El código de contenedor puede escribir cualquier informe que se adapte a sus necesidades.

Si utiliza la estructura y el contrato siguientes, la SageMaker IA trata de forma especial algunos archivos de salida en la visualización y la API. Esto solo se aplica a los conjuntos de datos tabulares.

Archivos de salida para conjuntos de datos tabulares


| 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. El esquema de este archivo está disponible en la siguiente sección.  | 
| constraints.json |  Se espera que este archivo tenga las restricciones en las características observadas. El esquema de este archivo está disponible en la siguiente sección.  | 
| constraints\$1violations.json |  Se espera que este archivo tenga la lista de infracciones encontradas en este conjunto de datos actual en comparación con el archivo de estadísticas de referencia y restricciones especificado en la ruta `baseline_constaints` y `baseline_statistics`.  | 

Además, si el `publish_cloudwatch_metrics` valor es código `"Enabled"` contenedor puede emitir CloudWatch métricas de Amazon en esta ubicación:`/opt/ml/output/metrics/cloudwatch`. El esquema de estos archivos se describe en las secciones siguientes.

**Topics**
+ [Esquema para estadísticas (archivo statistics.json)](model-monitor-byoc-statistics.md)
+ [Esquema para restricciones (archivo constraints.json)](model-monitor-byoc-constraints.md)

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

El esquema definido en el archivo `statistics.json` especifica los parámetros estadísticos que se van a calcular para la referencia y los datos que se capturan. También configura el bucket que debe utilizar [KLL](https://datasketches.apache.org/docs/KLL/KLLSketch.html), un boceto de cuantiles muy compacto con esquema de compactación diferido.

```
{
    "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
        }
    ]
}
```

**Notas**  
La SageMaker IA reconoce las métricas especificadas en cambios de visualización posteriores. El contenedor puede emitir más métricas en caso necesario.
El [boceto KLL](https://datasketches.apache.org/docs/KLL/KLLSketch.html) es el boceto reconocido. Los contenedores personalizados pueden escribir su propia representación, pero la SageMaker IA no los reconocerá en las visualizaciones.
Por defecto, la distribución se materializa en 10 buckets. No puede cambiar este valor.

# Esquema para restricciones (archivo constraints.json)
<a name="model-monitor-byoc-constraints"></a>

Se utiliza un archivo constraints.json para expresar las restricciones que debe cumplir un conjunto de datos. Los contenedores de Amazon SageMaker Model Monitor pueden usar el archivo constraints.json para evaluar los conjuntos de datos. Los contenedores prediseñados proporcionan la capacidad de generar automáticamente el archivo constraints.json para un conjunto de datos de referencia. Si utiliza su propio contenedor, puede proporcionarle habilidades similares o puede crear el archivo constraints.json de otra manera. Aquí está el esquema para el archivo de restricciones que utiliza el contenedor prediseñado. Al utilizar sus propios contenedores puede adoptar el mismo formato o mejorarlo según sea necesario.

```
{
    "version": 0,
    "features":
    [
        {
            "name": "string",
            "inferred_type": "Integral" | "Fractional" | 
                    | "String" | "Unknown",
            "completeness": number,
            "num_constraints":
            {
                "is_non_negative": boolean
            },
            "string_constraints":
            {
                "domains":
                [
                    "list of",
                    "observed values",
                    "for small cardinality"
                ]
            },
            "monitoringConfigOverrides":
            {}
        }
    ],
    "monitoring_config":
    {
        "evaluate_constraints": "Enabled",
        "emit_metrics": "Enabled",
        "datatype_check_threshold": 0.1,
        "domain_content_threshold": 0.1,
        "distribution_constraints":
        {
            "perform_comparison": "Enabled",
            "comparison_threshold": 0.1,
            "comparison_method": "Simple"||"Robust",
            "categorical_comparison_threshold": 0.1,
            "categorical_drift_method": "LInfinity"||"ChiSquared"
        }
    }
}
```

El objeto `monitoring_config` contiene opciones para el trabajo de supervisión de la característica. En la tabla siguiente se describe cada opción.

Supervisión de restricciones

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/model-monitor-byoc-constraints.html)

# CloudWatch Métricas de Bring Your Own Containers
<a name="model-monitor-byoc-cloudwatch"></a>

Si el `publish_cloudwatch_metrics` valor está `Enabled` en el `Environment` mapa del `/opt/ml/processing/processingjobconfig.json` archivo, el código del contenedor emite CloudWatch las métricas de Amazon en esta ubicación:`/opt/ml/output/metrics/cloudwatch`. 

El esquema de este archivo se basa estrechamente en la CloudWatch `PutMetrics` API. El espacio de nombres no se especifica aquí. De forma predeterminada, es lo siguiente:
+ `For real-time endpoints: /aws/sagemaker/Endpoint/data-metrics`
+ `For batch transform jobs: /aws/sagemaker/ModelMonitoring/data-metrics`

Sin embargo, puede especificar dimensiones. Se recomienda agregar las siguientes dimensiones como mínimo:
+ `Endpoint` y `MonitoringSchedule` para puntos de conexión en tiempo real
+ `MonitoringSchedule` para trabajos de transformación por lotes 

En los siguientes fragmentos de código JSON, se muestra cómo configurar las dimensiones.

Para un punto de conexión en tiempo real, consulte el siguiente fragmento de código JSON, que incluye las dimensiones `Endpoint` y `MonitoringSchedule`:

```
{ 
    "MetricName": "", # Required
    "Timestamp": "2019-11-26T03:00:00Z", # Required
    "Dimensions" : [{"Name":"Endpoint","Value":"endpoint_0"},{"Name":"MonitoringSchedule","Value":"schedule_0"}]
    "Value": Float,
    # Either the Value or the StatisticValues field can be populated and not both.
    "StatisticValues": {
        "SampleCount": Float,
        "Sum": Float,
        "Minimum": Float,
        "Maximum": Float
    },
    "Unit": "Count", # Optional
}
```

Para un trabajo de transformación por lotes, consulte el siguiente fragmento de JSON, que incluye la dimensión `MonitoringSchedule`:

```
{ 
    "MetricName": "", # Required
    "Timestamp": "2019-11-26T03:00:00Z", # Required
    "Dimensions" : [{"Name":"MonitoringSchedule","Value":"schedule_0"}]
    "Value": Float,
    # Either the Value or the StatisticValues field can be populated and not both.
    "StatisticValues": {
        "SampleCount": Float,
        "Sum": Float,
        "Minimum": Float,
        "Maximum": Float
    },
    "Unit": "Count", # Optional
}
```