모델 품질 기준 생성 - Amazon SageMaker

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

모델 품질 기준 생성

모델 예측을 사용자가 Amazon S3에 저장해둔 기준 데이터 세트의 실측 레이블과 비교하는 기준 작업을 생성합니다. 일반적으로 훈련 데이터 세트를 기준 데이터 세트로 사용합니다. 기준 작업은 해당 모델에 대한 지표를 계산한 다음 모델 품질의 드리프트를 모니터링하는 데 사용할 제약 조건을 제안해줍니다.

기준 작업을 생성하려면, 모델이 수행한 예측이 포함된 데이터 세트와 작업 데이터에 대한 Ground Truth를 나타내는 레이블이 준비되어야 합니다.

기준 작업을 생성하려면 SageMaker Python에서 제공하는 ModelQualityMonitor 클래스를 사용하고 다음 단계를 SDK완료합니다.

모델 품질 기준 작업 생성하기
  1. 먼저, ModelQualityMonitor클래스의 인스턴스를 생성합니다. 다음은 이를 수행하는 방법을 나타낸 코드 조각입니다.

    from sagemaker import get_execution_role, session, Session from sagemaker.model_monitor import ModelQualityMonitor role = get_execution_role() session = Session() model_quality_monitor = ModelQualityMonitor( role=role, instance_count=1, instance_type='ml.m5.xlarge', volume_size_in_gb=20, max_runtime_in_seconds=1800, sagemaker_session=session )
  2. 이제 ModelQualityMonitor객체의 suggest_baseline메서드를 호출하여 기준 작업을 실행합니다. 다음 코드 조각은 사용자가 Amazon S3에 저장된 예측과 레이블을 모두 포함하는 기준 데이터 세트를 준비해 두었다고 가정합니다.

    baseline_job_name = "MyBaseLineJob" job = model_quality_monitor.suggest_baseline( job_name=baseline_job_name, baseline_dataset=baseline_dataset_uri, # The S3 location of the validation dataset. dataset_format=DatasetFormat.csv(header=True), output_s3_uri = baseline_results_uri, # The S3 location to store the results. problem_type='BinaryClassification', inference_attribute= "prediction", # The column in the dataset that contains predictions. probability_attribute= "probability", # The column in the dataset that contains probabilities. ground_truth_attribute= "label" # The column in the dataset that contains ground truth labels. ) job.wait(logs=False)
  3. 기준 작업이 완료되면, 해당 작업이 생성한 제약 조건을 볼 수 있습니다. 먼저, ModelQualityMonitor객체의 latest_baselining_job메서드를 호출하여 기준 작업의 결과를 가져옵니다.

    baseline_job = model_quality_monitor.latest_baselining_job
  4. 기준 작업이 모니터링 측정값을 모델링하는 지표에 대한 임계값에 해당하는 제약 조건을 제안해줍니다. 지표가 제안된 임계값을 초과할 경우, Model Monitor는 위반을 보고합니다. 기준 작업에서 생성된 제약 조건을 보려면, 해당 기준 작업의 suggested_constraints메서드를 호출하세요. 다음 코드 조각은 바이너리 분류 모델을 위한 제약 조건을 Pandas 데이터프레임으로 로드합니다.

    import pandas as pd pd.DataFrame(baseline_job.suggested_constraints().body_dict["binary_classification_constraints"]).T

    생성된 제약 조건을 모니터링에 사용하기 전에 먼저 확인해보고 필요에 따라 수정하는 것이 좋습니다. 예를 들어, 제약 조건이 너무 강하면 위반에 대한 알림이 생각보다 많이 표시될 수 있습니다.

    제약 조건에 과학 표기법으로 표현된 숫자가 포함된 경우, 해당 숫자를 부동 소수점으로 변환해야 합니다. 다음 Python 사전 처리 스크립트 예제는 과학 표기법으로 표현된 숫자를 부동 소수점으로 변환하는 방법을 보여줍니다.

    import csv def fix_scientific_notation(col): try: return format(float(col), "f") except: return col def preprocess_handler(csv_line): reader = csv.reader([csv_line]) csv_record = next(reader) #skip baseline header, change HEADER_NAME to the first column's name if csv_record[0] == “HEADER_NAME”: return [] return { str(i).zfill(20) : fix_scientific_notation(d) for i, d in enumerate(csv_record)}

    사전 처리 스크립트는 Model Monitor 설명서에 정의된 대로 record_preprocessor_script의 형태로 기준 또는 모니터링 일정에 추가하는 것이 가능합니다.

  5. 제약 조건에 만족한다면, 모니터링 일정을 생성할 때 해당 제약 조건을 constraints매개변수로서 전달하세요. 자세한 내용은 모델 품질 모니터링 작업 예약섹션을 참조하세요.

제안된 기준 제약 조건은 사용자가 output_s3_uri를 통해 지정한 위치의 constraints.json 파일에 포함되어 있습니다. 이 파일의 스키마에 대한 자세한 내용은 제약 조건에 대한 스키마(constraints.json 파일)섹션을 참조하세요.