

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Desvio de polarização para modelos em produção
<a name="clarify-model-monitor-bias-drift"></a>

O monitoramento de viés do Amazon SageMaker Clarify ajuda cientistas de dados e engenheiros de ML a monitorar regularmente as previsões de viés. À medida que o modelo é monitorado, os clientes podem visualizar relatórios e gráficos exportáveis detalhando o viés no SageMaker Studio e configurar alertas na Amazon CloudWatch para receber notificações se um viés além de um determinado limite for detectado. O desvio pode ser introduzido ou exacerbado nos modelos de ML implantados quando os dados de treinamento são diferentes dos dados que o modelo vê durante a implantação (ou seja, os dados dinâmicos). Esses tipos de mudanças na distribuição de dados dinâmicos podem ser temporários (por exemplo, devido a alguns eventos reais de curta duração) ou permanentes. Em ambos os casos, pode ser importante detectar essas alterações. Por exemplo, os resultados de um modelo para prever preços de casas podem se tornar tendenciosos se as taxas de hipoteca usadas para treinar o modelo diferirem das taxas de hipoteca atuais do mundo real. Com os recursos de detecção de viés no Model Monitor, quando a SageMaker IA detecta um viés além de um determinado limite, ela gera automaticamente métricas que você pode visualizar no SageMaker Studio e por meio de alertas da Amazon CloudWatch. 

Em geral, medir o viés somente durante a train-and-deploy fase pode não ser suficiente. É possível que, após a implantação do modelo, a distribuição dos dados que o modelo implantado vê (ou seja, os dados dinâmicos) seja diferente da distribuição de dados no conjunto de dados de treinamento. Essa mudança pode introduzir desvios em um modelo ao longo do tempo. A mudança na distribuição de dados dinâmicos pode ser temporária (por exemplo, devido a algum comportamento de curta duração, como as festas de fim de ano) ou permanente. Em ambos os casos, pode ser importante detectar essas mudanças e tomar medidas para reduzir o desvio, quando apropriado.

Para detectar essas mudanças, o SageMaker Clarify fornece funcionalidade para monitorar continuamente as métricas de viés de um modelo implantado e gerar alertas automatizados se as métricas excederem um limite. Por exemplo, considere a métrica de desvio da DPPL. Especifique um intervalo permitido de valores A = (amin​, amax​), por exemplo, um intervalo de (-0,1, 0,1), ao qual a DPPL deve pertencer durante a implantação. Qualquer desvio desse intervalo deve gerar um alerta de *desvio detectado*. Com o SageMaker Clarify, você pode realizar essas verificações em intervalos regulares.

Por exemplo, você pode definir a frequência das verificações para 2 dias. Isso significa que o SageMaker Clarify calcula a métrica DPPL nos dados coletados durante uma janela de 2 dias. Neste exemplo, Dwin são os dados que o modelo processou durante a última janela de 2 dias. Um alerta será emitido se o valor da DPPL bwin​ calculado em Dwin​ estiver fora de um intervalo permitido A. Essa abordagem para verificar se bwin está fora de A pode ser um pouco ruidosa. Dwin​ pode consistir em muito poucas amostras e pode não ser representativo da distribuição de dados dinâmicos. O pequeno tamanho da amostra significa que o valor do desvio bwin​ calculado sobre Dwin​ pode não ser uma estimativa muito robusta. Na verdade, valores muito altos (ou baixos) de bwin podem ser observados puramente por acaso. Para garantir que as conclusões tiradas dos dados D observados win sejam estatisticamente significativas, o SageMaker Clarify faz uso de intervalos de confiança. Especificamente, ele usa o método Normal Bootstrap Interval para construir um intervalo C= (cmin, cmax) de forma que SageMaker Clarify tenha certeza de que o verdadeiro valor de polarização calculado sobre os dados ativos completos está contido em C com alta probabilidade. Agora, se o intervalo de confiança C se sobrepor ao intervalo permitido A, SageMaker Clarify o interpreta como “é provável que o valor da métrica de viés da distribuição de dados ao vivo esteja dentro do intervalo permitido”. Se C e A forem disjuntos, o SageMaker Clarify tem certeza de que a métrica de viés não está em A e gera um alerta.

## Caderno de exemplo do Model Monitor
<a name="clarify-model-monitor-sample-notebooks-bias-drift"></a>

