편향 분석 및 설명 가능성을 위한 SageMaker Clarify 처리 작업 실행 - Amazon SageMaker

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

편향 분석 및 설명 가능성을 위한 SageMaker Clarify 처리 작업 실행

SageMaker Clarify를 사용하여 데이터 및 모델의 편향 및 설명 가능성을 분석하려면 SageMaker Clarify 처리 작업을 구성해야 합니다. 이 안내서는 SageMaker Python 을 사용하여 작업 입력, 출력, 리소스 및 분석 구성을 구성하는 방법을 보여줍니다SDKAPISageMakerClarifyProcessor.

는 의 SageMaker CreateProcessingJob 상위 수준 래퍼 역할을 API 합니다API. SageMaker Clarify 처리 작업 설정과 관련된 많은 세부 정보를 숨깁니다. 작업을 설정할 세부 정보에는 SageMaker Clarify 컨테이너 이미지 검색 URI 및 분석 구성 파일 생성이 포함됩니다. 다음 단계에서는 SageMaker Clarify 처리 작업을 구성, 초기화 및 시작하는 방법을 보여줍니다.

를 사용하여 SageMaker Clarify 처리 작업 구성 API
  1. 작업 구성의 각 부분에 대한 구성 객체를 정의합니다. 이러한 부분에는 다음과 같은 요소가 포함될 수 있습니다.

    SageMaker Clarify 처리 작업의 구성 객체는 데이터 형식 및 사용 사례에 따라 다릅니다. CSVJSON Lines 형식의 테이블 형식 데이터, 자연어 처리(NLP), computer vision (CV), 시계열(TS) 문제에 대한 구성 예제는 다음 섹션에 나와 있습니다.

  2. SageMakerClarifyProcessor 객체를 생성한 다음 해당 작업 리소스를 지정하는 매개변수를 사용하여 객체를 초기화합니다. 이러한 리소스에는 사용할 컴퓨팅 인스턴스 수와 같은 매개변수가 포함됩니다.

    다음 코드 예제는 SageMakerClarifyProcessor객체를 생성한 다음 하나의 ml.c4.xlarge컴퓨팅 인스턴스를 사용하여 분석을 수행하도록 지시하는 방법을 보여줍니다.

    from sagemaker import clarify clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=1, instance_type='ml.c4.xlarge', sagemaker_session=session, )
  3. 객체의 특정 실행 방법을 사용 사례에 대한 구성 객체SageMakerClarifyProcessor로 호출하여 작업을 시작합니다. 이러한 실행 메서드에는 다음이 포함됩니다.

    • run_pre_training_bias

    • run_post_training_bias

    • run_bias

    • run_explainability

    • run_bias_and_explainability

    SageMakerClarifyProcessor는 내부적으로 몇 개의 작업을 수행할 수 있습니다. 이러한 작업에는 SageMaker Clarify 컨테이너 이미지 범용 리소스 식별자(URI) 검색, 제공된 구성 객체를 기반으로 분석 구성 파일 구성, Amazon S3 버킷에 파일 업로드, SageMaker Clarify 처리 작업 구성 등이 포함됩니다.

    다음 확장 가능한 섹션에서는 훈련 전 및 훈련 후 편향 지표를 계산하는 방법을 보여줍니다. SHAP 값 부분 종속성 플롯(PDPs). 섹션은 이러한 데이터 유형에 대한 기능 중요성을 보여줍니다.

    • CSV 형식 또는 JSON 행 형식의 테이블 형식 데이터 세트

    • 자연어 처리(NLP) 데이터 세트

    • 컴퓨터 비전 데이터 세트

Spark를 사용하여 분산 훈련을 통해 병렬 SageMaker Clarify 처리 작업을 실행하는 가이드는 확장 가능한 섹션을 따릅니다.

다음 예제에서는 CSV 형식의 테이블 형식 데이터 세트에 대한 편향 분석 및 설명 가능성 분석을 구성하는 방법을 보여줍니다. 이 예제에서 수신되는 데이터 세트에는 4개의 특징 열과 1개의 바이너리 레이블 열(Target)이 포함되어 있습니다. 데이터 세트의 내용은 다음과 같습니다. 레이블의 값이 1이면 긍정적인 결과임을 나타냅니다.

Target,Age,Gender,Income,Occupation 0,25,0,2850,2 1,36,0,6585,0 1,22,1,1759,1 0,48,0,3446,1 ...

DataConfig객체는 입력 데이터 세트 그리고 해당 출력을 저장할 위치를 지정합니다. s3_data_input_path 파라미터는 URI 데이터 세트 파일의 이거나 Amazon S3 URI 접두사일 수 있습니다. S3 URI 접두사를 제공하는 경우 SageMaker Clarify 처리 작업은 접두사 아래에 있는 모든 Amazon S3 파일을 반복적으로 수집합니다. 의 값은 분석 결과를 유지하기 위한 S3 URI 접두사s3_output_path여야 합니다. 는 컴파일 s3_output_path 중에 를 SageMaker 사용하며 런타임 중에 ExecutionVariable사용되는 SageMaker 파이프라인 파라미터, 속성, 표현식 또는 의 값을 가져올 수 없습니다. 다음 코드 예제는 이전 샘플 입력 데이터 세트의 데이터 구성을 지정하는 방법을 보여줍니다.

