

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.

# Desviación de sesgo de modelos en producción
<a name="clarify-model-monitor-bias-drift"></a>

La supervisión SageMaker de sesgos de Amazon Clarify ayuda a los científicos de datos y a los ingenieros de aprendizaje automático a supervisar las predicciones de sesgo de forma regular. A medida que se supervisa el modelo, los clientes pueden ver informes y gráficos exportables que detallan los sesgos en SageMaker Studio y configurar alertas en Amazon CloudWatch para recibir notificaciones si se detecta un sesgo que supere un umbral determinado. El sesgo puede introducirse o agravarse en los modelos de ML implementados cuando los datos de entrenamiento difieren de los datos que el modelo ve durante la implementación (es decir, los datos en tiempo real). Estos tipos de cambios en la distribución de los datos en tiempo real pueden ser temporales (por ejemplo, debido a algunos eventos efímeros del mundo real) o permanentes. En cualquier caso, podría ser importante detectar estos cambios. Por ejemplo, los resultados de un modelo para predecir los precios de las viviendas pueden sesgarse si las tasas hipotecarias utilizadas para elaborar el modelo difieren de las tasas hipotecarias actuales del mundo real. Con las funciones de detección de sesgos de Model Monitor, cuando la SageMaker IA detecta sesgos por encima de un determinado umbral, genera automáticamente métricas que puedes ver en SageMaker Studio y a través de las CloudWatch alertas de Amazon. 

En general, medir el sesgo solo durante la train-and-deploy fase puede no ser suficiente. Es posible que, una vez implementado el modelo, la distribución de los datos que ve el modelo implementado (es decir, los datos en tiempo real) sea diferente de la distribución de los datos en el conjunto de datos de entrenamiento. Este cambio podría introducir sesgos en un modelo a lo largo del tiempo. El cambio en la distribución de los datos en tiempo real puede ser temporal (por ejemplo, debido a algún comportamiento efímero, como la temporada navideña) o permanente. En cualquier caso, puede ser importante detectar estos cambios y tomar medidas para reducir el sesgo cuando sea apropiado.

Para detectar estos cambios, SageMaker Clarify proporciona la funcionalidad de monitorear continuamente las métricas de sesgo de un modelo implementado y emitir alertas automatizadas si las métricas superan un umbral. Por ejemplo, considere la métrica de sesgo DPPL. Especifique un rango de valores permitido A=(amin​,amax​), por ejemplo, un intervalo de (-0,1, 0,1), al que debe pertenecer DPPL durante la implementación. Cualquier desviación de este rango debería generar una alerta de *sesgo detectado*. Con SageMaker Clarify, puede realizar estas comprobaciones a intervalos regulares.

Por ejemplo, puede establecer la frecuencia de las comprobaciones en 2 días. Esto significa que SageMaker Clarify calcula la métrica DPPL a partir de los datos recopilados durante un período de 2 días. En este ejemplo, Dwin son los datos que el modelo procesó durante el último período de 2 días. Se emite una alerta si el valor bwin​ de DPPL calculado en Dwin​ se encuentra fuera del rango permitido A. Este enfoque para comprobar si bwin está fuera de A puede resultar algo confuso. Dwin​ puede constar de muy pocas muestras y puede no ser representativo de la distribución de datos en tiempo real. El tamaño pequeño de la muestra significa que el valor del sesgo bwin​ calculado sobre Dwin​ podría no ser una estimación muy sólida. De hecho, se pueden observar valores de bwin muy altos (o bajos) por pura casualidad. Para garantizar que las conclusiones extraídas de los datos observados D win sean estadísticamente significativas, SageMaker Clarify utiliza intervalos de confianza. En concreto, utiliza el método del intervalo de arranque normal para construir un intervalo C = (cmin, cmax) de forma que SageMaker Clarify esté seguro de que el valor de sesgo real calculado sobre todos los datos en tiempo real está contenido en C, con una alta probabilidad. Ahora, si el intervalo de confianza C se superpone con el rango permitido A, SageMaker Clarify lo interpreta de la siguiente manera: «es probable que el valor métrico de sesgo de la distribución de datos en tiempo real se encuentre dentro del rango permitido». Si C y A están disjuntos, SageMaker Clarify está seguro de que la métrica de sesgo no se encuentra en A y genera una alerta.

