AI Explanations용 TensorFlow 모델 저장

이 페이지에서는 TensorFlow 2.x 또는 TensorFlow 1.15 사용 여부에 관계없이 AI Explanations에서 사용할 TensorFlow 모델을 저장하는 방법을 설명합니다.

TensorFlow 2

TensorFlow 2.x로 작업하는 경우 tf.saved_model.save를 사용하여 모델을 저장합니다.

저장된 TensorFlow 모델을 최적화하는 일반적인 옵션 중 하나는 사용자가 서명을 제공하도록 하는 것입니다. 모델을 저장할 때 입력 서명을 지정할 수 있습니다. 입력 서명이 하나만 있으면 AI Explanations가 tf.saved_model.save의 기본 동작에 따라 설명 요청에 대해 기본 제공 기능을 자동으로 사용합니다. TensorFlow에서 제공 서명 지정에 대해 자세히 알아보세요.

여러 입력 서명

모델에 입력 서명이 2개 이상 있으면 AI Explanations가 모델에서 예측을 검색할 때 사용할 서명 정의를 자동으로 결정할 수 없습니다. 따라서 AI Explanations가 사용할 서명 정의를 지정해야 합니다. 모델을 저장할 때 고유 키 xai-model로 제공 기본 함수의 서명을 지정합니다.

tf.saved_model.save(m, model_dir, signatures={
    'serving_default': serving_fn,
    'xai_model': my_signature_default_fn # Required for AI Explanations
    })

이 경우 AI Explanations는 xai_model 키로 제공된 모델 함수 서명을 사용하여 모델과 상호작용하고 설명을 생성합니다. 키에 정확한 문자열 xai_model를 사용합니다. 자세한 배경 정보를 보려면 서명 정의에 대한 이 개요를 참조하세요.

사전 처리 함수

사전 처리 함수를 사용하는 경우 모델을 저장할 때 사전 처리 함수와 모델 함수의 서명을 지정해야 합니다. xai_preprocess 키를 사용하여 사전 처리 함수를 지정합니다.

tf.saved_model.save(m, model_dir, signatures={
    'serving_default': serving_fn,
    'xai_preprocess': preprocess_fn, # Required for AI Explanations
    'xai_model': model_fn # Required for AI Explanations
    })

이 경우 AI Explanations는 설명 요청에 사전 처리 함수와 모델 함수를 사용합니다. 사전 처리 함수의 출력이 모델 함수의 예상 입력과 일치하는지 확인합니다.

전체 TensorFlow 2 예시 메모장을 사용해 보세요.

TensorFlow 1.15

TensorFlow 1.15를 사용하는 경우에는 tf.saved_model.save를 사용하지 마세요. 이 함수는 TensorFlow 1을 사용할 때 AI Explanations에 지원되지 않습니다. 대신 적절한 tf.estimator.export.ServingInputReceiver와 함께 tf.estimator.export_savedmodel을 사용하세요.

Keras로 빌드된 모델

Keras에서 모델을 빌드하고 학습시키려면 모델을 TensorFlow Estimator로 변환하고 저장된 모델로 내보내야 합니다. 이 섹션에서는 모델 저장에 중점을 둡니다. 전체 작업 예시를 보려면 예시 메모장을 참조하세요.

Keras 모델을 빌드하고, 컴파일하고, 학습시킨 후 다음을 수행해야 합니다.

  • tf.keras.estimator.model_to_estimator를 사용하여 Keras 모델을 TensorFlow Estimator로 변환합니다.
  • tf.estimator.export.build_raw_serving_input_receiver_fn을 사용하여 서빙 입력 함수를 제공합니다.
  • tf.estimator.export_saved_model을 사용하여 모델을 저장된 모델로 내보냅니다.
# Build, compile, train, and evaluate your Keras model
model = tf.keras.Sequential(...)
model.compile(...)
model.fit(...)
model.predict(...)

## Convert your Keras model to an Estimator
keras_estimator = tf.keras.estimator.model_to_estimator(keras_model=model, model_dir='export')

## Define a serving input function appropriate for your model
def serving_input_receiver_fn():
  ...
  return tf.estimator.export.ServingInputReceiver(...)

## Export the SavedModel to Cloud Storage using your serving input function
export_path = keras_estimator.export_saved_model(
    'gs://' + 'YOUR_BUCKET_NAME', serving_input_receiver_fn).decode('utf-8')

print("Model exported to: ", export_path)

다음 단계