

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Deriva dei bias per i modelli in produzione
<a name="clarify-model-monitor-bias-drift"></a>

Il monitoraggio dei pregiudizi di Amazon SageMaker Clarify aiuta i data scientist e gli ingegneri del machine learning a monitorare regolarmente le previsioni relative ai pregiudizi. Man mano che il modello viene monitorato, i clienti possono visualizzare report e grafici esportabili che descrivono in dettaglio le distorsioni in SageMaker Studio e configurare avvisi in Amazon CloudWatch per ricevere notifiche se viene rilevata una distorsione oltre una certa soglia. I bias possono introdursi o aumentare nei modelli di machine learning implementati, quando i dati di addestramento differiscono dai dati che il modello riscontra durante l'implementazione (ovvero i dati in tempo reale). Questi tipi di cambiamento nella distribuzione dei dati in tempo reale possono essere temporanei (ad esempio, dovuti ad alcuni eventi reali di breve durata) o permanenti. In entrambi i casi, potrebbe essere importante rilevare questi cambiamenti. Ad esempio, i risultati di un modello per la previsione dei prezzi delle abitazioni possono distorcersi, se i tassi ipotecari utilizzati per elaborare il modello differiscono dagli attuali tassi ipotecari del mondo reale. Con le funzionalità di rilevamento delle distorsioni in Model Monitor, quando l' SageMaker intelligenza artificiale rileva distorsioni oltre una certa soglia, genera automaticamente metriche che puoi visualizzare in Studio SageMaker e tramite gli avvisi di Amazon. CloudWatch 

In generale, misurare la distorsione solo durante la fase potrebbe non essere sufficiente. train-and-deploy È possibile che in seguito all'implementazione del modello, la distribuzione dei dati visualizzati dal modello implementato (ovvero i dati in tempo reale) sia diversa dalla distribuzione dei dati nel set di dati di addestramento. Nel tempo, questo cambiamento potrebbe introdurre dei bias nel modello. La modifica nella distribuzione dei dati in tempo reale potrebbe essere temporanea (ad esempio, a causa di andamenti di breve durata come nel caso delle festività natalizie) o permanente. In entrambi i casi, potrebbe essere importante rilevare questi cambiamenti e adottare misure per ridurre il bias quando necessario.

Per rilevare queste modifiche, SageMaker Clarify offre funzionalità per monitorare continuamente le metriche di distorsione di un modello distribuito e generare avvisi automatici se le metriche superano una soglia. Consideriamo per esempio il parametro di bias della DPPL. Specifica un intervallo di valori consentito A =( amin​, amax​), ad esempio un intervallo di (-0,1; 0,1), a cui dovrebbe appartenere la DPPL durante l'implementazione. Qualsiasi deviazione da questo intervallo dovrebbe generare un avviso di *rivelazione dei bias*. Con SageMaker Clarify, è possibile eseguire questi controlli a intervalli regolari.

Ad esempio, è possibile impostare la frequenza dei controlli su 2 giorni. Ciò significa che SageMaker Clarify calcola la metrica DPPL sui dati raccolti in una finestra di 2 giorni. In questo esempio, Dwin sono i dati che il modello ha elaborato durante gli ultimi 2 giorni. Viene emesso un avviso se il valore DPPL bwin​ calcolato su Dwin​ non rientra nell'intervallo consentito A. Questo approccio per verificare se bwin è al di fuori di A può essere alquanto rumoroso. Dwin​ potrebbe essere costituito da pochissimi campioni e potrebbe non essere rappresentativo della distribuzione dei dati in tempo reale. Una dimensione del campione piccola significa che il valore del bias bwin​ calcolato su Dwin​ potrebbe non essere una stima molto affidabile. In effetti, valori molto alti (o bassi) di bwin potrebbero essere dovuti al caso. Per garantire che le conclusioni tratte dai dati osservati D win siano statisticamente significative, SageMaker Clarify utilizza intervalli di confidenza. In particolare, utilizza il metodo Normal Bootstrap Interval per costruire un intervallo C =( cmin, cmax) in modo tale che SageMaker Clarify sia sicuro che il vero valore di distorsione calcolato sui dati live completi sia contenuto in C con alta probabilità. Ora, se l'intervallo di confidenza C si sovrappone all'intervallo consentito A, SageMaker Clarify lo interpreta come «è probabile che il valore metrico di distorsione della distribuzione dei dati in tempo reale rientri nell'intervallo consentito». Se C e A sono disgiunti, SageMaker Clarify è sicuro che la metrica di distorsione non si trovi in A e genera un avviso.