O Amazon SageMaker Clarify fornece o seguinte exemplo de caderno que mostra como capturar dados de inferência para um endpoint em tempo real, criar uma linha de base para monitorar a evolução do preconceito e inspecionar os resultados: 
+ [Monitorando o desvio de viés e o desvio de atribuição de recursos Amazon Clarify SageMaker — Use o Amazon](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_model_monitor/fairness_and_explainability/SageMaker-Model-Monitor-Fairness-and-Explainability.html) SageMaker Model Monitor para monitorar o desvio de viés e o desvio de atribuição de recursos ao longo do tempo.

Este notebook foi verificado para ser executado somente no Amazon SageMaker Studio. Se você precisar de instruções sobre como abrir um notebook no Amazon SageMaker Studio, consulte[Crie ou abra um notebook Amazon SageMaker Studio Classic](notebooks-create-open.md). Caso seja solicitado que você escolha um kernel, escolha **Python 3 (Ciência de dados)**. Os tópicos a seguir contêm os destaques das duas últimas etapas e contêm exemplos de código do caderno de exemplo. 

**Topics**
+ [Caderno de exemplo do Model Monitor](#clarify-model-monitor-sample-notebooks-bias-drift)
+ [Criar uma linha de base de desvio de polarização](clarify-model-monitor-bias-drift-baseline.md)
+ [Violações do desvio de polarização](clarify-model-monitor-bias-drift-violations.md)
+ [Parâmetros para monitorar o desvio de polarização](clarify-config-json-monitor-bias-parameters.md)
+ [Programar trabalhos de monitoramento de desvio de polarização](clarify-model-monitor-bias-drift-schedule.md)
+ [Inspecionar relatórios para detectar desvios de polarização de dados](clarify-model-monitor-bias-drift-report.md)
+ [CloudWatch Métricas para análise de desvio de polarização](clarify-model-monitor-bias-drift-cw.md)

# Criar uma linha de base de desvio de polarização
<a name="clarify-model-monitor-bias-drift-baseline"></a>

Depois de configurar sua aplicação para capturar dados de inferência em tempo real ou de transformação em lote, a primeira tarefa para monitorar o desvio de polarização é criar uma linha de base. Isso envolve configurar as entradas de dados, quais grupos são confidenciais, como as predições são capturadas e o modelo e suas métricas de desvio pós-treinamento. Em seguida, você precisa iniciar o trabalho de linha de base.

O monitor de desvio de modelo pode detectar o desvio de polarização dos modelos de ML regularmente. Semelhante aos outros tipos de monitoramento, o procedimento padrão para criar um modelo de monitor de polarização é primeiro estabelecer uma linha de base e, em seguida, estabelecer uma programação de monitoramento.

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

O `DataConfig` armazena informações sobre o conjunto de dados a ser analisado (por exemplo, o arquivo do conjunto de dados), seu formato (ou seja, linhas CSV ou JSON), cabeçalhos (se houver) e rótulo.

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

A `BiasConfig` é a configuração dos grupos confidenciais no conjunto de dados. Normalmente, o desvio é medido computando uma métrica e comparando-a entre grupos. O grupo de interesse é chamado de *faceta*. Para o desvio pós-treinamento, você também deve levar em consideração o rótulo positivo.

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

A `ModelPredictedLabelConfig` especifica como extrair um rótulo previsto da saída do modelo. Neste exemplo, o limite de 0,8 foi escolhido com a expectativa de rotatividade de clientes com frequência. Para saídas mais complicadas, há mais algumas opções, como “rótulo” é o índice, nome ou JMESPath localização do rótulo previsto na carga útil de resposta do endpoint.

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

A `ModelConfig` é a configuração relacionada ao modelo a ser usado para inferência. Para calcular as métricas de desvio pós-treinamento, o cálculo precisa obter inferências para o nome do modelo fornecido. Para fazer isso, o trabalho de processamento usa o modelo para criar um endpoint efêmero (também conhecido como *endpoint de sombra*). O trabalho de processamento exclui o endpoint de sombra após a conclusão dos cálculos. Essa configuração também é usada pelo monitor de explicabilidade.

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

Agora você pode iniciar o trabalho de definição de linha de 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}")
```

O monitor programado pega automaticamente o nome do trabalho de linha de base e o aguarda antes do início do monitoramento.

# Violações do desvio de polarização
<a name="clarify-model-monitor-bias-drift-violations"></a>

Os trabalhos de desvio de polarização avaliam as restrições da linha de base fornecidas pela [configuração da linha de base](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelBiasJobDefinition.html#sagemaker-CreateModelBiasJobDefinition-request-ModelBiasBaselineConfig) em relação aos resultados da análise da `MonitoringExecution` atual. Se forem detectadas violações, o trabalho as listará no arquivo *constraint\$1violations.json* no local de saída de execução e marcará o status da execução como [Interpretar resultados](model-monitor-interpreting-results.md).

Aqui está o esquema do arquivo de violações do desvio de polarização.
+ `facet`: O nome da faceta, fornecido pela faceta de configuração da análise de trabalhos de monitoramento `name_or_index`. 
+ `facet_value`: O valor da faceta, fornecido pela faceta de configuração da análise de trabalhos de monitoramento `value_or_threshold`.
+ `metric_name`: O nome abreviado da métrica de desvio. Por exemplo, “CI” para desequilíbrio de classes. Consulte [Métricas de desvio pré-treinamento](clarify-measure-data-bias.md) para obter os nomes abreviados de cada uma das métricas de desvio pré-treinamento e [Métricas de dados pós-treinamento e desvio do modelo](clarify-measure-post-training-bias.md) para os nomes abreviados de cada uma das métricas de desvio pós-treinamento.
+ `constraint_check_type`: O tipo de violação monitorada. No momento, somente `bias_drift_check` é compatível.
+ `description`: Uma mensagem descritiva para explicar a violação.

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

Uma métrica de desvio é usada para medir o nível de igualdade em uma distribuição. Um valor próximo de zero indica que a distribuição está mais equilibrada. Se o valor de uma métrica de desvio no arquivo de resultados da análise do trabalho (analysis.json) for pior do que o valor correspondente no arquivo de restrições da linha de base, uma violação será registrada. Por exemplo, se a restrição da linha de base para a métrica de desvio da DPPL for `0.2` e o resultado da análise for `0.1`, nenhuma violação será registrada porque `0.1` está mais próximo de `0` que `0.2`. No entanto, se o resultado da análise for `-0.3`, uma violação será registrada porque está mais longe de `0` do que a restrição da linha de base 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 monitorar o desvio de polarização
<a name="clarify-config-json-monitor-bias-parameters"></a>

O monitoramento de viés do Amazon SageMaker Clarify reutiliza um subconjunto dos parâmetros usados na configuração de análise do. [Arquivos de configuração de análise](clarify-processing-job-configure-analysis.md) Depois de descrever os parâmetros de configuração, este tópico fornece exemplos de arquivos JSON. Esses arquivos são usados para configurar conjuntos de dados de linhas CSV e JSON para monitorá-los quanto a desvios de polarização quando os modelos de machine learning estão em produção.

Os parâmetros a seguir devem ser fornecidos em um arquivo JSON. O caminho para esse arquivo JSON deve ser fornecido no parâmetro `ConfigUri` da API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasAppSpecification](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasAppSpecification).
+ `"version"`: (Opcional) Versão do esquema do arquivo de configuração. Se não for fornecida, a versão compatível mais recente será usada.
+ `"headers"`: (Opcional) Uma lista de nomes de colunas no conjunto de dados. Se o `dataset_type` for `"application/jsonlines"` e `"label"` for especificado, o último cabeçalho se tornará o cabeçalho da coluna do rótulo. 
+ `"label"`: (Opcional) Atributo destino para o modelo a ser usado para *métricas de desvio*. Especificado como nome de coluna ou índice (se o formato do conjunto de dados for CSV) ou como JMESPath (se o formato do conjunto de dados for Linhas JSON).
+ `"label_values_or_threshold"`: (Opcional) Lista de limites ou valores do rótulo. Indica o resultado positivo usado para métricas de desvio.
+ `"facet"`: (Opcional) Uma lista atributos confidenciais, chamados de facetas. As facetas são usadas para *métricas de desvio* na forma de pares e incluem o seguinte:
  + `"name_or_index"`: Nome ou índice da coluna de faceta.
  + `"value_or_threshold"`: (Opcional) Lista de valores ou limites que a coluna de faceta pode assumir. Indica o grupo confidencial, como o grupo usado para medir o desvio. Se não forem fornecidas, as métricas de desvio serão calculadas como um grupo para cada valor exclusivo (em vez de todos os valores). Se a coluna da faceta for numérica, esse valor limite será aplicado como limite inferior para selecionar o grupo confidencial.
+ `"group_variable"`: (Opcional) Um nome de coluna ou índice para indicar a variável de grupo a ser usada para a *métrica de desvio* de Disparidade *demográfica condicional*.

Os outros parâmetros devem ser fornecidos em `EndpointInput` (para endpoints em tempo real) ou `BatchTransformInput` (para trabalhos de transformação de lotes) da API de [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasJobInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasJobInput).
+ `FeaturesAttribute`: Esse parâmetro é obrigatório se o formato de dados de entrada do endpoint for `"application/jsonlines"`. Ele é JMESPath usado para localizar as colunas de recursos se o formato do conjunto de dados for JSON Lines.
+ `InferenceAttribute`— Índice ou JMESPath localização na saída do modelo para o atributo alvo a ser usado para monitorar o viés usando métricas de viés. Se não for fornecido no caso CSV `accept_type`, presume-se que a saída do modelo seja um único valor numérico correspondente a uma pontuação ou probabilidade.
+ `ProbabilityAttribute`— Índice ou JMESPath localização na saída do modelo para probabilidades. Se a saída do modelo for linhas JSON com uma lista de rótulos e probabilidades, por exemplo, o rótulo que corresponde à probabilidade máxima será selecionado para cálculos de desvio.
+ `ProbabilityThresholdAttribute`: (Opcional) Um valor flutuante para indicar o limite para selecionar o rótulo binário, no caso de classificação binária. O valor padrão é 0,5.

## Exemplos de arquivos de configuração JSON para conjuntos de dados CSV e linhas JSON
<a name="clarify-config-json-monitor-bias-parameters-examples"></a>

Veja alguns exemplos dos arquivos JSON usados para configurar conjuntos de dados CSV e linhas JSON para monitorá-los quanto ao desvio de polarização.

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

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

Considere um conjunto de dados que tenha quatro colunas de atributos e uma coluna de rótulo, em que o primeiro atributo e o rótulo sejam binários, como no exemplo a seguir.

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

Suponha que a saída do modelo tenha duas colunas, onde a primeira é o rótulo previsto e a segunda é a probabilidade, como no exemplo a seguir.

```
1, 0.5385257417814224
```

Em seguida, o arquivo de configuração JSON a seguir mostra um exemplo de como esse conjunto de dados CSV pode ser configurado.

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

O rótulo previsto é selecionado pelo parâmetro `"InferenceAttribute"`. A numeração baseada em zero é usada, então 0 indica a primeira coluna da saída do modelo.

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

Como alternativa, você pode usar parâmetros diferentes para converter valores de probabilidade em rótulos de previsão binários. A numeração baseada em zero é usada: 1 indica a segunda coluna; o valor de `ProbabilityThresholdAttribute` de 0,6 indica que uma probabilidade maior que 0,6 prevê o rótulo binário como 1.

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

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

Considere um conjunto de dados que tenha quatro colunas de atributos e uma coluna de rótulo, em que o primeiro atributo e o rótulo sejam binários, como no exemplo a seguir.

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

Suponha que a saída do modelo tenha duas colunas, onde a primeira é o rótulo previsto e a segunda é a probabilidade.

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

Em seguida, o arquivo de configuração JSON a seguir mostra um exemplo de como esse conjunto de dados de linhas JSON pode ser configurado.

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

Em seguida, o valor do parâmetro `"features"` em `EndpointInput` (para endpoints em tempo real) ou `BatchTransformInput` (para trabalhos de transformação de lotes) é usado para localizar os atributos no conjunto de dados, e o valor do parâmetro `"predicted_label"` seleciona o rótulo previsto na saída do modelo. 

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

Como alternativa, você pode converter valores de probabilidade em rótulos de previsão binários usando o valor de parâmetro `ProbabilityThresholdAttribute`. Um valor de 0,6, por exemplo, indica que uma probabilidade maior que 0,6 prediz o rótulo binário como 1.

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

# Programar trabalhos de monitoramento de desvio de polarização
<a name="clarify-model-monitor-bias-drift-schedule"></a>

Depois de criar sua linha de base, você pode chamar o método `create_monitoring_schedule()` da sua instância de classe `ModelBiasModelMonitor` para programar um monitor horário de qualidade do desvio de polarização. As seções a seguir mostram como criar um monitor de desvio de polarização para um modelo implantado em um endpoint em tempo real, bem como para um trabalho de transformação em lotes.

**Importante**  
Você pode especificar uma entrada de transformação em lote ou uma entrada de endpoint, mas não ambas, ao criar sua programação de monitoramento.

Ao contrário do monitoramento da qualidade dos dados, você precisa fornecer rótulos do Ground Truth se quiser monitorar a qualidade do modelo. No entanto, os rótulos do Ground Truth podem ser adiados. Para resolver isso, especifique compensações ao criar sua programação de monitoramento. Para obter detalhes sobre como criar deslocamentos de tempo, consulte [Deslocamentos do monitor do modelo](model-monitor-model-quality-schedule.md#model-monitor-model-quality-schedule-offsets). 

Se você enviou um trabalho de linha de base, o monitor seleciona automaticamente a configuração de análise do trabalho de linha de base. Se você pular a etapa de definição de linha de base ou se o conjunto de dados de captura tiver uma natureza diferente da do conjunto de dados de treinamento, você deverá fornecer a configuração da análise.

## Monitoramento do desvio de polarização para modelos implantados em endpoints em tempo real
<a name="model-monitor-bias-quality-rt"></a>

Para programar um monitor de desvio de polarização para um endpoint em tempo real, transmita sua instância `EndpointInput` para o argumento `endpoint_input` de sua instância `ModelBiasModelMonitor`, conforme mostrado no seguinte exemplo 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,
    ),
)
```

