

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 모니터링 작업 일정 예약
<a name="model-monitor-scheduling"></a>

Amazon SageMaker Model Monitor는 실시간 엔드포인트에서 수집된 데이터를 모니터링할 수 있는 기능을 제공합니다. 반복되는 일정에 따라 데이터를 모니터링하거나 일회성으로 즉시 모니터링할 수 있습니다. [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateMonitoringSchedule.html) API를 사용하여 모니터링 일정을 만들 수 있습니다.

SageMaker AI는 모니터링 일정을 통해 작업 처리를 시작하여 지정된 기간 동안 수집되었던 데이터를 분석할 수 있습니다. 처리 작업에서 SageMaker AI는 현재 분석에 대한 데이터세트를 사용자가 제공하는 기준 통계 및 제약 조건과 비교합니다. 그런 다음 SageMaker AI는 위반 보고서를 생성합니다. 또한 분석 중인 각 기능에 대해 CloudWatch 지표를 내보냅니다.

SageMaker AI는 테이블 형식 데이터세트에 대한 분석을 수행하기 위한 사전 구축된 컨테이너를 제공합니다. 아니면 [Amazon SageMaker Model Monitor에서 자체 컨테이너 지원](model-monitor-byoc-containers.md)항목에 설명된 대로 자체 컨테이너를 사용하는 방법을 선택할 수도 있습니다.

실시간 엔드포인트 또는 배치 변환 작업에 대한 모델 모니터링 일정을 생성할 수 있습니다. 기준 리소스(제약 조건 및 통계)를 사용하여 실시간 트래픽 또는 배치 작업 입력과 비교합니다.

**Example 기준 할당**  
다음 예제에서는 모델 훈련에 사용된 훈련 데이터세트가 Amazon S3에 업로드되었습니다. Amazon S3에 이미 데이터를 보유 중인 경우에는, 이를 직접 가리킬 수 있습니다.  

```
# 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 반복 분석 일정**  
실시간 엔드포인트에 대한 모델 모니터를 예약하려는 경우, 기준 제약 조건 및 통계를 사용하여 실시간 트래픽과 비교합니다. 다음 코드 조각은 실시간 엔드포인트에 대한 모델 모니터를 예약하는 데 사용되는 일반적인 형식을 보여줍니다. 이 예제에서는 모델 모니터가 매시간 실행되도록 예약합니다.  

```
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 일회성 분석 일정**  
다음과 같은 인수를 `create_monitoring_schedule`메서드에 전달하여 분석이 반복 없이 한 번만 실행되도록 예약할 수도 있습니다.  

```
    schedule_cron_expression=CronExpressionGenerator.now(),
    data_analysis_start_time="-PT1H",
    data_analysis_end_time="-PT0H",
```
이러한 인수에서 `schedule_cron_expression`매개변수는 `CronExpressionGenerator.now()`값을 사용하여 한 번의 분석을 즉시 실행하도록 예약합니다. 이 설정을 사용하는 모든 일정에는 `data_analysis_start_time`및 `data_analysis_end_time`매개변수가 필요합니다. 이러한 매개변수는 분석 기간의 시작 시간과 종료 시간을 설정합니다. 이러한 시간을 현재 시간을 기준으로 한 오프셋으로 정의하고, ISO8601 기간 형식을 사용하세요. 이 예제에서 시간값 `-PT1H`및 `-PT0H`는 1시간 전의 과거와 현재 시간 사이의 기간을 정의합니다. 이 일정을 사용하면, 분석은 지정된 해당 기간 동안에 수집된 데이터만을 평가합니다.

**Example 배치 변환 작업 일정**  
다음 코드 조각은 배치 변환 작업에 대한 모델 모니터를 예약하는 데 사용되는 일반적인 형식을 보여줍니다.  

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