

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á.

# Programar trabalhos de monitoramento
<a name="model-monitor-scheduling"></a>

O Amazon SageMaker Model Monitor oferece a capacidade de monitorar os dados coletados de seus endpoints em tempo real. Você pode monitorar seus dados em uma programação recorrente ou pode monitorá-los uma vez, imediatamente. Você pode criar uma programação de monitoramento com a API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html).

Com um cronograma de monitoramento, a SageMaker IA pode começar a processar trabalhos para analisar os dados coletados durante um determinado período. No trabalho de processamento, a SageMaker IA compara o conjunto de dados da análise atual com as estatísticas e restrições básicas que você fornece. Em seguida, a SageMaker IA gera um relatório de violações. Além disso, CloudWatch métricas são emitidas para cada recurso em análise.

SageMaker A IA fornece um contêiner pré-construído para realizar análises em conjuntos de dados tabulares. Se preferir, você pode optar por trazer seu próprio contêiner conforme descrito no tópico [Support para seus próprios contêineres com o Amazon SageMaker Model Monitor](model-monitor-byoc-containers.md).

Você pode criar uma programação de monitoramento de modelo para seu trabalho de transformação de lotes ou endpoint em tempo real. Use os recursos da linha de base (restrições e estatísticas) para comparar com o tráfego em tempo real ou com as entradas de trabalhos em lotes. 

**Example atribuições de linha de base**  
No exemplo a seguir, o conjunto de dados de treinamento usado para treinar o modelo foi carregado no Amazon S3. Se ele já tiver no Amazon S3, você poderá apontar diretamente para ele.  

```
# copy over the training dataset to Amazon S3 (if you already have it in Amazon S3, you could reuse it)
baseline_prefix = prefix + '/baselining'
baseline_data_prefix = baseline_prefix + '/data'
baseline_results_prefix = baseline_prefix + '/results'

baseline_data_uri = 's3://{}/{}'.format(bucket,baseline_data_prefix)
baseline_results_uri = 's3://{}/{}'.format(bucket, baseline_results_prefix)
print('Baseline data uri: {}'.format(baseline_data_uri))
print('Baseline results uri: {}'.format(baseline_results_uri))
```

```
training_data_file = open("test_data/training-dataset-with-header.csv", 'rb')
s3_key = os.path.join(baseline_prefix, 'data', 'training-dataset-with-header.csv')
boto3.Session().resource('s3').Bucket(bucket).Object(s3_key).upload_fileobj(training_data_file)
```

**Example programação para análises recorrentes**  
Se você estiver programando um monitor de modelo para o endpoint em tempo real, use as estatísticas e as restrições de linha de base para comparar com o tráfego em tempo real. O trecho de código a seguir mostra o formato geral que você usa para programar um monitor de modelo para um endpoint em tempo real. Este exemplo programa o monitor do modelo para ser executado de hora em hora.  

```
from sagemaker.model_monitor import CronExpressionGenerator
from time import gmtime, strftime

mon_schedule_name = 'my-model-monitor-schedule-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime())
my_default_monitor.create_monitoring_schedule(
    monitor_schedule_name=mon_schedule_name,
    endpoint_input=EndpointInput(
        endpoint_name=endpoint_name,
        destination="/opt/ml/processing/input/endpoint"
    ),
    post_analytics_processor_script=s3_code_postprocessor_uri,
    output_s3_uri=s3_report_path,
    statistics=my_default_monitor.baseline_statistics(),
    constraints=my_default_monitor.suggested_constraints(),
    schedule_cron_expression=CronExpressionGenerator.hourly(),
    enable_cloudwatch_metrics=True,
)
```

**Example programação para análise única**  
Você também pode programar a análise para ser executada uma vez sem repetição, transmitindo argumentos como os seguintes para o método `create_monitoring_schedule`:  

