설명 보기

이 가이드에서는 Vertex AI의 Model 리소스에서 설명을 확인하는 방법을 설명합니다. 다음 두 가지 방법으로 설명을 확인할 수 있습니다.

  • 온라인 설명: Vertex AI API에 대한 동기식 요청으로, 특징 기여 분석이 포함된 예측을 반환하는 온라인 예측과 유사합니다.

  • 일괄 설명: 특성 추출을 통해 예측을 반환하는 Vertex AI API에 대한 비동기식 요청입니다. 일괄 설명은 일괄 예측 요청의 선택사항 부분입니다.

시작하기 전에

설명을 보기 전에 다음을 수행해야 합니다.

  1. 이 단계는 사용하는 머신러닝 모델의 유형에 따라 달라집니다.

  2. 온라인 설명을 확인하려면 이전 단계에서 만든 ModelEndpoint 리소스에 배포합니다.

온라인 설명 보기

온라인 설명을 확인하려면 온라인 예측을 수행하는 것과 동일한 단계의 대부분을 실행합니다. 하지만 Vertex AI API에 projects.locations.endpoints.predict 요청을 전송하는 대신 projects.locations.endpoints.explain 요청을 전송합니다.

다음 가이드에서는 온라인 설명 요청 준비 및 전송에 대한 자세한 안내를 제공합니다.

일괄 설명 보기

특성 기반 일괄 설명만 지원되며, 예시 기반 일괄 설명은 가져올 수 없습니다.

일괄 설명을 확인하려면 일괄 예측 작업을 만들 때 generateExplanation 필드true로 설정합니다.

일괄 예측 작업 준비 및 만들기에 대한 자세한 안내는 일괄 예측 보기를 참조하세요.

Vertex AI Workbench 사용자 관리 노트북에서 로컬로 설명 가져오기

Vertex AI Workbench 사용자 관리 노트북에서는 설명을 확인하기 위해 Vertex AI에 모델을 배포할 필요 없이 노트북의 로컬 커널 또는 런타임 내에서 Vertex Explainable AI를 실행하여 커스텀 학습 모델에 대한 설명을 생성할 수 있습니다. 로컬 설명을 사용하면 변경사항마다 Vertex AI 모델 배포를 조정하지 않고도 다양한 Vertex Explainable AI 설정을 사용해 볼 수 있습니다. 덕분에 다양한 기준을 사용하거나 설명에 다른 시각화 설정을 사용해 보거나 알고리즘에 사용되는 단계 또는 경로 수를 조정할 때의 영향을 쉽고 빠르게 평가할 수 있습니다.

로컬 설명은 사용자 관리 노트북 내에서만 사용할 수 있으므로 이 특성은 사용자 관리 노트북 인스턴스 외부에서 실행되는 Jupyter 노트북에서는 작동하지 않습니다.

사용자 관리 노트북 인스턴스에서 로컬로 설명을 생성하려면 다음 안내를 따르세요.

  • 사용자 관리 노트북 인스턴스 만들기
  • 사용자 관리 노트북 인스턴스에서 JupyterLab 환경을 시작한 다음 노트북을 만들거나 가져옵니다.
  • 모델 아티팩트를 노트북의 로컬 환경 또는 Cloud Storage 버킷에 저장합니다.
  • 메타데이터를 생성 및 저장하여 모델을 설명하고 설명 요청을 구성합니다.

동시 설명 가져오기

Explainable AI는 동시 설명을 지원합니다. 동시 설명을 사용하면 각 설명 메서드에 모델을 별도로 배포할 필요 없이 동일한 배포된 모델 엔드포인트에서 특성 기반 설명 및 예시 기반 설명을 모두 요청할 수 있습니다.

동시 설명을 가져오려면 모델을 업로드하고 예시 기반 또는 특성 기반 설명을 구성합니다. 그런 다음 평소와 같이 모델을 배포합니다.

모델이 배포된 후에는 평소와 같이 구성된 설명을 요청할 수 있습니다. 또한 concurrent_explanation_spec_override를 지정하여 동시 설명을 요청할 수 있습니다.