## Cuaderno de ejemplo del monitor de modelos
<a name="clarify-model-monitor-sample-notebooks-bias-drift"></a>

Amazon SageMaker Clarify proporciona el siguiente ejemplo de cuaderno en el que se muestra cómo capturar datos de inferencia para un punto final en tiempo real, crear una línea base para monitorear la evolución del sesgo e inspeccionar los resultados: 
+ [Supervisión de la desviación de sesgo y la desviación de la atribución de características Amazon SageMaker Clarify](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_model_monitor/fairness_and_explainability/SageMaker-Model-Monitor-Fairness-and-Explainability.html): utilice Amazon SageMaker Model Monitor para supervisar la desviación de sesgo y la desviación de la atribución de características a lo largo del tiempo.

Se ha verificado que este portátil solo funciona en Amazon SageMaker Studio. Si necesitas instrucciones sobre cómo abrir un bloc de notas en Amazon SageMaker Studio, consulta[Crear o abrir un bloc de notas Amazon SageMaker Studio Classic](notebooks-create-open.md). Si se le pide que elija un kernel, elija **Python 3 (ciencia de datos)**. Los siguientes temas contienen los aspectos más destacados de los dos últimos pasos y contienen ejemplos de código del cuaderno de ejemplos. 

**Topics**
+ [Cuaderno de ejemplo del monitor de modelos](#clarify-model-monitor-sample-notebooks-bias-drift)
+ [Creación de una referencia de desviación de sesgo](clarify-model-monitor-bias-drift-baseline.md)
+ [Infracciones de sesgo y desviación](clarify-model-monitor-bias-drift-violations.md)
+ [Parámetros para supervisar la desviación de sesgo](clarify-config-json-monitor-bias-parameters.md)
+ [Programe trabajos de supervisión de desviaciones de sesgo](clarify-model-monitor-bias-drift-schedule.md)
+ [Inspección de informes para detectar la desviación de sesgo de los datos](clarify-model-monitor-bias-drift-report.md)
+ [CloudWatch Métricas para el análisis de la desviación de sesgo](clarify-model-monitor-bias-drift-cw.md)

# Creación de una referencia de desviación de sesgo
<a name="clarify-model-monitor-bias-drift-baseline"></a>

Una vez que haya configurado la aplicación para capturar datos de inferencia de transformación por lotes o en tiempo real, la primera tarea para supervisar la desviación de sesgo es crear una referencia. Esto implica configurar las entradas de datos, qué grupos son sensibles, cómo se capturan las predicciones y el modelo y sus métricas de sesgo posteriores al entrenamiento. Luego hay que empezar con el trabajo de referencia.

El monitor de sesgo del modelo puede detectar la desviación de sesgo de los modelos ML de forma regular. Al igual que con otros tipos de supervisión, el procedimiento estándar para crear un monitor de sesgo del modelo consiste primero en establecer una referencia y luego establecer una programación de supervisión.

```
model_bias_monitor = ModelBiasMonitor(
    role=role,
    sagemaker_session=sagemaker_session,
    max_runtime_in_seconds=1800,
)
```

`DataConfig` almacena información sobre el conjunto de datos que se va a analizar (por ejemplo, el archivo del conjunto de datos), su formato (es decir, CSV o JSON Lines), los encabezados (si los hay) y la etiqueta.

```
model_bias_baselining_job_result_uri = f"{baseline_results_uri}/model_bias"
model_bias_data_config = DataConfig(
    s3_data_input_path=validation_dataset,
    s3_output_path=model_bias_baselining_job_result_uri,
    label=label_header,
    headers=all_headers,
    dataset_type=dataset_type,
)
```

`BiasConfig` es la configuración de los grupos sensibles del conjunto de datos. Por lo general, el sesgo se mide calculando una métrica y comparándola entre grupos. El grupo de interés se denomina *faceta*. Para el sesgo posterior al entrenamiento, también debe tener en cuenta la etiqueta positiva.

```
model_bias_config = BiasConfig(
    label_values_or_threshold=[1],
    facet_name="Account Length",
    facet_values_or_threshold=[100],
)
```

`ModelPredictedLabelConfig` especifica cómo extraer una etiqueta predicha de la salida del modelo. En este ejemplo, se ha elegido el límite de 0,8 en previsión de que los clientes cambien con frecuencia. Para obtener resultados más complicados, hay algunas opciones más, como «etiqueta» para indicar el índice, el nombre o JMESPath localizar la etiqueta prevista en la carga útil de respuesta del punto final.

```
model_predicted_label_config = ModelPredictedLabelConfig(
    probability_threshold=0.8,
)
```

`ModelConfig` es la configuración relacionada con el modelo que se utilizará para la inferencia. Para calcular las métricas de sesgo posteriores al entrenamiento, el cálculo debe obtener inferencias para el nombre del modelo proporcionado. Para ello, el trabajo de procesamiento utiliza el modelo para crear un punto de conexión efímero (también conocido como *punto de conexión de sombra*). El trabajo de procesamiento elimina el punto de conexión de sombra una vez finalizados los cálculos. El monitor de explicabilidad también utiliza esta configuración.

```
model_config = ModelConfig(
    model_name=model_name,
    instance_count=endpoint_instance_count,
    instance_type=endpoint_instance_type,
    content_type=dataset_type,
    accept_type=dataset_type,
)
```

Ahora puede iniciar el trabajo de referencia.

```
model_bias_monitor.suggest_baseline(
    model_config=model_config,
    data_config=model_bias_data_config,
    bias_config=model_bias_config,
    model_predicted_label_config=model_predicted_label_config,
)
print(f"ModelBiasMonitor baselining job: {model_bias_monitor.latest_baselining_job_name}")
```

El monitor programado recoge automáticamente el nombre del trabajo de referencia y lo espera antes de que comience la supervisión.

# Infracciones de sesgo y desviación
<a name="clarify-model-monitor-bias-drift-violations"></a>

Los trabajos de desviación de sesgo evalúan las restricciones de referencia proporcionadas por la [configuración de referencia](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelBiasJobDefinition.html#sagemaker-CreateModelBiasJobDefinition-request-ModelBiasBaselineConfig) en comparación con los resultados del análisis de la `MonitoringExecution` actual. Si se detectan infracciones, el trabajo las incluye en el archivo *constraint\$1violations.json* de la ubicación de salida de la ejecución y marca el estado de la ejecución como [Interpretación de los resultados](model-monitor-interpreting-results.md).

Este es el esquema del archivo de infracciones por desviación de sesgo.
+ `facet`: el nombre de la faceta, proporcionado por la faceta de configuración del análisis del trabajo de supervisión `name_or_index`. 
+ `facet_value`: el valor de la faceta, proporcionado por la faceta de configuración del análisis del trabajo de supervisión `value_or_threshold`.
+ `metric_name`: el nombre abreviado de la métrica de sesgo. Por ejemplo, “CI” para el desequilibrio de clases. Consulte [Métricas de sesgo previas al entrenamiento](clarify-measure-data-bias.md) para los nombres abreviados de cada una de las métricas de sesgo preentrenamiento y [Métricas del sesgo de los datos y el modelo posterior al entrenamiento](clarify-measure-post-training-bias.md) para los nombres abreviados de cada una de las métricas de sesgo posteriores al entrenamiento.
+ `constraint_check_type`: el tipo de infracción supervisada. En la actualidad, solo se admite `bias_drift_check`.
+ `description`: un mensaje descriptivo para explicar la infracción.

```
{
    "version": "1.0",
    "violations": [{
        "facet": "string",
        "facet_value": "string",
        "metric_name": "string",
        "constraint_check_type": "string",
        "description": "string"
    }]
}
```

Se utiliza una métrica de sesgo para medir el nivel de igualdad en una distribución. Un valor cercano a cero indica que la distribución es más equilibrada. Si el valor de una métrica de sesgo en el archivo de resultados del análisis del trabajo (analysis.json) es peor que su valor correspondiente en el archivo de restricciones de referencia, se registra una infracción. Por ejemplo, si la restricción de referencia de la métrica de sesgo de DPPL es `0.2`, y el resultado del análisis es `0.1`, no se registra ninguna infracción porque `0.1` está más cerca de `0` que de `0.2`. Sin embargo, si el resultado del análisis es `-0.3`, se registra una infracción porque `0` está más lejos de la restricción de referencia de `0.2`.

```
{
    "version": "1.0",
    "violations": [{
        "facet": "Age",
        "facet_value": "40",
        "metric_name": "CI",
        "constraint_check_type": "bias_drift_check",
        "description": "Value 0.0751544567666083 does not meet the constraint requirement"
    }, {
        "facet": "Age",
        "facet_value": "40",
        "metric_name": "DPPL",
        "constraint_check_type": "bias_drift_check",
        "description": "Value -0.0791244970125596 does not meet the constraint requirement"
    }]
}
```

# Parámetros para supervisar la desviación de sesgo
<a name="clarify-config-json-monitor-bias-parameters"></a>

La monitorización SageMaker de sesgos de Amazon Clarify reutiliza un subconjunto de los parámetros utilizados en la configuración de análisis de. [Archivos de configuración del análisis](clarify-processing-job-configure-analysis.md) Tras describir los parámetros de configuración, en este tema se proporcionan ejemplos de archivos JSON. Estos archivos se utilizan para configurar conjuntos de datos de CSV y JSON Lines con el fin de supervisarlo para detectar desviaciones de sesgo cuando los modelos de machine learning están en producción.

Los siguientes parámetros deben proporcionarse en un archivo JSON. La ruta a este archivo JSON debe proporcionarse en el parámetro `ConfigUri` de la API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasAppSpecification](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasAppSpecification).
+ `"version"`: versión esquemática (opcional) del archivo de configuración. Si no se proporciona, se utiliza la versión más reciente compatible.
+ `"headers"`: una lista de nombres de columnas del conjunto de datos (opcional). Si `dataset_type` es `"application/jsonlines"` y se especifica `"label"`, el último encabezado pasa a ser el encabezado de la columna de etiquetas. 
+ `"label"`: atributo objetivo del modelo que se utilizará para las *métricas de sesgo* (opcional). Se especifica como nombre de columna o índice (si el formato del conjunto de datos es CSV) o como JMESPath (si el formato del conjunto de datos es líneas JSON).
+ `"label_values_or_threshold"`: lista de valores o umbrales de etiquetas (opcional). Indica un resultado positivo utilizado para las métricas de sesgo.
+ `"facet"`: una lista de características que son atributos sensibles, que se denominan facetas (opcional). Las *métricas de sesgo* utilizan las facetas en forma de pares e incluyen lo siguiente:
  + `"name_or_index"`: nombre o índice de la columna de facetas.
  + `"value_or_threshold"`: lista de valores o umbrales que puede adoptar la columna de facetas (opcional). Indica el grupo sensible, como el grupo que se utiliza para medir el sesgo. Si no se proporcionan, las métricas de sesgo se calculan como un grupo para cada valor único (en lugar de todos los valores). Si la columna de facetas es numérica, este valor umbral se aplica como límite inferior para seleccionar el grupo sensible.
+ `"group_variable"`: (opcional) un nombre de columna o un índice para indicar la variable de grupo que se utilizará para la *métrica de sesgo* *disparidad demográfica condicional*.

Los demás parámetros deben proporcionarse en `EndpointInput` (para los puntos de conexión en tiempo real) o `BatchTransformInput` (para los trabajos de transformación por lotes) de la API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasJobInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasJobInput).
+ `FeaturesAttribute`: este parámetro es obligatorio si el formato de los datos de entrada del punto de conexión es `"application/jsonlines"`. Se JMESPath utiliza para localizar las columnas de entidades si el formato del conjunto de datos es JSON Lines.
+ `InferenceAttribute`— Índice o JMESPath ubicación en la salida del modelo del atributo objetivo que se va a utilizar para monitorizar el sesgo mediante métricas de sesgo. Si no se proporciona en el caso de CSV `accept_type`, se supone que el resultado del modelo es un único valor numérico correspondiente a una puntuación o probabilidad.
+ `ProbabilityAttribute`— Índice o JMESPath ubicación en la salida del modelo para las probabilidades. Si la salida del modelo son JSON Lines con una lista de etiquetas y probabilidades, por ejemplo, se selecciona la etiqueta que corresponde a la probabilidad máxima para los cálculos de sesgo.
+ `ProbabilityThresholdAttribute`: (opcional) un valor flotante para indicar el umbral para seleccionar la etiqueta binaria, en el caso de la clasificación binaria. El valor predeterminado es 0,5.

