

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

# 엔드포인트 구성 및 생성
<a name="clarify-online-explainability-create-endpoint"></a>

모델에 맞는 새 엔드포인트 구성을 생성하고 이 구성을 사용하여 엔드포인트를 생성합니다. [사전 확인 단계](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-online-explainability-precheck.html)에서 검증된 모델 컨테이너를 사용하여 엔드포인트를 생성하고 SageMaker Clarify 온라인 설명 가능성 기능을 활성화할 수 있습니다.

`sagemaker_client` 객체를 사용하여 [CreateEndpointConfig](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_CreateEndpointConfig.html) API를 사용하는 엔드포인트를 생성합니다. 다음과 같이 `ExplainerConfig` 파라미터 내에 멤버 `ClarifyExplainerConfig`를 설정합니다.

```
sagemaker_client.create_endpoint_config(
    EndpointConfigName='name-of-your-endpoint-config',
    ExplainerConfig={
        'ClarifyExplainerConfig': {
            'EnableExplanations': '`true`',
            'InferenceConfig': {
                ...
            },
            'ShapConfig': {
                ...
            }
        },
    },
    ProductionVariants=[{
        'VariantName': 'AllTraffic',
        'ModelName': 'name-of-your-model',
        'InitialInstanceCount': 1,
        'InstanceType': 'ml.m5.xlarge',
    }]
     ...
)
sagemaker_client.create_endpoint(
    EndpointName='name-of-your-endpoint',
    EndpointConfigName='name-of-your-endpoint-config'
)
```

`sagemaker_client` 객체를 처음 직접 호출하면 설명 가능성 기능이 활성화된 새 엔드포인트 구성이 생성됩니다. 두 번째 직접 호출에서는 엔드포인트 구성을 사용하여 엔드포인트를 시작합니다.

**참고**  
또한 [SageMaker AI 실시간 추론 다중 모델 엔드포인트](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoints.html) 뿐만 아니라 단일 컨테이너에서 여러 모델을 호스팅하고 SageMaker Clarify를 사용하여 온라인 설명 가능성을 구성할 수 있습니다.

# `EnableExplanations` 표현식
<a name="clarify-online-explainability-create-endpoint-enable"></a>