data_config = clarify.DataConfig( s3_data_input_path=dataset_s3_uri, dataset_type='text/csv', headers=['Target', 'Age', 'Gender', 'Income', 'Occupation'], label='Target', s3_output_path=clarify_job_output_s3_uri, )

CSV 데이터 세트에 대한 모든 훈련 전 편향 지표를 계산하는 방법

다음 코드 샘플은 Gender값이 0인 샘플에 대한 이전 샘플 입력의 편향을 측정하도록 BiasConfig객체를 구성하는 방법을 보여줍니다.

bias_config = clarify.BiasConfig( label_values_or_threshold=[1], facet_name='Gender', facet_values_or_threshold=[0], )

다음 코드 예제는 실행 문을 사용하여 입력 데이터 세트에 대한 모든 훈련 전 편향 지표를 계산하는 SageMaker Clarify 처리 작업을 시작하는 방법을 보여줍니다.

clarify_processor.run_pre_training_bias( data_config=data_config, data_bias_config=bias_config, methods="all", )

또는 메서드 매개변수에 훈련 전 편향 지표의 목록을 할당하여 계산할 지표를 선택하는 방식도 가능합니다. 예를 들어 를 methods="all"로 바꾸면 SageMaker Clarify 프로세서가 클래스 불균형과 레이블 비율 차이만 계산하도록 methods=["CI", "DPL"] 지시합니다. https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-data-bias-metric-true-label-imbalance.html

CSV 데이터 세트에 대한 모든 훈련 후 편향 지표를 계산하는 방법

훈련 전에는 훈련 전 편향 지표를 계산할 수 있습니다. 하지만 훈련 후 편향 지표를 계산하려면 먼저 훈련된 모델이 준비되어 있어야 합니다. 다음 예제 출력은 CSV 형식으로 데이터를 출력하는 바이너리 분류 모델에서 가져온 것입니다. 이 예제 출력에서는 각 행마다 2개의 열이 있습니다. 첫 번째 열에는 예측 레이블이 포함되고, 두 번째 열에는 해당 레이블에 대한 확률 값이 포함됩니다.

0,0.028986845165491 1,0.825382471084594 ...

다음 예제 구성에서 ModelConfig 객체는 작업에 SageMaker 모델을 임시 엔드포인트에 배포하도록 지시합니다. 해당 엔드포인트는 1개의 ml.m4.xlarge추론 인스턴스를 사용합니다. 현재 매개변수 content_typeaccept_type이 설정되어 있지 않으므로, 이는 dataset_type매개변수의 값에 해당하는 text/csv를 자동적으로 사용하게 됩니다.

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, )

다음 구성 예제는 레이블 인덱스가 0ModelPredictedLabelConfig객체를 사용합니다. 이렇게 하면 SageMaker Clarify 처리 작업에 모델 출력의 첫 번째 열에서 예측된 레이블을 찾도록 지시합니다. 이 예제에서의 처리 작업은 0으로 시작하는 인덱싱을 사용합니다.

predicted_label_config = clarify.ModelPredictedLabelConfig( label=0, )

이전 구성 예제와 함께 다음 코드 예제는 SageMaker Clarify 처리 작업을 시작하여 모든 훈련 후 편향 지표를 계산합니다.

clarify_processor.run_post_training_bias( data_config=data_config, data_bias_config=bias_config, model_config=model_config, model_predicted_label_config=predicted_label_config, methods="all", )

마찬가지로, methods매개변수에 훈련 후 편향 지표의 목록을 할당하여 계산할 지표를 선택하는 방식도 가능합니다. 예를 들어, Difference in Positive Proportions in Predicted LabelsDisparate Impact만 계산하려면 methods=“all”methods=["DPPL", "DI"]로 바꾸면 됩니다.

CSV 데이터 세트에 대한 모든 편향 지표를 계산하는 방법

다음 구성 예제는 하나의 SageMaker Clarify 처리 작업에서 모든 훈련 전 및 훈련 후 편향 지표를 실행하는 방법을 보여줍니다.

clarify_processor.run_bias( data_config=data_config, bias_config=bias_config, model_config=model_config, model_predicted_label_config=predicted_label_config, pre_training_methods="all", post_training_methods="all", )

SageMaker Studio Classic에서 SageMaker Clarify 처리 작업을 실행하여 편향을 감지하는 방법에 대한 지침이 포함된 예제 노트북은 SageMaker Clarify를 사용한 공정성 및 설명 가능성을 참조하세요.

계산 방법 SHAP CSV 데이터 세트의 값

SageMaker Clarify는 커널SHAP 알고리즘을 사용하여 특성 속성을 제공합니다.SHAP 분석은 예측된 레이블 대신 확률 값 또는 점수가 필요하므로 이 ModelPredictedLabelConfig 객체에는 확률 인덱스가 있습니다1. 이렇게 하면 SageMaker Clarify 처리 작업에 모델 출력의 두 번째 열에서 확률 점수를 추출하도록 지시합니다(제로 기반 인덱싱 사용).