```
    schedule_cron_expression=CronExpressionGenerator.now(),
    data_analysis_start_time="-PT1H",
    data_analysis_end_time="-PT0H",
```
Nesses argumentos, o parâmetro `schedule_cron_expression` programa a análise para ser executada uma vez, imediatamente, com o valor `CronExpressionGenerator.now()`. Para qualquer programação com essa configuração, os parâmetros `data_analysis_start_time` e `data_analysis_end_time` são obrigatórios. Esses parâmetros definem a hora de início e a hora de término de uma janela de análise. Defina esses horários como deslocamentos relativos à hora atual e use o formato de duração ISO 8601. Neste exemplo, os horários `-PT1H` e `-PT0H` definem uma janela entre uma hora no passado e a hora atual. Com essa programação, a análise avalia somente os dados que foram coletados durante a janela especificada.

**Example programação para um trabalho de transformação de lotes**  
O trecho de código a seguir mostra o formato geral que você usa para programar um monitor de modelo para um trabalho de transformação de lotes.  

```
from sagemaker.model_monitor import (
    CronExpressionGenerator,
    BatchTransformInput, 
    MonitoringDatasetFormat, 
)
from time import gmtime, strftime

mon_schedule_name = 'my-model-monitor-schedule-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime())
my_default_monitor.create_monitoring_schedule(
    monitor_schedule_name=mon_schedule_name,
    batch_transform_input=BatchTransformInput(
        destination="opt/ml/processing/input",
        data_captured_destination_s3_uri=s3_capture_upload_path,
        dataset_format=MonitoringDatasetFormat.csv(header=False),
    ),
    post_analytics_processor_script=s3_code_postprocessor_uri,
    output_s3_uri=s3_report_path,
    statistics=my_default_monitor.baseline_statistics(),
    constraints=my_default_monitor.suggested_constraints(),
    schedule_cron_expression=CronExpressionGenerator.hourly(),
    enable_cloudwatch_metrics=True,
)
```

```
desc_schedule_result = my_default_monitor.describe_schedule()
print('Schedule status: {}'.format(desc_schedule_result['MonitoringScheduleStatus']))
```

# A expressão cron para monitorar a programação
<a name="model-monitor-schedule-expression"></a>

Para fornecer detalhes para a programação de monitoramento, use [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ScheduleConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ScheduleConfig.html), que é uma expressão `cron` que descreve detalhes sobre a programação de monitoramento.

O Amazon SageMaker Model Monitor suporta as seguintes `cron` expressões:
+ Para definir o trabalho para começar a cada hora, use o seguinte:

  `Hourly: cron(0 * ? * * *)`
+ Para executar o trabalho diariamente, use o seguinte:

  `cron(0 [00-23] ? * * *)`
+ Para executar o trabalho uma vez, imediatamente, use a seguinte palavra-chave:

  `NOW`

Por exemplo, as seguintes expressões `cron` são válidas:
+ Diariamente às 12:00 UTC: `cron(0 12 ? * * *)`
+ Diariamente às 00:00 UTC: `cron(0 0 ? * * *)`

Para oferecer compatibilidade com a execução a cada 6, 12 horas, o Model Monitoring é compatível com a seguinte expressão:

`cron(0 [00-23]/[01-24] ? * * *)`

Por exemplo, as seguintes expressões `cron` são válidas:
+ A cada 12 horas, a partir das 17:00 UTC: `cron(0 17/12 ? * * *)`
+ A cada duas horas, a partir das 00:00 UTC: `cron(0 0/2 ? * * *)`

**Observações**  
Embora a expressão `cron` esteja definida para iniciar às 17:00 UTC, observe que pode haver um atraso de 0 a 20 minutos do tempo real solicitado para executar a execução.
Se você quiser executar em uma programação diária, não forneça esse parâmetro. SageMaker A IA escolhe um horário para correr todos os dias.
Atualmente, a SageMaker IA suporta apenas taxas inteiras por hora entre 1 hora e 24 horas.

# Configuração de políticas de controle de serviços para programações de monitoramento
<a name="model-monitor-scp-rules"></a>

 Você precisa especificar os parâmetros de um trabalho de monitoramento ao criar ou atualizar um agendamento para ele com a [CreateMonitoringSchedule](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html)API ou a [UpdateMonitoringSchedule](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateMonitoringSchedule.html)API, respectivamente. Dependendo do seu caso de uso, você pode fazer isso de uma das seguintes maneiras: 