`EnableExplanations` 파라미터는 [https://jmespath.org/](https://jmespath.org/) 부울 표현식 문자열입니다. 설명 가능성 요청의 **각 레코드**에 대해 평가됩니다. 이 파라미터가 **참**인 것으로 평가되면 레코드에 대한 설명이 제공됩니다. 이 파라미터가 **거짓**으로 평가되면 설명이 생성되지 않습니다.

SageMaker Clarify는 각 레코드의 모델 컨테이너 출력을 JSON 호환 데이터 구조로 역직렬화한 다음 `EnableExplanations` 파라미터를 사용하여 데이터를 평가합니다.

**참고**  
모델 컨테이너 출력의 형식에 따라 두 가지 레코드 옵션이 있습니다.  
모델 컨테이너 출력이 CSV 형식인 경우 레코드는 JSON 배열로 로드됩니다.
모델 컨테이너 출력이 JSON 행 형식인 경우 레코드는 JSON 객체로 로드됩니다.

`EnableExplanations` 파라미터는 `InvokeEndpoint` 또는 `CreateEndpointConfig` 작업 중에 전달될 수 있는 JMESPath 표현식입니다. 제공한 JMESPath 표현식이 유효하지 않은 경우 엔드포인트 생성이 실패합니다. 표현식은 유효하지만 표현식 평가 결과가 예상치 못한 경우, 엔드포인트는 성공적으로 생성되지만 엔드포인트를 간접 호출할 때 오류가 생성됩니다. `InvokeEndpoint` API를 사용하여 `EnableExplanations` 표현식을 테스트한 다음 이를 엔드포인트 구성에 적용하세요.

다음은 유효한 `EnableExplanations` 표현식의 예제입니다. 예제에서 JMEsPath 표현식은 백틱 문자를 사용하여 리터럴을 포함합니다. 예를 들어, ``true``는 참을 의미합니다.


| 표현식(문자열 표현) | 모델 컨테이너 출력(문자열 표현) | 평가 결과(부울) | 의미 | 
| --- | --- | --- | --- | 
|  '`true`'  |  해당 사항 없음  |  True  |  온라인 설명 가능성 기능을 무조건 활성화하세요.  | 
|  '`false`'  |  해당 사항 없음  |  False  |  온라인 설명 가능성 기능을 무조건 비활성화하세요.  | 
|  '[1]>`0.5`'  |  '1,0.6'  |  True  |  모델 컨테이너는 각 레코드에 대해 예측 레이블과 확률을 출력합니다. 레코드의 확률(인덱스 1 기준)이 0.5보다 큰 경우 레코드를 설명합니다.  | 
|  'probability>`0.5`'  |  '\$1"predicted\$1label":1,"probability":0.6\$1'  |  True  |  모델 컨테이너는 각 레코드에 대해 JSON 데이터를 출력합니다. 확률이 0.5보다 큰 경우 레코드를 설명합니다.  | 
|  '\$1contains(probabilities[:-1], max(probabilities))'  |  '\$1"probabilities": [0.4, 0.1, 0.4], "labels":["고양이","개","물고기"]\$1'  |  False  |  다중 클래스 모델의 경우, 예측 레이블(최대 확률 값을 갖는 클래스)이 마지막 클래스인 경우 레코드를 설명합니다. 이 표현식은 말 그대로 최대 확률 값이 마지막 확률 목록을 제외한 나머지 확률 목록에 없음을 의미합니다.  | 

# 합성 데이터세트
<a name="clarify-online-explainability-create-endpoint-synthetic"></a>

SageMaker Clarify는 커널 SHAP 알고리즘을 사용합니다. 레코드(샘플 또는 인스턴스라고도 함)와 SHAP 구성이 주어지면 설명자는 먼저 합성 데이터세트를 생성합니다. 그런 다음 SageMaker Clarify는 데이터세트의 예측을 위해 모델 컨테이너를 쿼리하고, 기능 속성을 계산하여 반환합니다. 합성 데이터세트의 크기는 Clarify의 설명자의 런타임에 영향을 줍니다. 큰 합성 데이터세트는 작은 합성 데이터세트보다 모델 예측을 얻는 데 더 많은 시간이 걸립니다.

 합성 데이터세트 크기는 다음 공식에 의해 결정됩니다.

```
Synthetic dataset size = SHAP baseline size * n_samples
```

SHAP 기준 크기는 SHAP 기준 데이터에 있는 레코드 수입니다. 이 정보는 `ShapBaselineConfig`에서 가져옵니다.

`n_samples`의 크기는 설명자 구성의 파라미터 `NumberOfSamples`와 기능 수에 따라 설정됩니다. 기능 수가 `n_features`면 `n_samples`는 다음과 같습니다.

```
n_samples = MIN(NumberOfSamples, 2^n_features - 2)
```

다음은 `NumberOfSamples`가 제공되지 않는 경우 `n_samples`를 보여줍니다.

```
n_samples = MIN(2*n_features + 2^11, 2^n_features - 2)
```

예를 들어, 10개의 기능이 있는 테이블 형식 레코드의 SHAP 기준 크기는 1입니다. `NumberOfSamples`가 제공되지 않는 경우 합성 데이터세트에는 1022개의 레코드가 포함됩니다. 레코드에 20개의 기능이 있는 경우 합성 데이터세트에는 2088개의 레코드가 포함됩니다.

NLP 문제의 경우 `n_features`는 텍스트가 아닌 기능 수에 텍스트 단위 수를 더한 값과 같습니다.

**참고**  
`InvokeEndpoint` API에는 요청 제한 시간이 있습니다. 합성 데이터세트가 너무 크면 설명자가 이 한도 내에서 계산을 완료하지 못할 수 있습니다. 필요한 경우 이전 정보를 사용하여 SHAP 기준 크기와 `NumberOfSamples`를 이해하고 줄이세요. 모델 컨테이너가 배치 요청을 처리하도록 설정된 경우 `MaxRecordCount` 값을 조정할 수도 있습니다.