probability_config = clarify.ModelPredictedLabelConfig( probability=1, )

SHAPConfig 객체는 다음을 제공합니다.SHAP 분석 파라미터. 이 예제에서는 SHAP baseline 파라미터가 생략되고 num_clusters 파라미터 값이 입니다1. 이렇게 하면 SageMaker Clarify 프로세서가 하나를 계산하도록 지시합니다.SHAP 입력 데이터 세트 클러스터링을 기반으로 하는 기준 샘플입니다. 기준 데이터 세트를 선택하려면 섹션을 참조하세요. SHAP 설명 가능성의 기준 .

shap_config = clarify.SHAPConfig( num_clusters=1, )

다음 코드 예제는 계산할 SageMaker Clarify 처리 작업을 시작합니다.SHAP 값.

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=shap_config, )

SageMaker Studio Classic에서 SageMaker Clarify 처리 작업을 실행하여 계산하는 방법에 대한 지침이 포함된 예제 노트북의 경우 SHAP 값을 보려면 SageMaker Clarify를 사용한 공정성 및 설명 가능성을 참조하세요.

부분 종속성 플롯을 계산하는 방법(PDPs데이터 CSV 세트의 경우 )

PDPs 는 다른 모든 기능을 일정하게 유지하면서 하나 이상의 관심 입력 기능에 대한 예측 대상 응답의 종속성을 보여줍니다. 위쪽 경사선 또는 의 곡선은 대상과 입력 특성(들) 간의 관계가 양수임을 PDP나타내고 가파른 정도는 관계의 강도를 나타냅니다. 하향 경사선 또는 곡선을 그릴 경우 이는 입력 특징이 감소하면 목표 변수는 증가하게 된다는 것을 나타냅니다. 즉, 부분 종속성은 각각의 관심 입력 특성에 대한 목표 변수의 응답이라고 직관적으로 해석될 수 있습니다.

다음 구성 예제는 PDPConfig 객체를 사용하여 SageMaker Clarify 처리 작업에 Income 기능의 중요성을 계산하도록 지시하는 것입니다.

pdp_config = clarify.PDPConfig( features=["Income"], grid_resolution=10, )

이전 예제에서 grid_resolution매개변수는 Income특징 값의 범위를 10개의 버킷으로 분할합니다. SageMaker Clarify 처리 작업이 생성됩니다.PDPs x축에서 10 세그먼트로 Income 분할하는 경우. y축은 목표 변수에 대한 Income의 한계 영향을 보여주게 됩니다.

다음 코드 예제는 계산할 SageMaker Clarify 처리 작업을 시작합니다.PDPs.

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=pdp_config, )

SageMaker Studio Classic에서 SageMaker Clarify 처리 작업을 실행하여 계산하는 방법에 대한 지침이 포함된 예제 노트북의 경우 PDPs에서 SageMaker Clarify - 부분 종속 플롯(PDP)을 사용한 설명 가능성을 참조하세요.

둘 다 계산하는 방법 SHAP 값 및 PDPs CSV 데이터 세트용

둘 다 계산할 수 있습니다.SHAP 값 및 PDPs 단일 SageMaker Clarify 처리 작업에서. 다음 구성 예제에서는 새 PDPConfig객체의 top_k_features매개변수가 2로 설정되어 있습니다. 이렇게 하면 SageMaker Clarify 처리 작업에서 계산하도록 지시합니다.PDPs 글로벌 규모가 가장 큰 2 기능 SHAP 값.

shap_pdp_config = clarify.PDPConfig( top_k_features=2, grid_resolution=10, )

다음 코드 예제에서는 SageMaker Clarify 처리 작업을 시작하여 둘 다 계산합니다.SHAP 값 및 PDPs.

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=[shap_config, shap_pdp_config], )

다음 예제에서는 >SageMaker JSON 라인 밀도 형식으로 테이블 형식 데이터 세트에 대한 편향 분석 및 설명 가능성 분석을 구성하는 방법을 보여줍니다. 자세한 내용은 JSONLINES 요청 형식 섹션을 참조하세요. 이 예제에서는 수신 데이터 세트의 데이터가 이전 섹션과 동일하지만 JSON 행 형식입니다. 각 줄은 유효한 JSON 객체입니다. Features 키는 특징 값의 배열을 가리키고, Label키는 실측 레이블을 가리킵니다.

{"Features":[25,0,2850,2],"Label":0} {"Features":[36,0,6585,0],"Label":1} {"Features":[22,1,1759,1],"Label":1} {"Features":[48,0,3446,1],"Label":0} ...

다음 구성 예제에서 DataConfig객체는 입력 데이터 세트 그리고 해당 출력값을 저장할 위치를 지정합니다.

data_config = clarify.DataConfig( s3_data_input_path=jsonl_dataset_s3_uri, dataset_type='application/jsonlines', headers=['Age', 'Gender', 'Income', 'Occupation', 'Target'], label='Label', features='Features', s3_output_path=clarify_job_output_s3_uri, )