## Notebook di esempio per il monitoraggio del modello
<a name="clarify-model-monitor-sample-notebooks-bias-drift"></a>

Amazon SageMaker Clarify fornisce il seguente notebook di esempio che mostra come acquisire dati di inferenza per un endpoint in tempo reale, creare una linea di base per monitorare i pregiudizi in evoluzione e ispezionare i risultati: 
+ [Monitoraggio della deriva dei pregiudizi e delle variazioni nell'attribuzione delle funzionalità Amazon SageMaker Clarify: utilizza SageMaker Amazon](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_model_monitor/fairness_and_explainability/SageMaker-Model-Monitor-Fairness-and-Explainability.html) Model Monitor per monitorare la deriva dei pregiudizi e la variazione dell'attribuzione delle funzionalità nel tempo.

È stato verificato che questo notebook funzioni solo in Amazon SageMaker Studio. Se hai bisogno di istruzioni su come aprire un notebook in Amazon SageMaker Studio, consulta[Crea o apri un notebook Amazon SageMaker Studio Classic](notebooks-create-open.md). Se ti viene richiesto di scegliere un kernel, scegli **Python 3 (Data Science)**. I seguenti argomenti contengono i punti salienti delle ultime due fasi e contengono esempi di codice tratti dal notebook di esempio. 

**Topics**
+ [Notebook di esempio per il monitoraggio del modello](#clarify-model-monitor-sample-notebooks-bias-drift)
+ [Crea una linea di base della deviazione del bias](clarify-model-monitor-bias-drift-baseline.md)
+ [Violazioni della deviazione del bias](clarify-model-monitor-bias-drift-violations.md)
+ [Parametri per il monitoraggio della deriva dei bias](clarify-config-json-monitor-bias-parameters.md)
+ [Pianifica i processi di monitoraggio della deviazione del bias](clarify-model-monitor-bias-drift-schedule.md)
+ [Ispeziona i report per rilevare eventuali deviazioni del bias dei dati](clarify-model-monitor-bias-drift-report.md)
+ [CloudWatch Metriche per Bias Drift Analysis](clarify-model-monitor-bias-drift-cw.md)

# Crea una linea di base della deviazione del bias
<a name="clarify-model-monitor-bias-drift-baseline"></a>

Dopo aver configurato l'applicazione per acquisire dati di inferenza in tempo reale o con trasformazione di batch, la prima operazione da monitorare per rilevare eventuali deviazioni del bias consiste nel creare una linea di base. Ciò comporta la configurazione degli input di dati, dei gruppi sensibili, del modo in cui vengono acquisite le previsioni e del modello e dei relativi parametri del bias post-addestramento. Quindi devi iniziare il processo di creazione della linea di base.

Il monitoraggio del bias dei modelli è in grado di rilevare regolarmente la deviazione dei bias dei modelli ML. Analogamente agli altri tipi di monitoraggio, la procedura standard per la creazione di un monitoraggio dei bias dei modelli prevede innanzitutto la creazione di linee di base e quindi la definizione di un programma di monitoraggio.

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

`DataConfig` archivia le informazioni sul set di dati da analizzare (ad esempio, il file del set di dati), il formato (ovvero CSV o JSON Lines), le intestazioni (se presenti) e l'etichetta.

```
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` è la configurazione dei gruppi sensibili nel set di dati. In genere, il bias viene misurato calcolando un parametro e confrontandolo tra i gruppi. Il gruppo di interesse è chiamato *facet*. In caso di pregiudizi post-addestramento, è necessario tenere conto anche dell'etichetta positiva.

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

`ModelPredictedLabelConfig` specifica come estrarre un'etichetta prevista dall'output del modello. In questo esempio, il limite di 0,8 è stato scelto in previsione del fatto che i clienti effettuino consegne frequenti. Per output più complicati, sono disponibili alcune altre opzioni, come «etichetta» per indicare l'indice, il nome o JMESPath per individuare l'etichetta prevista nel payload di risposta dell'endpoint.

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

`ModelConfig` è la configurazione relativa al modello da utilizzare per l'inferenza. Per calcolare i parametri di bias post-addestramento, il calcolo deve ottenere inferenze per il nome del modello fornito. A tale scopo, il processo di elaborazione utilizza il modello per creare un endpoint temporaneo (noto anche come *endpoint shadow*). Il processo di elaborazione elimina l'endpoint shadow dopo aver completato i calcoli. Questa configurazione viene utilizzata anche dal monitoraggio di spiegabilità.

```
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,
)
```

Ora puoi iniziare il processo di base.

```
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}")
```

Il monitoraggio pianificato rileva automaticamente il nome del processo di base e lo attende prima dell'inizio del monitoraggio.

# Violazioni della deviazione del bias
<a name="clarify-model-monitor-bias-drift-violations"></a>

I processi sulla deviazione del bias valutano i vincoli di base forniti dalla [configurazione di base](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelBiasJobDefinition.html#sagemaker-CreateModelBiasJobDefinition-request-ModelBiasBaselineConfig) rispetto ai risultati delle analisi correnti`MonitoringExecution`. Se vengono rilevate violazioni, il processo le elenca nel file *constraint\$1violations.json* nella posizione di output delle esecuzioni e contrassegna lo stato di esecuzione come [Interpretazione dei risultati](model-monitor-interpreting-results.md).

Di seguito è riportato lo schema del file delle violazioni di deviazione del bias.
+ `facet`: il nome del facet, fornito dal facet di configurazione dell'analisi del processo di monitoraggio `name_or_index`. 
+ `facet_value`: il valore del facet, fornito dal facet di configurazione dell'analisi del processo di monitoraggio `value_or_threshold`.
+ `metric_name`: il nome breve del parametro di bias. Ad esempio, "CI" per lo squilibrio di classe (class imbalance). Consulta [Metriche di bias pre-addestramento](clarify-measure-data-bias.md) per vedere i nomi brevi di ciascun parametro di bias pre-addestramento e [Metriche sui bias dei modelli e dei dati di post-addestramento](clarify-measure-post-training-bias.md) i nomi brevi di ciascun parametro di bias post-addestramento.
+ `constraint_check_type`: il tipo di violazione monitorata. Attualmento solo `bias_drift_check` è supportato.
+ `description`: un messaggio descrittivo che spiega la violazione.

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

Una parametro di bias viene utilizzato per misurare il livello di uguaglianza in una distribuzione. Un valore vicino a zero indica che la distribuzione è più bilanciata. Se il valore di un parametro di bias nel file dei risultati dell'analisi del processo (analysis.json) è inferiore al valore corrispondente nel file dei vincoli di base, viene registrata una violazione. Ad esempio, se il vincolo di base del parametro di base DPPL è `0.2` e il risultato dell'analisi è `0.1`, non viene registrata alcuna violazione perché `0.1` è più vicino a `0` rispetto a `0.2`. Tuttavia, se il risultato dell'analisi è `-0.3`, viene registrata una violazione perché è più lontana da `0` rispetto al vincolo di base di `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"
    }]
}
```

# Parametri per il monitoraggio della deriva dei bias
<a name="clarify-config-json-monitor-bias-parameters"></a>

Il monitoraggio delle distorsioni di Amazon SageMaker Clarify riutilizza un sottoinsieme dei parametri utilizzati nella configurazione di analisi di. [File di configurazione dell’analisi](clarify-processing-job-configure-analysis.md) Dopo aver descritto i parametri di configurazione, questo argomento fornisce esempi di file JSON. Questi file vengono utilizzati per configurare i set di dati CSV e JSON Lines per monitorarli e rilevare eventuali bias quando i modelli di machine learning sono in produzione.

I seguenti parametri devono essere forniti in un file JSON. Il percorso di questo file JSON deve essere fornito nel parametro `ConfigUri` dell'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasAppSpecification](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasAppSpecification).
+ `"version"`: (facoltativo) versione dello schema del file di configurazione. Se non viene fornita, viene utilizzata l'ultima versione supportata.
+ `"headers"`: (facoltativo) un elenco di nomi di colonne nel set di dati. Se `dataset_type` è `"application/jsonlines"` e `"label"` è specificato, l'ultima intestazione diventa l'intestazione della colonna delle etichette. 
+ `"label"`: (facoltativo) attributo di destinazione per il modello da utilizzare per i *parametri di bias*. Specificato come nome di colonna o indice (se il formato del set di dati è CSV) o come JMESPath (se il formato del set di dati è JSON Lines).
+ `"label_values_or_threshold"`: (facoltativo) elenco dei valori o delle soglie delle etichette. Indica il risultato positivo utilizzato per i parametri di bias.
+ `"facet"`: (facoltativo) un elenco di funzionalità che sono attributi sensibili, chiamate facet. I facet vengono utilizzati in coppia per i *parametri di bias* e includono quanto segue:
  + `"name_or_index"`: nome o indice della colonna facet.
  + `"value_or_threshold"`: (facoltativo) elenco di valori o soglie che la colonna facet può assumere. Indica il gruppo sensibile, ad esempio il gruppo in base al quale viene misurato il bias. Se non vengono forniti, i parametri di bias vengono calcolati come un gruppo per ogni valore univoco (anziché tutti i valori). Se la colonna facet è numerica, questo valore di soglia viene applicato come limite inferiore per selezionare il gruppo sensibile.
+ `"group_variable"`: (facoltativo) Un nome di colonna o un indice per indicare la variabile di gruppo da utilizzare per il *parametro di bias* *Disparità demografica condizionale*.

Gli altri parametri devono essere forniti in `EndpointInput` (per gli endpoint in tempo reale) o `BatchTransformInput` (per i processi di trasformazione di batch) dell'API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasJobInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasJobInput).
+ `FeaturesAttribute`: questo parametro è obbligatorio se il formato dei dati di input dell'endpoint è `"application/jsonlines"`. Viene JMESPath utilizzato per individuare le colonne delle funzionalità se il formato del set di dati è JSON Lines.
+ `InferenceAttribute`— Indice o JMESPath posizione nell'output del modello per l'attributo target da utilizzare per il monitoraggio delle distorsioni mediante metriche di distorsione. Se non viene fornito nel caso di `accept_type` CSV, si presume che l'output del modello sia un singolo valore numerico corrispondente a un punteggio o a una probabilità.
+ `ProbabilityAttribute`— Indice o JMESPath posizione nell'output del modello per quanto riguarda le probabilità. Se l'output del modello è JSON Lines con un elenco di etichette e probabilità, ad esempio, per il calcolo del bias viene selezionata l'etichetta che corrisponde alla probabilità massima.
+ `ProbabilityThresholdAttribute`: (facoltativo) un valore in virgola mobile che indica la soglia per selezionare l'etichetta binaria, nel caso della classificazione binaria. Il valore predefinito è 0,5.

## File di configurazione JSON di esempio per set di dati CSV e JSON Lines
<a name="clarify-config-json-monitor-bias-parameters-examples"></a>

Di seguito sono riportati alcuni esempi di file JSON utilizzati per configurare i set di dati CSV e JSON Lines, monitorarli e individuare eventuali deviazioni di bias.

**Topics**
+ [Set di dati CSV](#clarify-config-json-monitor-bias-parameters-example-csv)
+ [Set di dati JSON Lines](#clarify-config-json-monitor-bias-parameters-example-jsonlines)

### Set di dati CSV
<a name="clarify-config-json-monitor-bias-parameters-example-csv"></a>

Consideriamo un set di dati con quattro colonne di funzionalità e una colonna di etichette, in cui la prima funzionalità e l'etichetta sono binarie, come nell'esempio seguente.

```
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
```

Supponiamo che l'output del modello abbia due colonne, dove la prima è l'etichetta prevista e la seconda è la probabilità, come nell'esempio seguente.

```
1, 0.5385257417814224
```

Quindi, il seguente file di configurazione JSON mostra un esempio di come questo set di dati CSV può essere configurato.

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

L'etichetta prevista viene selezionata dal parametro `"InferenceAttribute"`. Viene utilizzata la numerazione a base zero, perciò 0 indica la prima colonna dell'output del modello,

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

In alternativa, è possibile utilizzare diversi parametri per convertire i valori di probabilità in etichette binarie previste. Viene utilizzata la numerazione a base zero: 1 indica la seconda colonna; il valore `ProbabilityThresholdAttribute` di 0,6 indica che una probabilità maggiore di 0,6 prevede che l'etichetta binaria sia 1.

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

### Set di dati JSON Lines
<a name="clarify-config-json-monitor-bias-parameters-example-jsonlines"></a>

Consideriamo un set di dati con quattro colonne di funzionalità e una colonna di etichette, in cui la prima funzionalità e l'etichetta sono binarie, come nell'esempio seguente.

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

Supponiamo che l'output del modello abbia due colonne, dove la prima è un'etichetta prevista e la seconda è una probabilità.

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

Il seguente file di configurazione JSON mostra un esempio di come questo set di dati JSON Lines può essere configurato.

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

Quindi, il valore del parametro `"features"` in `EndpointInput` (per gli endpoint in tempo reale) o `BatchTransformInput` (per i processi di trasformazione di batch) viene utilizzato per individuare le funzionalità nel set di dati e il valore del parametro `"predicted_label"` seleziona l'etichetta prevista dall'output del modello. 

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

In alternativa, è possibile convertire i valori di probabilità in etichette binarie previste utilizzando il valore del parametro `ProbabilityThresholdAttribute`. Un valore pari a 0,6, ad esempio, indica che una probabilità maggiore di 0,6 prevede che l'etichetta binaria sia 1.

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

# Pianifica i processi di monitoraggio della deviazione del bias
<a name="clarify-model-monitor-bias-drift-schedule"></a>

Dopo aver creato la linea di base, puoi chiamare il metodo `create_monitoring_schedule()` dell'istanza di classe `ModelBiasModelMonitor`, per pianificare un monitoraggio orario della deviazione del bias. Le sezioni seguenti mostrano come creare un monitoraggio della deviazione del bias per un modello distribuito su un endpoint in tempo reale e per un processo di trasformazione di batch.

**Importante**  
È possibile specificare un input di trasformazione di batch o un input dell'endpoint, ma non entrambi, quando si crea la pianificazione del monitoraggio.

A differenza del monitoraggio della qualità dei dati, è necessario fornire le etichette Ground Truth, se si desidera monitorare la qualità del modello. Tuttavia, le etichette Ground Truth potrebbero subire ritardi. Per risolvere questo problema, specifica gli offset quando crei la pianificazione del monitoraggio. Per ulteriori informazioni su come creare gli offset temporali, consulta [Offset di monitoraggio del modello](model-monitor-model-quality-schedule.md#model-monitor-model-quality-schedule-offsets). 

Se hai inviato un processo di base, il monitor preleva automaticamente la configurazione di analisi dal processo di base. Se si salta la fase di creazione della linea di base o se il set di dati di acquisizione è di natura diversa dal set di dati di addestramento, è necessario configurare l'analisi.

## Monitoraggio della deviazione di bias per modelli distribuiti su endpoint in tempo reale
<a name="model-monitor-bias-quality-rt"></a>

Per pianificare un monitoraggio della deviazione del bias su un endpoint in tempo reale, passa l'istanza `EndpointInput` all'argomento `endpoint_input` dell'istanza `ModelBiasModelMonitor`, come mostrato nel seguente esempio di codice:

```
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,
    ),
)
```

## Monitoraggio della deviazione del bias per processi di trasformazione di batch
<a name="model-monitor-bias-quality-bt"></a>

Per pianificare un monitoraggio della deviazione del bias per un processo di trasformazione di batch, passa l'istanza `BatchTransformInput` all'argomento `batch_transform_input` dell'istanza `ModelBiasModelMonitor`, come mostrato nel seguente esempio di codice:

```
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
   ),
)
```

# Ispeziona i report per rilevare eventuali deviazioni del bias dei dati
<a name="clarify-model-monitor-bias-drift-report"></a>

Se non riesci a controllare i risultati del monitoraggio nei report generati in SageMaker Studio, puoi stamparli come segue:

```
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.")
```

 Se ci sono violazioni rispetto alla linea di base, sono elencate qui:

```
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)
```

Se il modello è distribuito su un endpoint in tempo reale, puoi visualizzare le visualizzazioni in SageMaker AI Studio dei risultati e delle CloudWatch metriche dell'analisi scegliendo la scheda Endpoints e quindi facendo doppio clic sull'**endpoint**.

# CloudWatch Metriche per Bias Drift Analysis
<a name="clarify-model-monitor-bias-drift-cw"></a>

Questa guida mostra le CloudWatch metriche e le relative proprietà che è possibile utilizzare per l'analisi delle distorsioni in Clarify. SageMaker I job di monitoraggio della deriva dai [pregiudizi calcolano sia le metriche di distorsione prima dell'allenamento che le metriche di distorsione](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-measure-data-bias.html) [post-allenamento](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-measure-post-training-bias.html) e le pubblicano nel seguente namespace: CloudWatch 
+ Per endpoint in tempo reale: `aws/sagemaker/Endpoints/bias-metrics`
+ Per processi di trasformazione di batch: `aws/sagemaker/ModelMonitoring/bias-metrics` 

Il nome della metrica aggiunge il nome breve della metrica a. CloudWatch `bias_metric`

Ad esempio, `bias_metric_CI` è il parametro di bias per lo squilibrio di classe (CI).

**Nota**  
`+/- infinity` viene pubblicato come numero in virgola mobile `+/- 2.348543e108` e gli errori che includono valori nulli non vengono pubblicati.

Ogni parametro ha le seguenti proprietà:
+ `Endpoint`: il nome dell'endpoint monitorato, se applicabile.
+ `MonitoringSchedule`: il nome della pianificazione del processo di monitoraggio. 
+ `BiasStage`: nome della fase del processo di monitoraggio della deviazione del bias. Scegliere `Pre-training` o `Post-Training`.
+ `Label`: il nome della funzionalità di destinazione, fornito dalla configurazione dell'analisi del processo di monitoraggio `label`.
+ `LabelValue`: il valore della funzionalità di destinazione, fornito dalla configurazione dell'analisi del processo di monitoraggio `label_values_or_threshold`.
+ `Facet`: il nome del facet, fornito dal facet di configurazione dell'analisi del processo di monitoraggio `name_of_index`.
+ `FacetValue`: il valore del facet, fornito dal facet di configurazione dell'analisi del processo di monitoraggio `nvalue_or_threshold`.

Per impedire ai processi di monitoraggio di pubblicare i parametri, imposta `publish_cloudwatch_metrics` su `Disabled` nella mappa `Environment` della definizione del [processo di bias del modello](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelBiasJobDefinition.html).