

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