이전 구성 예제에서는 특성 파라미터가 JMESPath 표현식으로 설정되어 SageMaker Clarify 처리 작업이 각 레코드에서 특성 배열을 추출할 수 Features 있습니다. label 파라미터는 SageMaker Clarify 처리 작업이 각 레코드에서 기본 진실 레이블을 추출할 수 Label 있도록 JMESPath 표현식으로 설정됩니다. s3_data_input_path 파라미터는 URI 데이터 세트 파일의 이거나 Amazon S3 URI 접두사일 수 있습니다. S3 URI 접두사를 제공하는 경우 SageMaker Clarify 처리 작업은 접두사 아래에 있는 모든 S3 파일을 반복적으로 수집합니다. 의 값은 분석 결과를 유지하기 위한 S3 URI 접두사s3_output_path여야 합니다. 는 컴파일 s3_output_path 중에 를 SageMaker 사용하며 런타임 중에 ExecutionVariable사용되는 SageMaker 파이프라인 파라미터, 속성, 표현식 또는 의 값을 가져올 수 없습니다.

훈련 후 편향 지표나 특징 중요도를 계산하려면 먼저 훈련된 모델이 준비되어야 합니다. 다음 예제는 예제의 형식으로 JSON Lines 데이터를 출력하는 바이너리 분류 모델의 예제입니다. 모델 출력의 각 행은 유효한 JSON 객체입니다. predicted_label 키는 예측 레이블을 가리키고, probability키는 확률 값을 가리킵니다.

{"predicted_label":0,"probability":0.028986845165491} {"predicted_label":1,"probability":0.825382471084594} ...

다음 구성 예제에서 ModelConfig 객체는 SageMaker Clarify 처리 작업에 SageMaker 모델을 임시 엔드포인트에 배포하도록 지시합니다. 해당 엔드포인트는 1개의 ml.m4.xlarge추론 인스턴스를 사용합니다.

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, content_template='{"Features":$features}', )

이전 구성 예제에서는 매개변수 content_typeaccept_type이 설정되지 않았습니다. 따라서 이는 DataConfig객체의 dataset_type매개변수 값에 해당하는 application/jsonlines를 자동으로 사용하게 됩니다. SageMaker Clarify 처리 작업은 content_template 파라미터를 사용하여 $features 자리 표시자를 특성 배열로 대체하여 모델 입력을 구성합니다.

다음 예제 구성은 ModelPredictedLabelConfig 객체의 레이블 파라미터를 JMESPath 표현식 로 설정하는 방법을 보여줍니다predicted_label. 이를 통해 모델 출력으로부터 예측 레이블이 추출됩니다.

predicted_label_config = clarify.ModelPredictedLabelConfig( label='predicted_label', )

다음 예제 구성은 ModelPredictedLabelConfig 객체의 probability 파라미터를 JMESPath 표현식 로 설정하는 방법을 보여줍니다probability. 이를 통해 모델 출력으로부터 점수가 추출됩니다.

probability_config = clarify.ModelPredictedLabelConfig( probability='probability', )

JSON 줄 형식의 데이터 세트에 대한 편향 지표 및 특징 중요도를 계산하려면 CSV 데이터 세트에 대한 이전 섹션과 동일한 실행 문 및 구성 객체를 사용합니다. SageMaker Studio Classic에서 SageMaker Clarify 처리 작업을 실행하여 바이어스 및 컴퓨팅 기능 중요도를 감지할 수 있습니다. 지침 및 예제 노트북은 SageMaker Clarify를 사용한 공정성 및 설명 가능성(JSON행 형식)을 참조하세요.

SageMaker Clarify는 자연어 처리(NLP) 모델에 대한 설명을 지원합니다. 이러한 설명은 텍스트에서 모델 예측에 가장 중요한 부분을 이해하는 데 도움이 됩니다. 입력 데이터 세트의 단일 인스턴스에 대한 모델 예측을 설명하거나 기준 데이터 세트에서의 모델 예측을 설명할 수 있습니다.모델의 동작을 이해하고 시각화하기 위해 여러 수준의 세분성을 지정하는 것이 가능합니다. 이를 위해서는 토큰, 문장, 단락과 같은 텍스트 세그먼트의 길이를 정의해야 합니다.

SageMaker NLP 설명 가능성은 분류 모델과 회귀 모델 모두와 호환됨을 명확히 합니다. 또한 SageMaker Clarify를 사용하여 텍스트, 범주형 또는 숫자 기능이 포함된 다중 모드 데이터 세트에서 모델의 동작을 설명할 수 있습니다. NLP 다중 모드 데이터 세트에 대한 설명 가능성은 각 기능이 모델의 출력에 얼마나 중요한지 이해하는 데 도움이 될 수 있습니다. SageMaker Clarify는 62개 언어를 지원하며 여러 언어를 포함하는 텍스트를 처리할 수 있습니다.

다음 예제에서는 에 대한 특성 중요도를 계산하기 위한 분석 구성 파일을 보여줍니다NLP. 이 예제에서 수신 데이터 세트는 CSV 형식의 테이블 형식 데이터 세트로, 하나의 바이너리 레이블 열과 두 개의 특징 열을 포함합니다.

