모니터링 작업 일정 예약 - Amazon SageMaker

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

모니터링 작업 일정 예약

Amazon SageMaker Model Monitor는 실시간 엔드포인트에서 수집된 데이터를 모니터링할 수 있는 기능을 제공합니다. 반복되는 일정에 따라 데이터를 모니터링하거나 일회성으로 즉시 모니터링할 수 있습니다. 를 사용하여 모니터링 일정을 생성할 수 있습니다CreateMonitoringScheduleAPI.

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

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

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

예 기준 할당

다음 예제에서는 모델 훈련에 사용된 훈련 데이터 세트가 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)
예 반복 분석 일정

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

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, )
예 일회성 분석 일정

다음과 같은 인수를 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_timedata_analysis_end_time매개변수가 필요합니다. 이러한 매개변수는 분석 기간의 시작 시간과 종료 시간을 설정합니다. 이러한 시간을 현재 시간을 기준으로 오프셋으로 정의하고 ISO 8601 지속 시간 형식을 사용합니다. 이 예제에서 시간값 -PT1H-PT0H는 1시간 전의 과거와 현재 시간 사이의 기간을 정의합니다. 이 일정을 사용하면, 분석은 지정된 해당 기간 동안에 수집된 데이터만을 평가합니다.

예 배치 변환 작업 일정

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

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