## Monitoramento de desvio de polarização para trabalhos de transformação de lotes
<a name="model-monitor-bias-quality-bt"></a>

Para programar um monitor de desvio de polarização para um trabalho de transformação de Lotes, transmita sua instância `BatchTransformInput` para o argumento `batch_transform_input` de sua instância `ModelBiasModelMonitor`, conforme mostrado no seguinte exemplo 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
   ),
)
```

# Inspecionar relatórios para detectar desvios de polarização de dados
<a name="clarify-model-monitor-bias-drift-report"></a>

Se você não conseguir inspecionar os resultados do monitoramento nos relatórios gerados no SageMaker Studio, poderá imprimi-los da seguinte forma:

```
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 houver violações em comparação com a linha de base, elas serão listadas aqui:

```
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 seu modelo for implantado em um endpoint em tempo real, você poderá ver visualizações no SageMaker AI Studio dos resultados e CloudWatch métricas da análise escolhendo a guia **Endpoints e clicando duas vezes no endpoint**.

# CloudWatch Métricas para análise de desvio de polarização
<a name="clarify-model-monitor-bias-drift-cw"></a>

Este guia mostra CloudWatch métricas e suas propriedades que você pode usar para análise de desvio de viés no SageMaker Clarify. As tarefas de monitoramento de desvios de polarização calculam tanto as métricas de [viés antes do treinamento quanto as métricas](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-measure-data-bias.html) de [viés pós-treinamento e as](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-measure-post-training-bias.html) publicam no seguinte namespace: CloudWatch 
+ Para endpoints em tempo real: `aws/sagemaker/Endpoints/bias-metrics`
+ Criar trabalhos de transformação de lotes: `aws/sagemaker/ModelMonitoring/bias-metrics` 

O nome da CloudWatch métrica acrescenta o nome abreviado da métrica a. `bias_metric`

Por exemplo, `bias_metric_CI` é a métrica de desvio para desequilíbrio de classes (CI).

**nota**  
O `+/- infinity` é publicado como o número de ponto flutuante `+/- 2.348543e108` e os erros, incluindo valores nulos, não são publicados.

Cada métrica tem as seguintes propriedades:
+ `Endpoint`: o nome do endpoint monitorado, se aplicável.
+ `MonitoringSchedule` O nome da programação para o trabalho de monitoramento. 
+ `BiasStage`: o nome do estágio do trabalho de monitoramento do desvio de polarização. Escolha `Pre-training` ou `Post-Training`.
+ `Label`: o nome do atributo de destino, fornecido pelo `label` de configuração de análise do trabalho de monitoramento.
+ `LabelValue`: o valor do atributo de destino, fornecido pelo `label_values_or_threshold` de configuração de análise do trabalho de monitoramento.
+ `Facet`: o nome da faceta, fornecido pelo `name_of_index` da faceta de configuração da análise do trabalho de monitoramento.
+ `FacetValue`: o valor da faceta, fornecido pelo `nvalue_or_threshold` da faceta de configuração da análise do trabalho de monitoramento.

Para impedir que os trabalhos de monitoramento publiquem métricas, defina `publish_cloudwatch_metrics` como `Disabled` no mapa `Environment` da definição de [trabalhos de desvio de modelo](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelBiasJobDefinition.html).