0,2,"Flavor needs work" 1,3,"They taste good" 1,5,"The best" 0,1,"Taste is awful" ...

다음 구성 예제에서는 DataConfig 객체를 사용하여 CSV 형식 및 출력 데이터 경로로 입력 데이터 세트를 지정하는 방법을 보여줍니다.

nlp_data_config = clarify.DataConfig( s3_data_input_path=nlp_dataset_s3_uri, dataset_type='text/csv', headers=['Target', 'Rating', 'Comments'], label='Target', s3_output_path=clarify_job_output_s3_uri, )

이전 구성 예제에서 s3_data_input_path 파라미터는 URI 데이터 세트 파일의 또는 Amazon S3 URI 접두사일 수 있습니다. S3 URI 접두사를 제공하는 경우 SageMaker Clarify 처리 작업은 접두사 아래에 있는 모든 S3 파일을 반복적으로 수집합니다. 의 값은 분석 결과를 유지하기 위한 S3 URI 접두사s3_output_path여야 합니다. 는 컴파일 s3_output_path 중에 를 SageMaker 사용하며 런타임 중에 ExecutionVariable사용되는 파이프라인 파라미터, 속성, 표현식 또는 의 SageMaker 값을 가져올 수 없습니다.

다음 예제 출력은 이전 입력 데이터 세트를 통해 훈련된 바이너리 분류 모델에서 생성되었습니다. 분류 모델은 CSV 데이터를 수락하고 0 및 사이에서 단일 점수를 출력합니다1.

0.491656005382537 0.569582343101501 ...

다음 예제에서는 SageMaker 모델을 배포하도록 ModelConfig 객체를 구성하는 방법을 보여줍니다. 이 예제에서는 임시 엔드포인트가 모델을 배포하게 됩니다. 이 엔드포인트는 가속화ml.g4dn.xlarge된 추론을 GPU위해 가 장착된 추론 인스턴스 하나를 사용합니다.

nlp_model_config = clarify.ModelConfig( model_name=your_nlp_model_name, instance_type='ml.g4dn.xlarge', instance_count=1, )

다음 예제는 인덱스가 0인 첫 번째 열에서 확률(점수)을 찾도록 ModelPredictedLabelConfig객체를 구성하는 방법을 보여줍니다.

probability_config = clarify.ModelPredictedLabelConfig( probability=0, )

다음 예제는 SHAP 구성은 영어로 된 모델 및 입력 데이터 세트를 사용하여 토큰별 설명 가능성 분석을 실행하는 방법을 보여줍니다.

text_config = clarify.TextConfig( language='english', granularity='token', ) nlp_shap_config = clarify.SHAPConfig( baseline=[[4, '[MASK]']], num_samples=100, text_config=text_config, )

이전 예제에서 TextConfig 객체는 NLP 설명 가능성 분석을 활성화합니다. granularity 매개변수는 분석 시 토큰을 해석해야 함을 나타냅니다. 영어에서 각 토큰은 하나의 단어입니다. 다른 언어는 SageMaker Clarify가 NLP 처리에 사용하는 spaCy 토큰화 설명서를 참조하세요. 이전 예제에서는 Rating의 평균을 사용하여 위치를 4 설정하는 방법도 보여줍니다.SHAP 기준 인스턴스. 특수 마스크 토큰인 [MASK]Comments의 토큰(단어)을 대체하는 용도로 사용됩니다.

이전 예제에서, 만약 인스턴스가 2,"Flavor needs work"라면, 다음 기준을 사용하여 기준을 평균 4Rating으로 설정합니다.

4, '[MASK]'

이전 예제에서 SageMaker Clarify 설명기는 다음과 같이 각 토큰을 반복하여 마스크로 바꿉니다.

2,"[MASK] needs work" 4,"Flavor [MASK] work" 4,"Flavor needs [MASK]"

그런 다음 SageMaker Clarify 설명자가 예측을 위해 각 줄을 모델로 보냅니다. 이는 설명자가 마스킹된 단어를 포함하거나 미포함한 상태에서 예측을 학습할 수 있게 하기 위한 것입니다. 그런 다음 SageMaker Clarify 설명자는 이 정보를 사용하여 각 토큰의 기여도를 계산합니다.

다음 코드 예제는 계산할 SageMaker Clarify 처리 작업을 시작합니다.SHAP 값.

clarify_processor.run_explainability( data_config=nlp_data_config, model_config=nlp_model_config, model_scores=probability_config, explainability_config=nlp_shap_config, )

NLP 설명 가능성 분석을 위해 SageMaker Studio Classic에서 SageMaker Clarify 처리 작업을 실행하는 방법에 대한 지침이 포함된 예제 노트북은 SageMaker Clarify를 사용하여 텍스트 감정 분석 설명을 참조하세요.

SageMaker Clarify는 컴퓨터 비전 모델이 이미지의 객체를 분류하고 감지하는 방법에 대한 인사이트를 제공하는 히트 맵을 생성합니다.

다음 구성 예제에서 입력 데이터 세트는 JPEG 이미지로 구성됩니다.