동시 설명을 사용할 때는 다음 사항에 유의하세요.

  • v1beta1 API 버전에서만 동시 설명이 가능합니다. Vertex Python SDK를 사용하는 경우 preview 모델을 사용하여 동시 설명을 사용해야 합니다.
  • 특성 기반 설명으로 배포한 후에는 예시 기반 설명을 요청할 수 없습니다. 예시 기반 설명과 특성 기반 설명을 모두 사용하려면 예시 기반 설명을 사용하여 모델을 배포하고 동시 설명 필드를 사용하여 특성 기반을 요청합니다.
  • 동시 설명에서는 일괄 설명이 지원되지 않습니다. 이 기능은 온라인 설명에서만 사용할 수 있습니다.

사용자 관리 노트북에서 Explainable AI SDK 사용

Explainable AI SDK는 사용자 관리 노트북 인스턴스에 사전 설치되어 있습니다. 노트북 내에서 Explainable AI SDK를 사용하여 모델 아티팩트를 저장하고 설명 요청의 모델 입력 및 출력에 대한 메타데이터를 자동으로 식별할 수 있습니다. 다른 매개변수를 지정하여 설명 요청을 구성한 다음 설명 결과를 시각화할 수도 있습니다.

노트북의 로컬 환경이나 Cloud Storage 버킷에 모델과 메타데이터를 저장할 수 있습니다. TensorFlow를 사용하는 경우 save_model_with_metadata() 메서드를 사용하여 모델의 입력과 출력을 추론하고 이 설명 메타데이터를 모델과 함께 저장할 수 있습니다.

그런 다음 load_model_from_local_path()를 사용하여 모델을 Explainable AI SDK에 로드합니다. 필요한 경우 특정 Vertex Explainable AI 알고리즘의 구성을 조정할 수 있습니다. 예를 들어 샘플링된 Shapley에 사용할 경로 수를 변경하거나 적분 경사 또는 XRAI에 사용할 단계 수를 변경할 수 있습니다.

마지막으로 데이터의 인스턴스를 사용해 explain()을 호출하고 특성 기여 분석을 시각화합니다.

다음 예시 코드를 사용하면 사용자 관리 노트북 인스턴스 내의 TensorFlow 2 모델에 대한 로컬 설명을 확인할 수 있습니다.

# This sample code only works within a user-managed notebooks instance.
import explainable_ai_sdk
from explainable_ai_sdk.metadata.tf.v2 import SavedModelMetadataBuilder

metadata_and_model_builder = SavedModelMetadataBuilder('LOCAL_PATH_TO_MODEL')
metadata_and_model_builder.save_model_with_metadata('LOCAL_PATH_TO_SAVED_MODEL_ARTIFACT')

# Load the model and adjust the configuration for Explainable AI parameters
num_paths = 20
model_artifact_with_metadata = explainable_ai_sdk.load_model_from_local_path(
    'LOCAL_PATH_TO_SAVED_MODEL_ARTIFACT',
    explainable_ai_sdk.SampledShapleyConfig(num_paths))

# Explainable AI supports generating explanations for multiple predictions
instances = [{feature_a: 10, feature_2: 100,...}, ... ]
explanations = model_artifact_with_metadata.explain(instances)
explanations[0].visualize_attributions()

다양한 구성과 매개변수를 포함한 Explainable AI SDK에 대한 자세한 내용은 GitHub에서 SDK의 config.py 파일을 참조하세요. Vertex AI Workbench 사용자 관리형 노트북에 대해 자세히 알아보세요.

문제 해결

이 섹션에서는 설명을 확인하는 동안 문제가 발생할 경우 도움이 될 수 있는 문제 해결 단계를 설명합니다.

오류: 목록 색인이 범위를 벗어남

설명을 요청할 때 다음과 같은 오류 메시지가 표시되면 다음을 수행합니다.

"error": "Explainability failed with exception: listindex out of range"

객체 배열이 필요한 필드에 빈 배열을 전달하지 않았는지 확인합니다. 예를 들어 field1에서 객체 배열을 허용하는 경우 다음 요청 본문으로 인해 오류가 발생할 수 있습니다.

{
  "instances": [
    {
      "field1": [],
    }
  ]
}

대신 배열이 비어 있지 않은지 확인합니다. 예를 들면 다음과 같습니다.

{
  "instances": [
    {
      "field1": [
        {}
      ],
    }
  ]
}

다음 단계