+  Você pode especificar o [MonitoringJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_MonitoringJobDefinition.html)campo de [MonitoringScheduleConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_MonitoringScheduleConfig.html), ao invocar `CreateMonitoringSchedule` ou`UpdateMonitoringSchedule`. Você pode usar isso somente para criar ou atualizar uma programação para um trabalho de monitoramento da qualidade de dados. 
+  Você pode especificar o nome de uma definição de trabalho de monitoramento que você já criou para o campo `MonitoringJobDefinitionName` de `MonitoringScheduleConfig`, ao invocar `CreateMonitoringSchedule` ou`UpdateMonitoringSchedule`. Você pode usar isso para qualquer definição de tarefa criada com uma das seguintes opções APIs: 
  +  [CreateDataQualityJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateDataQualityJobDefinition.html) 
  +  [CreateModelQualityJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelQualityJobDefinition.html) 
  +  [CreateModelBiasJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelBiasJobDefinition.html) 
  +  [CreateModelExplainabilityJobDefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelExplainabilityJobDefinition.html) 

   Se você quiser usar o SDK do SageMaker Python para criar ou atualizar agendas, precisará usar esse processo. 

 Os processos mencionados acima são mutuamente exclusivos, ou seja, você pode especificar o campo `MonitoringJobDefinition` ou o campo `MonitoringJobDefinitionName` ao criar ou atualizar as programações de monitoramento. 

 Ao criar uma definição de trabalho de monitoramento ou especificar uma no campo `MonitoringJobDefinition`, você pode definir parâmetros de segurança, como `NetworkConfig` e `VolumeKmsKeyId`. Como administrador, talvez você queira que esses parâmetros sejam sempre definidos com determinados valores, para que os trabalhos de monitoramento sempre sejam executados em um ambiente seguro. Para garantir isso, configure [políticas de controle de serviço](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) apropriadas (SCPs). SCPs são um tipo de política organizacional que você pode usar para gerenciar permissões em sua organização. 

 O exemplo a seguir mostra uma SCP que você pode usar para garantir que os parâmetros de infraestrutura sejam definidos adequadamente ao criar ou atualizar programações de trabalhos de monitoramento. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "sagemaker:CreateDataQualityJobDefinition",
                "sagemaker:CreateModelBiasJobDefinition",
                "sagemaker:CreateModelExplainabilityJobDefinition",
                "sagemaker:CreateModelQualityJobDefinition"
            ],
            "Resource": "arn:*:sagemaker:*:*:*",
            "Condition": {
                "Null": {
                    "sagemaker:VolumeKmsKey":"true",
                    "sagemaker:VpcSubnets": "true",
                    "sagemaker:VpcSecurityGroupIds": "true"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action": [
                "sagemaker:CreateDataQualityJobDefinition",
                "sagemaker:CreateModelBiasJobDefinition",
                "sagemaker:CreateModelExplainabilityJobDefinition",
                "sagemaker:CreateModelQualityJobDefinition"
            ],
            "Resource": "arn:*:sagemaker:*:*:*",
            "Condition": {
                "Bool": {
                    "sagemaker:InterContainerTrafficEncryption": "false"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action": [
                "sagemaker:CreateMonitoringSchedule",
                "sagemaker:UpdateMonitoringSchedule"
            ],
            "Resource": "arn:*:sagemaker:*:*:monitoring-schedule/*",
            "Condition": {
                "Null": {
                    "sagemaker:ModelMonitorJobDefinitionName": "true"
                }
            }
        }
    ]
}
```

------

 As duas primeiras regras do exemplo garantem que os parâmetros de segurança estejam sempre definidos para monitorar as definições de trabalho. A regra final exige que qualquer pessoa em sua organização que esteja criando ou atualizando uma programação sempre especifique o campo `MonitoringJobDefinitionName`. Isso garante que ninguém em sua organização possa definir valores inseguros para os parâmetros de segurança especificando o campo `MonitoringJobDefinition` ao criar ou atualizar programações. 