cv_data_config = clarify.DataConfig( s3_data_input_path=cv_dataset_s3_uri, dataset_type="application/x-image", s3_output_path=clarify_job_output_s3_uri, )

이전 구성 예제에서 DataConfig 객체에는 Amazon S3 URI 접두사로 s3_data_input_path 설정된 이 포함되어 있습니다. SageMaker Clarify 처리 작업은 접두사 아래에 있는 모든 이미지 파일을 반복적으로 수집합니다. s3_data_input_path 파라미터는 URI 데이터 세트 파일의 이거나 Amazon S3 URI 접두사일 수 있습니다. S3 URI 접두사를 제공하는 경우 SageMaker Clarify 처리 작업은 접두사 아래에 있는 모든 S3 파일을 반복적으로 수집합니다. 의 값은 분석 결과를 유지하기 위한 S3 URI 접두사s3_output_path여야 합니다. 는 컴파일 s3_output_path 중에 를 SageMaker 사용하며 런타임 중에 ExecutionVariable사용되는 SageMaker 파이프라인 파라미터, 속성, 표현식 또는 의 값을 가져올 수 없습니다.

이미지 분류 모델을 설명하는 방법

SageMaker Clarify 처리 작업은 이미지를 슈퍼 픽셀 모음으로 취급하는 커널SHAP 알고리즘을 사용하여 이미지를 설명합니다. 이미지로 구성된 데이터 세트가 주어지면 처리 작업은 각각의 이미지가 관련 슈퍼 픽셀의 히트맵을 보여주고 있는 이미지 데이터 세트를 출력하게 됩니다.

다음 구성 예제에서는 SageMaker 이미지 분류 모델을 사용하여 설명 가능성 분석을 구성하는 방법을 보여줍니다. 자세한 내용은 이미지 분류 - MXNet 섹션을 참조하세요.

ic_model_config = clarify.ModelConfig( model_name=your_cv_ic_model, instance_type="ml.p2.xlarge", instance_count=1, content_type="image/jpeg", accept_type="application/json", )

이전 구성 예제에서 라는 모델은 입력 JPEG 이미지에서 동물을 분류하도록 훈련your_cv_ic_model되었습니다. 이전 예제의 ModelConfig 객체는 SageMaker Clarify 처리 작업에 SageMaker 모델을 임시 엔드포인트에 배포하도록 지시합니다. 가속화된 추론의 경우 엔드포인트는 가 장착된 ml.p2.xlarge 하나의 추론 인스턴스를 사용합니다GPU.

이미지가 엔드포인트로 전송된 후 엔드포인트는 JPEG 이미지를 분류하고 점수 목록을 반환합니다. 각 점수는 하나의 범주에 부여됩니다. ModelPredictedLabelConfig 객체는 각 범주의 이름을 다음과 같이 제공합니다.

ic_prediction_config = clarify.ModelPredictedLabelConfig( label_headers=['bird', 'cat', 'dog'], )

이전 입력에 대한 예제 출력인 ['bird','cat','dog']은 0.3,0.6,0.1에 해당할 수 있으며, 여기서 0.3은 이미지를 bird로 분류할 때의 신뢰도 점수를 나타냅니다.

다음 예제는 SHAP 구성은 이미지 분류 문제에 대한 설명을 생성하는 방법을 보여줍니다. 이는 ImageConfig객체를 사용하여 분석을 활성화합니다.

ic_image_config = clarify.ImageConfig( model_type="IMAGE_CLASSIFICATION", num_segments=20, segment_compactness=5, ) ic_shap_config = clarify.SHAPConfig( num_samples=100, image_config=ic_image_config, )

SageMaker 이미지 세분화를 위해 scikit-learn 라이브러리의 Simple Linear Iterative Clustering(SLIC) 메서드를 사용하여 추출 기능을 명확히 합니다. 이전 구성 예제에서 model_type매개변수는 이미지 분류 문제의 유형을 나타냅니다. 매개변수 num_segments는 입력 이미지에 레이블로 지정될 세그먼트의 대략적인 개수를 추정합니다. 그러면 세그먼트 해당 개수가 slic n_segments매개변수에 전달됩니다.

이미지의 각 세그먼트는 슈퍼 픽셀 및 로컬로 간주됩니다.SHAP 값은 각 세그먼트에 대해 계산됩니다. 매개변수 segment_compactness는 scikit-image slic 메서드로 생성되는 이미지 세그먼트의 모양과 크기를 결정하게 됩니다. 그런 다음에는 해당 이미지 세그먼트의 크기와 모양이 slic compactness매개변수에 전달됩니다.

다음 코드 예제에서는 SageMaker Clarify 처리 작업을 시작하여 이미지에 대한 히트 맵을 생성합니다. 히트맵 값이 양수이면 해당 특징이 객체 감지에 대한 신뢰도 점수를 높였음을 보여주는 것입니다. 음수 값은 해당 특징으로 인해 신뢰도 점수가 낮아졌음을 나타냅니다.

clarify_processor.run_explainability( data_config=cv_data_config, model_config=ic_model_config, model_scores=ic_prediction_config, explainability_config=ic_shap_config, )

