

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

# 모델 품질 모니터링 작업 예약
<a name="model-monitor-model-quality-schedule"></a>

기준 생성을 마쳤다면, `ModelQualityMonitor`클래스 인스턴스의 `create_monitoring_schedule()`메서드를 호출하여 시간별 모델 품질 모니터를 예약할 수 있습니다. 다음 섹션은 실시간 엔드포인트에 배포된 모델 및 배치 변환 작업에 사용할 모델 품질 모니터를 생성하는 방법을 보여줍니다.

**중요**  
모니터링 일정을 생성할 때는 배치 변환 입력이나 엔드포인트 입력 중에서 하나를 지정할 수 있지만, 둘 다 지정할 수는 없습니다.

데이터 품질 모니터링과는 달리, 모델 품질을 모니터링하려면 Ground Truth 레이블을 제공해야 합니다. 그러나 Ground Truth 레이블은 지연될 수 있습니다. 이 문제를 해결하려면, 모니터링 일정을 생성할 때 오프셋을 지정하세요.

## 모델 모니터 오프셋
<a name="model-monitor-model-quality-schedule-offsets"></a>

모델 품질 작업에는 `StartTimeOffset`및 `EndTimeOffset`이 포함되며, 이는 `create_model_quality_job_definition`메서드의 `ModelQualityJobInput`매개변수 필드로서 다음과 같이 작동합니다.
+ `StartTimeOffset` - 지정된 경우, 작업의 시작 시간으로부터 이만큼의 시간이 차감됩니다.
+ `EndTimeOffset` - 지정된 경우, 작업의 종료 시간으로부터 이만큼의 시간이 차감됩니다.

오프셋 형식은 예컨대 -PT7H와 같이 표기되며, 여기서 7H는 7시간을 의미합니다. -PT\$1H 또는 -P\$1D 형식으로 사용이 가능하며, 여기서 H=시간, D=일, M=분이고, \$1은 숫자입니다. 또한 오프셋은 [ISO 8601 지속시간 형식](https://en.wikipedia.org/wiki/ISO_8601#Durations)을 사용해야 합니다.

예를 들어, 해당 Ground Truth가 1일이 지난 후부터 들어오기 시작하지만 일주일 안에는 완료되지 않는 경우라면, `StartTimeOffset`을 `-P8D`로, `EndTimeOffset`을 `-P1D`로 설정하세요. 그런 다음에 작업 실행 시점을 `2020-01-09T13:00`로 예약한다면, `2020-01-01T13:00`\$1`2020-01-08T13:00`사이의 데이터가 분석됩니다.

**중요**  
일정 케이던스는 다음 번의 실행이 시작되기 전에 한 가지 실행이 먼저 완료되는 형태로 설정해야 하며, 이렇게 해야 실행 시 Ground Truth 병합 작업과 모니터링 작업이 완료될 수 있습니다. 실행의 최대 런타임은 두 작업으로 나누어지기 때문에, 시간별 모델 품질 모니터링 작업에서의 경우 `StoppingCondition`의 일부로서 지정된 `MaxRuntimeInSeconds`의 값은 1800을 넘지 않아야 합니다.

## 실시간 엔드포인트에 배포된 모델에 대한 모델 품질 모니터링
<a name="model-monitor-data-quality-schedule-rt"></a>

실시간 엔드포인트에 대한 모델 품질 모니터를 예약하려면, 다음 코드 샘플에 나와 있는 것처럼 `EndpointInput`인스턴스를 `ModelQualityMonitor`인스턴스의 `endpoint_input`인수로 전달하세요.

```
from sagemaker.model_monitor import CronExpressionGenerator
                    
model_quality_model_monitor = ModelQualityMonitor(
   role=sagemaker.get_execution_role(),
   ...
)

schedule = model_quality_model_monitor.create_monitoring_schedule(
   monitor_schedule_name=schedule_name,
   post_analytics_processor_script=s3_code_postprocessor_uri,
   output_s3_uri=s3_report_path,
   schedule_cron_expression=CronExpressionGenerator.hourly(),    
   statistics=model_quality_model_monitor.baseline_statistics(),
   constraints=model_quality_model_monitor.suggested_constraints(),
   schedule_cron_expression=CronExpressionGenerator.hourly(),
   enable_cloudwatch_metrics=True,
   endpoint_input=EndpointInput(
        endpoint_name=endpoint_name,
        destination="/opt/ml/processing/input/endpoint",
        start_time_offset="-PT2D",
        end_time_offset="-PT1D",
    )
)
```

## 배치 변환 작업에 대한 모델 품질 모니터링
<a name="model-monitor-data-quality-schedule-tt"></a>

배치 변환 작업에 대한 모델 품질 모니터를 예약하려면, 다음 코드 샘플에 나와 있는 것처럼 `BatchTransformInput`인스턴스를 `ModelQualityMonitor`인스턴스의 `batch_transform_input`인수로 전달하세요.

```
from sagemaker.model_monitor import CronExpressionGenerator

model_quality_model_monitor = ModelQualityMonitor(
   role=sagemaker.get_execution_role(),
   ...
)

schedule = model_quality_model_monitor.create_monitoring_schedule(
    monitor_schedule_name=mon_schedule_name,
    batch_transform_input=BatchTransformInput(
        data_captured_destination_s3_uri=s3_capture_upload_path,
        destination="/opt/ml/processing/input",
        dataset_format=MonitoringDatasetFormat.csv(header=False),
        # the column index of the output representing the inference probablity
        probability_attribute="0",
        # the threshold to classify the inference probablity to class 0 or 1 in 
        # binary classification problem
        probability_threshold_attribute=0.5,
        # look back 6 hour for transform job outputs.
        start_time_offset="-PT6H",
        end_time_offset="-PT0H"
    ),
    ground_truth_input=gt_s3_uri,
    output_s3_uri=s3_report_path,
    problem_type="BinaryClassification",
    constraints = constraints_path,
    schedule_cron_expression=CronExpressionGenerator.hourly(),
    enable_cloudwatch_metrics=True,
)
```