모델을 배포할 때는 설명 메타데이터 파일을 제출하여 설명 요청을 구성해야 합니다. 설명 요청의 기능을 선택하려면 이 메타데이터 파일에 모델의 입력과 출력을 포함해야 합니다. 원하는 경우 입력 기준을 포함하거나 이미지 데이터에 대한 시각화 설정을 구성할 수도 있습니다.
이 가이드에서는 TensorFlow 2.x 또는 TensorFlow 1.15로 새 모델을 빌드하거나 기존 TensorFlow 2.x 모델을 사용하면서 Explainable AI SDK를 통해 설명 메타데이터 파일을 만드는 방법을 설명합니다. 기존 TensorFlow 1.x 모델의 설명을 요청하려면 수동으로 설명 메타데이터 파일을 생성해야 합니다.
설명 메타데이터 개요
AI Explanations에서 모델을 배포하려면 설명 메타데이터 파일이 필요합니다. 모델의 입력과 출력을 지정하면 설명 요청에 원하는 특성을 선택할 수 있습니다. explanation_metadata.json
이라는 파일을 만들고 저장된 모델과 동일한 디렉터리의 Cloud Storage 버킷에 이 파일을 업로드합니다. Explainable AI SDK는 모델을 빌드하고 저장할 때 이 프로세스가 자동으로 수행됩니다.
설명 메타데이터 파일에 옵션 설정을 추가할 수도 있습니다.
- 이미지에 대한 결과가 표시되는 방식을 구성합니다.
- 설명 요청에 대한 입력 기준을 설정합니다.
API 참조에서 설명 메타데이터 파일에 대해 자세히 알아보세요.
Explainable AI SDK 설치
Explainable AI SDK는 다음을 사용하여 빌드된 모델을 지원하는 Python SDK입니다.
- TensorFlow 1.15 및 TensorFlow 2.x
- Python 3.7 이상
Explainable AI SDK를 설치합니다.
pip3 install explainable_ai_sdk
Explainable AI SDK로 입력 및 출력 찾기
Explainable AI SDK를 사용하면 TensorFlow 모델을 빌드하거나 학습시킬 때 입력 및 출력을 찾을 수 있습니다. 이러한 경우에 각각의 모델을 빌드한 직후 설명 메타데이터 파일을 빌드합니다. Keras 및 에스티메이터 모델의 경우 Explainable AI SDK에서 모델 그래프의 입력과 출력을 유추합니다.
메타데이터 파일을 저장하기 전에 Explainable AI SDK가 생성하는 입력 및 출력 값을 업데이트하고 입력 기준 및 시각화 환경설정과 같은 필드를 더 추가할 수 있습니다.
TensorFlow 2.x용 Explainable AI SDK 예시
SavedModelMetadataBuilder
는 TensorFlow 2.x를 사용하여 빌드된 모든 저장된 모델에서 작동합니다. 이 예시에서 Explainable AI SDK는 모델과 동일한 Cloud Storage 버킷 디렉터리에 설명 메타데이터 파일을 만들고 업로드합니다.
from explainable_ai_sdk.metadata.tf.v2 import SavedModelMetadataBuilder
builder = SavedModelMetadataBuilder(
model_path)
builder.save_model_with_metadata('gs://my_bucket/model') # Save the model and the metadata.
필요한 경우 get_metadata()
함수를 사용하여 저장 및 업로드하기 전에 생성된 메타데이터를 확인할 수 있습니다.
TensorFlow 함수를 사용하여 모델을 저장하고 업로드하는 경우 save_metadata()
를 사용하여 설명 메타데이터만 빌드하고 내보낼 수 있습니다.
from explainable_ai_sdk.metadata.tf.v2 import SavedModelMetadataBuilder
# We want to explain 'xai_model' signature.
builder = SavedModelMetadataBuilder(export_path, signature_name='xai_model')
random_baseline = np.random.rand(192, 192, 3)
builder.set_image_metadata(
'numpy_inputs',
input_baselines=[random_baseline.tolist()])
builder.save_metadata(export_path)
또한 이 예시는 무작위 노이즈를 기준으로 사용하여 이미지 데이터의 입력 기준을 설정하는 방법을 보여줍니다. 데이터 세트에 가장 적합한 입력 기준을 사용합니다. 시작 지점으로 AI Explanations 예시 기준을 참조하세요. 메타데이터를 업데이트하고 더 많은 필드를 추가하려면 set_numeric_metadata()
, set_categorical_metadata()
또는 set_image_metadata()
와 같이 데이터 유형과 일치하는 setter 함수를 사용합니다.
TensorFlow 1.15용 Explainable AI SDK 예시
Explainable AI SDK는 tf.keras
, tf.estimator
또는 tf.Graph
로 빌드된 TensorFlow 1.15 모델을 지원합니다.
Keras
Explainable AI SDK는 Sequential API와 Functional API로 빌드된 Keras 모델과, Model
클래스를 서브클래스로 빌드한 커스텀 모델을 지원합니다. 다양한 유형의 Keras 모델에 대해 자세히 알아보세요.
import tensorflow.compat.v1.keras as keras
from explainable_ai_sdk.metadata.tf.v1 import KerasGraphMetadataBuilder
# Build a model.
model = keras.models.Sequential()
model.add(keras.layers.Dense(32, activation='relu', input_dim=10))
model.add(keras.layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', metrics=['accuracy'])
model.fit(
np.random.random((1, 10)),
np.random.randint(2, size=(1, 1)),
epochs=10,
batch_size=32)
# Set the path to your model.
model_path = MODEL_PATH
# Build the metadata.
builder = KerasGraphMetadataBuilder(model)
builder.save_model_with_metadata(model_path)
모델을 빌드한 후 메타데이터 빌더를 사용하여 입력과 출력을 가져옵니다.
에스티메이터
Explainable AI SDK는 에스티메이터 모델을 지원합니다. 메타데이터 빌더의 경우 입력 특성 열, 제공 입력 함수, 출력 키를 지정합니다.
import tensorflow.compat.v1 as tf
from explainable_ai_sdk.metadata.tf.v1 import EstimatorMetadataBuilder
# Build a model.
language = tf.feature_column.categorical_column_with_vocabulary_list(
key='language',
vocabulary_list=('english', 'korean'),
num_oov_buckets=1)
language_indicator = tf.feature_column.indicator_column(language)
class_identity = tf.feature_column.categorical_column_with_identity(
key='class_identity', num_buckets=4)
class_id_indicator = tf.feature_column.indicator_column(class_identity)
age = tf.feature_column.numeric_column(key='age', default_value=0.0)
classifier_dnn = tf.estimator.DNNClassifier(
hidden_units=[4],
feature_columns=[age, language_indicator, language_embedding, class_id_indicator])
classifier_dnn.train(input_fn=_train_input_fn, steps=5)
# Build the metadata.
md_builder = EstimatorMetadataBuilder(
classifier_dnn, [age, language, class_identity], _get_json_serving_input_fn, 'logits')
model_path = MODEL_PATH
그래프
Explainable AI SDK는 Keras 또는 Estimator API 없이 빌드된 TensorFlow 모델을 지원합니다.
import tensorflow.compat.v1 as tf
from explainable_ai_sdk.metadata.tf.v1 import GraphMetadataBuilder
# Build a model.
sess = tf.Session(graph=tf.Graph())
with sess.graph.as_default():
x = tf.placeholder(shape=[None, 10], dtype=tf.float32, name='inp')
weights = tf.constant(1., shape=(10, 2), name='weights')
bias_weight = tf.constant(1., shape=(2,), name='bias')
linear_layer = tf.add(tf.matmul(x, weights), bias_weight)
prediction = tf.nn.relu(linear_layer)
# Build the metadata.
builder = GraphMetadataBuilder(
session=sess, tags=['serve'])
builder.add_numeric_metadata(x)
builder.add_output_metadata(prediction)
model_path = os.path.join('gs://', 'BUCKET_NAME', 'PATH_TO_MODEL')
builder.save_model_with_metadata(model_path)
모델 그래프를 빌드한 후 하나 이상의 모델 입력 및 하나의 출력을 통해 설명 메타데이터를 빌드합니다. Explainable AI SDK는 숫자, 범주형, 이미지, 텍스트 등 각 입력 유형의 메타데이터를 추가할 수 있는 함수를 제공합니다.
결과 explanation_metadata.json
파일은 다음과 유사합니다.
{
"outputs": {
"Relu": {
"output_tensor_name": "Relu:0"
}
},
"inputs": {
"inp": {
"input_tensor_name": "inp:0",
"encoding": "identity",
"modality": "numeric"
}
},
"framework": "Tensorflow",
"tags": [
"explainable_ai_sdk"
]
}
설명 메타데이터 설정(선택사항)
기본적으로 Explainable AI SDK는 모델의 입력과 출력에 대한 필수 정보만 사용하여 설명 메타데이터 파일을 생성합니다. 설명 메타데이터 파일을 저장하기 전에 입력 기준 및 이미지 시각화 설정에 대한 선택적 구성을 포함할 수 있습니다. 아니면 설명 메타데이터 파일이 생성된 후 수정할 수도 있습니다.
입력 기준 설정
입력 기준은 추가 정보를 제공하지 않는 기능을 나타냅니다. 표 형식 모델의 기준은 학습 데이터와 관련해서 중앙값, 최솟값, 최댓값, 임의 값을 나타낼 수 있습니다. 마찬가지로 이미지 모델의 경우 기준이 검은색 이미지, 흰색 이미지, 회색 이미지 또는 임의 픽셀 값이 있는 이미지일 수 있습니다.
기준은 하나로 시작하는 것이 좋습니다. 필요한 경우 기준을 변경하거나 여러 개의 기준을 사용할 수 있습니다. 기준을 조정하는 방법의 예시를 참조하세요.
이미지 데이터의 시각화 설정 구성
이미지 데이터로 작업하는 경우 설명 메타데이터 파일에 시각화 구성을 추가하여 설명 결과가 표시되는 방식을 구성할 수 있습니다. 이 구성을 추가하지 않으면 AI Explanations는 기본 설정을 사용합니다.
시각화 옵션의 예를 참조하거나 API 참조에서 설정에 대해 자세히 알아보세요.
다음 단계
- 예시 메모장 사용해 보기
- 설명과 함께 모델을 배포하는 방법 알아보기