SageMaker Clarify를 사용하여 이미지를 분류하고 분류를 설명하는 샘플 노트북은 SageMaker Clarify를 사용한 이미지 분류 설명을 참조하세요.

객체 감지 모델을 설명하는 방법

SageMaker Clarify 처리 작업은 이미지에서 객체를 감지 및 분류한 다음 감지된 객체에 대한 설명을 제공할 수 있습니다. 설명을 위한 프로세스는 다음과 같습니다.

  1. 이미지 객체는 먼저 지정된 컬렉션의 여러 클래스 중 하나로 분류됩니다. 예를 들어, 객체 감지 모델이 cat, dog, fish를 인식할 수 있는 경우라면, 이 세 클래스는 하나의 컬렉션에 속합니다. 이 컬렉션은 다음과 같이 label_headers매개변수에 의해 지정됩니다.

    clarify.ModelPredictedLabelConfig( label_headers=object_categories, )
  2. SageMaker Clarify 처리 작업은 각 객체에 대한 신뢰도 점수를 생성합니다. 신뢰도 점수가 높으면 해당 점수가 지정된 컬렉션의 여러 클래스 중 하나에 속한다는 것을 나타냅니다. SageMaker Clarify 처리 작업은 객체를 구분하는 경계 상자의 좌표도 생성합니다. 신뢰도 점수 및 경계 상자에 대한 자세한 내용은 응답 형식을 참조하세요.

  3. SageMaker 그런 다음 Clarify는 이미지 장면에서 객체를 감지하는 방법에 대한 설명을 제공합니다. 이는 이미지 분류 모델을 설명하는 방법 섹션에서 다루어진 메서드를 사용합니다.

다음 구성 예제에서는 SageMaker 객체 감지 모델your_cv_od_model이 JPEG 이미지에 대해 훈련되어 동물을 식별합니다.

od_model_config = clarify.ModelConfig( model_name=your_cv_ic_model, instance_type="ml.p2.xlarge", instance_count=1, content_type="image/jpeg", accept_type="application/json", )

이전 구성 예제의 ModelConfig 객체는 SageMaker Clarify 처리 작업에 SageMaker 모델을 임시 엔드포인트에 배포하도록 지시합니다. 가속화된 이미징의 경우 이 엔드포인트는 가 장착된 ml.p2.xlarge 하나의 추론 인스턴스를 사용합니다GPU.

다음 예제 구성에서 ModelPredictedLabelConfig객체는 분류를 위해 각 범주의 이름을 제공합니다.

ic_prediction_config = clarify.ModelPredictedLabelConfig( label_headers=['bird', 'cat', 'dog'], )

다음 예제는 SHAP 구성은 객체 감지에 대한 설명을 생성하는 방법을 보여줍니다.

od_image_config = clarify.ImageConfig( model_type="OBJECT_DETECTION", num_segments=20, segment_compactness=5, max_objects=5, iou_threshold=0.5, context=1.0, ) od_shap_config = clarify.SHAPConfig( num_samples=100, image_config=image_config, )

이전 구성 예제에서는 ImageConfig객체가 해당 분석을 활성화합니다. model_type 매개변수는 해당 문제의 유형이 객체 감지임을 나타냅니다. 다른 매개변수에 대한 자세한 설명은 분석 구성 파일을 참조하세요.

다음 코드 예제에서는 SageMaker Clarify 처리 작업을 시작하여 이미지에 대한 히트 맵을 생성합니다. 히트맵 값이 양수이면 해당 특징이 객체 감지에 대한 신뢰도 점수를 높였음을 보여주는 것입니다. 음수 값은 해당 특징으로 인해 신뢰도 점수가 낮아졌음을 나타냅니다.

clarify_processor.run_explainability( data_config=cv_data_config, model_config=od_model_config, model_scores=od_prediction_config, explainability_config=od_shap_config, )

SageMaker Clarify를 사용하여 이미지의 객체를 감지하고 예측을 설명하는 샘플 노트북은 Amazon SageMaker Clarify를 사용하여 객체 감지 모델 설명을 참조하세요.

다음 예제에서는 시계열 예측 모델을 설명하기 위해 고밀도 형식으로 데이터를 SageMaker JSON 구성하는 방법을 보여줍니다. JSON 형식 지정에 대한 자세한 내용은 섹션을 참조하세요JSON 요청 형식.

[ { "item_id": "item1", "timestamp": "2019-09-11", "target_value": 47650.3, "dynamic_feature_1": 0.4576, "dynamic_feature_2": 0.2164, "dynamic_feature_3": 0.1906, "static_feature_1": 3, "static_feature_2": 4 }, { "item_id": "item1", "timestamp": "2019-09-12", "target_value": 47380.3, "dynamic_feature_1": 0.4839, "dynamic_feature_2": 0.2274, "dynamic_feature_3": 0.1889, "static_feature_1": 3, "static_feature_2": 4 }, { "item_id": "item2", "timestamp": "2020-04-23", "target_value": 35601.4, "dynamic_feature_1": 0.5264, "dynamic_feature_2": 0.3838, "dynamic_feature_3": 0.4604, "static_feature_1": 1, "static_feature_2": 2 }, ]