## Ejemplo de archivos de configuración JSON para conjuntos de datos de CSV y JSON Lines
<a name="clarify-config-json-monitor-bias-parameters-examples"></a>

A continuación, se muestran ejemplos de los archivos JSON que se utilizan para configurar el conjuntos de datos de CSV y JSON Lines con el fin de supervisar la desviación de sesgo.

**Topics**
+ [Conjuntos de datos CSV](#clarify-config-json-monitor-bias-parameters-example-csv)
+ [Conjuntos de datos JSON Lines](#clarify-config-json-monitor-bias-parameters-example-jsonlines)

### Conjuntos de datos CSV
<a name="clarify-config-json-monitor-bias-parameters-example-csv"></a>

Considere un conjunto de datos que tiene cuatro columnas de características y una columna de etiquetas, donde la primera característica y etiqueta son binarias, como en el siguiente ejemplo.

```
0, 0.5814568701544718, 0.6651538910132964, 0.3138080342665499, 0
1, 0.6711642728531724, 0.7466687034026017, 0.1215477472819713, 1
0, 0.0453256543003371, 0.6377430803264152, 0.3558625219713576, 1
1, 0.4785191813363956, 0.0265841045263860, 0.0376935084990697, 1
```

Suponga que la salida del modelo tiene dos columnas, donde la primera es la etiqueta predicha y la segunda es la probabilidad, como en el siguiente ejemplo.

```
1, 0.5385257417814224
```

A continuación, el siguiente archivo de configuración JSON muestra un ejemplo de cómo se puede configurar este conjunto de datos CSV.

```
{
    "headers": [
        "feature_0",
        "feature_1",
        "feature_2",
        "feature_3",
        "target"
    ],
    "label": "target",
    "label_values_or_threshold": [1],
    "facet": [{
        "name_or_index": "feature_1",
        "value_or_threshold": [1]
    }]
}
```

La etiqueta predicha se selecciona mediante el parámetro `"InferenceAttribute"`. Se utiliza una numeración basada en cero, por lo que 0 indica la primera columna de la salida del modelo.

```
"EndpointInput": {
    ...
    "InferenceAttribute": 0
    ...
}
```

Como alternativa, puede usar diferentes parámetros para convertir los valores de probabilidad en etiquetas predichas binarias. Se utiliza una numeración basada en cero: 1 indica la segunda columna; el valor de `ProbabilityThresholdAttribute` de 0,6 indica que una probabilidad superior a 0,6 predice la etiqueta binaria como 1.

```
"EndpointInput": {
    ...
    "ProbabilityAttribute": 1,
    "ProbabilityThresholdAttribute": 0.6
    ...
}
```

### Conjuntos de datos JSON Lines
<a name="clarify-config-json-monitor-bias-parameters-example-jsonlines"></a>

Considere un conjunto de datos que tiene cuatro columnas de características y una columna de etiquetas, donde la primera característica y etiqueta son binarias, como en el siguiente ejemplo.

```
{"features":[0, 0.5814568701544718, 0.6651538910132964, 0.3138080342665499], "label":0}
{"features":[1, 0.6711642728531724, 0.7466687034026017, 0.1215477472819713], "label":1}
{"features":[0, 0.0453256543003371, 0.6377430803264152, 0.3558625219713576], "label":1}
{"features":[1, 0.4785191813363956, 0.0265841045263860, 0.0376935084990697], "label":1}
```

Suponga que la salida del modelo tiene dos columnas, donde la primera es la etiqueta predicha y la segunda es una probabilidad.

```
{"predicted_label":1, "probability":0.5385257417814224}
```

El siguiente archivo de configuración JSON muestra un ejemplo de cómo se puede configurar este conjunto de datos JSON Lines.

```
{
    "headers": [
        "feature_0",
        "feature_1",
        "feature_2",
        "feature_3",
        "target"
    ],
    "label": "label",
    "label_values_or_threshold": [1],
    "facet": [{
        "name_or_index": "feature_1",
        "value_or_threshold": [1]
    }]
}
```

A continuación, el valor del parámetro `"features"` en `EndpointInput` (para los puntos de conexión en tiempo real) o `BatchTransformInput` (para los trabajos de transformación por lotes) se utiliza para localizar las características en el conjunto de datos, y el valor del parámetro `"predicted_label"` selecciona la etiqueta predicha de la salida del modelo. 

```
"EndpointInput": {
    ...
    "FeaturesAttribute": "features",
    "InferenceAttribute": "predicted_label"
    ...
}
```

Como alternativa, puede convertir los valores de probabilidad en etiquetas binarias predichas utilizando el valor del parámetro `ProbabilityThresholdAttribute`. Un valor de 0,6, por ejemplo, indica que una probabilidad superior a 0,6 predice la etiqueta binaria como 1.

```
"EndpointInput": {
    ...
    "FeaturesAttribute": "features",
    "ProbabilityAttribute": "probability",
    "ProbabilityThresholdAttribute": 0.6
    ...
}
```

# Programe trabajos de supervisión de desviaciones de sesgo
<a name="clarify-model-monitor-bias-drift-schedule"></a>

Una vez que haya creado su referencia, puede utilizar el método `create_monitoring_schedule()` de la instancia de clase `ModelBiasModelMonitor` para programar una supervisión de la desviación de sesgo cada hora. En las siguientes secciones, se muestra cómo crear un monitor de desviación de sesgo 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.

A diferencia de la supervisión de la calidad de los datos, debe suministrar etiquetas Ground Truth si desea supervisar la calidad del modelo. Sin embargo, las etiquetas de Ground Truth podrían retrasarse. Para solucionar este problema, especifique los desplazamientos al crear su programa de supervisión. Para obtener más información acerca de cómo crear desplazamientos de tiempo, consulte [Desplazamientos del monitor de modelos](model-monitor-model-quality-schedule.md#model-monitor-model-quality-schedule-offsets). 

Si ha enviado un trabajo de referencia, el monitor recoge automáticamente la configuración de análisis del trabajo de referencia. Si omite el paso de referencia o el conjunto de datos de captura tiene una naturaleza diferente a la del conjunto de datos de entrenamiento, debe proporcionar la configuración de análisis.

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

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

```
from sagemaker.model_monitor import CronExpressionGenerator
            
model_bias_monitor = ModelBiasModelMonitor(
    role=sagemaker.get_execution_role(),
    ...
)

model_bias_analysis_config = None
if not model_bias_monitor.latest_baselining_job:
    model_bias_analysis_config = BiasAnalysisConfig(
        model_bias_config,
        headers=all_headers,
        label=label_header,
    )

model_bias_monitor.create_monitoring_schedule(
    monitor_schedule_name=schedule_name,
    post_analytics_processor_script=s3_code_postprocessor_uri,
    output_s3_uri=s3_report_path,
    statistics=model_bias_monitor.baseline_statistics(),
    constraints=model_bias_monitor.suggested_constraints(),
    schedule_cron_expression=CronExpressionGenerator.hourly(),
    enable_cloudwatch_metrics=True,
    analysis_config=model_bias_analysis_config,
    endpoint_input=EndpointInput(
        endpoint_name=endpoint_name,
        destination="/opt/ml/processing/input/endpoint",
        start_time_offset="-PT1H",
        end_time_offset="-PT0H",
        probability_threshold_attribute=0.8,
    ),
)
```

## Supervisión de la desviación de sesgo para trabajos de transformación por lotes
<a name="model-monitor-bias-quality-bt"></a>

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

```
from sagemaker.model_monitor import CronExpressionGenerator
                
model_bias_monitor = ModelBiasModelMonitor(
    role=sagemaker.get_execution_role(),
    ...
)

model_bias_analysis_config = None
if not model_bias_monitor.latest_baselining_job:
    model_bias_analysis_config = BiasAnalysisConfig(
        model_bias_config,
        headers=all_headers,
        label=label_header,
    )
    
schedule = model_bias_monitor.create_monitoring_schedule(
   monitor_schedule_name=schedule_name,
   post_analytics_processor_script=s3_code_postprocessor_uri,
   output_s3_uri=s3_report_path,
   statistics=model_bias_monitor.baseline_statistics(),
   constraints=model_bias_monitor.suggested_constraints(),
   schedule_cron_expression=CronExpressionGenerator.hourly(),
   enable_cloudwatch_metrics=True,
   analysis_config=model_bias_analysis_config,
   batch_transform_input=BatchTransformInput(
        destination="opt/ml/processing/input",
        data_captured_destination_s3_uri=s3_capture_path,
        start_time_offset="-PT1H",
        end_time_offset="-PT0H",
        probability_threshold_attribute=0.8
   ),
)
```

# Inspección de informes para detectar la desviación de sesgo de los datos
<a name="clarify-model-monitor-bias-drift-report"></a>

Si no puede inspeccionar los resultados de la supervisión en los informes generados en SageMaker Studio, puede imprimirlos de la siguiente manera:

```
schedule_desc = model_bias_monitor.describe_schedule()
execution_summary = schedule_desc.get("LastMonitoringExecutionSummary")
if execution_summary and execution_summary["MonitoringExecutionStatus"] in ["Completed", "CompletedWithViolations"]:
    last_model_bias_monitor_execution = model_bias_monitor.list_executions()[-1]
    last_model_bias_monitor_execution_report_uri = last_model_bias_monitor_execution.output.destination
    print(f'Report URI: {last_model_bias_monitor_execution_report_uri}')
    last_model_bias_monitor_execution_report_files = sorted(S3Downloader.list(last_model_bias_monitor_execution_report_uri))
    print("Found Report Files:")
    print("\n ".join(last_model_bias_monitor_execution_report_files))
else:
    last_model_bias_monitor_execution = None
    print("====STOP==== \n No completed executions to inspect further. Please wait till an execution completes or investigate previously reported failures.")
```

 Si hay infracciones en comparación con la referencia, se muestran aquí:

```
if last_model_bias_monitor_execution:
    model_bias_violations = last_model_bias_monitor_execution.constraint_violations()
    if model_bias_violations:
        print(model_bias_violations.body_dict)
```

Si tu modelo se implementa en un punto final en tiempo real, puedes ver las visualizaciones en SageMaker AI Studio de los resultados y las CloudWatch métricas del análisis seleccionando la pestaña **Puntos finales** y, a continuación, haciendo doble clic en el punto final.

# CloudWatch Métricas para el análisis de la desviación de sesgo
<a name="clarify-model-monitor-bias-drift-cw"></a>

Esta guía muestra CloudWatch las métricas y sus propiedades que puede utilizar para el análisis de la desviación de sesgo en SageMaker Clarify. Los trabajos de monitoreo de la desviación de sesgo calculan tanto [las métricas de sesgo previas](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-measure-data-bias.html) [al entrenamiento como las métricas de sesgo posteriores](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-measure-post-training-bias.html) al entrenamiento, y las publican en el siguiente CloudWatch espacio de nombres:
+ Para puntos de conexión en tiempo real: `aws/sagemaker/Endpoints/bias-metrics`
+ Para trabajos de transformación por lotes: `aws/sagemaker/ModelMonitoring/bias-metrics` 

El nombre de la CloudWatch métrica agrega el nombre abreviado de la métrica a. `bias_metric`

Por ejemplo, `bias_metric_CI` es la métrica de sesgo para el desequilibrio de clases (CI).

**nota**  
`+/- infinity` se publica como el número de coma flotante `+/- 2.348543e108`, y los errores que incluyen valores nulos no se publican.

Cada métrica tiene las siguientes propiedades:
+ `Endpoint`: el nombre del punto de conexión supervisado, si corresponde.
+ `MonitoringSchedule`: el nombre de la programación del trabajo de supervisión. 
+ `BiasStage`: el nombre de la fase del trabajo de supervisión de la desviación de sesgo. Elija `Pre-training` o `Post-Training`.
+ `Label`: el nombre de la característica objetivo, proporcionado por la configuración del análisis del trabajo de supervisión `label`.
+ `LabelValue`: el valor de la característica objetivo, proporcionado por la configuración del análisis del trabajo de supervisión `label_values_or_threshold`.
+ `Facet`: el nombre de la faceta, proporcionado por la faceta de configuración del análisis del trabajo de supervisión `name_of_index`.
+ `FacetValue`: el valor de la faceta, proporcionado por la faceta de configuración del análisis del trabajo de supervisión `nvalue_or_threshold`.

Para evitar que los trabajos de supervisión publiquen métricas, establezca `publish_cloudwatch_metrics` en `Disabled` en el mapa `Environment` de definición del [trabajo de sesgo del modelo](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelBiasJobDefinition.html).