데이터 구성

다음 예제 구성과 같이 전달된 입력 데이터 세트에서 데이터를 올바르게 구문 분석하는 방법을 설명 가능성 작업과 TimeSeriesDataConfig 통신합니다.

time_series_data_config = clarify.TimeSeriesDataConfig( target_time_series='[].target_value', item_id='[].item_id', timestamp='[].timestamp', related_time_series=['[].dynamic_feature_1', '[].dynamic_feature_2', '[].dynamic_feature_3'], static_covariates=['[].static_feature_1', '[].static_feature_2'], dataset_format='timestamp_records', )

비대칭 Shapley 값 구성

기준, 방향, 세분화 및 샘플 수와 같은 시계열 예측 모델 설명 분석을 위한 인수를 정의하는 AsymmetricShapleyValueConfig 데 사용합니다. 기준 값은 관련 시계열, 정적 공변량 및 대상 시계열의 세 가지 데이터 유형에 모두 설정됩니다. AsymmetricShapleyValueConfig 구성은 SageMaker Clarify 프로세서에 한 번에 한 항목에 대한 특성 속성을 계산하는 방법을 알려줍니다. 다음 구성은 의 예제 정의를 보여줍니다AsymmetricShapleyValueConfig.

asymmetric_shapley_value_config = AsymmetricShapleyValueConfig( direction="chronological", granularity="fine-grained", num_samples=10, baseline={ "related_time_series": "zero", "static_covariates": { "item1": [0, 0], "item2": [0, 0] }, "target_time_series": "zero" }, )

에 제공하는 값은 키 를 methods 사용하여 의 항목으로 분석 구성에 AsymmetricShapleyValueConfig 전달됩니다asymmetric_shapley_value.

모델 구성

SageMaker Clarify 프로세서에서 전송된 페이로드의 구조를 제어할 수 있습니다. 다음 코드 샘플에서 ModelConfig 구성 객체는 JMESPath 구문을 사용하여 레코드를 집계하도록 시계열 예측 설명성 작업을 지시합니다. '{"instances": $records}' 여기서 각 레코드의 구조는 다음 record_template 로 정의됩니다'{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}'. $start_time, $related_time_series, $target_time_series$static_covariates는 데이터 세트 값을 엔드포인트 요청 값에 매핑하는 데 사용되는 내부 토큰입니다.

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, record_template='{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}', content_template='{"instances": $records}',, time_series_model_config=TimeSeriesModelConfig( forecast={'forecast': 'predictions[*].mean[:2]'} ) )

마찬가지로 키 를 사용하여 분석 구성으로 TimeSeriesModelConfig전달되는 forecast의 속성time_series_predictor_config은 엔드포인트 응답에서 모델 예측을 추출하는 데 사용됩니다. 예를 들어 엔드포인트 배치 응답의 예는 다음과 같습니다.

{ "predictions": [ {"mean": [13.4, 3.6, 1.0]}, {"mean": [23.0, 4.7, 3.0]}, {"mean": [3.4, 5.6, 2.0]} ] }

에 제공된 JMESPath 표현식forecast{'predictions[*].mean[:2]'}}인 경우 예측 값은 다음과 같이 구문 분석됩니다.

[[13.4, 3.6], [23.0, 4.7], [3.4, 5.6]]

병렬 SageMaker Clarify 처리 작업을 실행하는 방법

대규모 데이터 세트로 작업할 때 Apache Spark를 사용하여 SageMaker Clarify 처리 작업의 속도를 높일 수 있습니다. Spark는 대규모 데이터 처리를 위한 통합형 분석 엔진으로서, SageMaker Clarify 프로세서당 인스턴스를 두 개 이상 요청하면 SageMaker Clarify는 Spark의 분산 컴퓨팅 기능을 사용합니다.

다음 구성 예제에서는 를 사용하여 5 컴퓨팅 인스턴스SageMakerClarifyProcessor가 있는 SageMaker Clarify 프로세서를 생성하는 방법을 보여줍니다. 와 연결된 작업을 실행하려면 Spark 분산 처리를 사용하여 SageMakerClarifyProcessor SageMaker Clarify를 실행합니다.

from sagemaker import clarify spark_clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=5, instance_type='ml.c5.xlarge', )

save_local_shap_values 파라미터를 SHAPConfig로 설정하면 True SageMaker Clarify 처리 작업은 로컬 SHAP 값은 작업 출력 위치에 있는 여러 부분 파일로 표시됩니다.

로컬을 연결하려면 SHAP 값을 입력 데이터 세트 인스턴스에 입력하려면 의 joinsource 파라미터를 사용합니다DataConfig. 컴퓨팅 인스턴스를 더 추가하는 경우 임시 엔드포인트에 ModelConfig 대한 instance_count의 도 늘리는 것이 좋습니다. 이렇게 하면 Spark 작업자의 동시 추론 요청이 엔드포인트에 과부하를 가하는 것을 방지할 수 있습니다. 특히 인스턴스 비율을 endpoint-to-processing 사용하는 one-to-one 것이 좋습니다.