[TensorFlow] Tensorflow Serving 모델 업데이트 방법

참조


목적

  • Tensorflow Serving에서 모델 업데이트 방법에 대해 조사합니다.

TensorFlow Serving 모델 폴더 구조

  • TensorFlow Serving은 다음과 같은 전형적인 모델 폴더 구조를 가진 모델의 업데이트를 지원합니다.
/saved_model_files
    /1      # model files of version 1
        /assets
        /variables
        saved_model.pb
    ...
    /N      # model files of version N
        /assets
        /variables
        saved_model.pb
  • 위의 1 ~ N 의 서브폴더는 버전 번호가 다른 모델을 나타냅니다.
  • --model_base_path 를 지정할 때는 루트 디렉토리의 절대 주소 만 지정하면 됩니다.
  • 예를 들어, 위의 폴더 구조가 home/snowkylin 폴더에 있는 경우 --model_base_pathhome/snowkylin/saved_model_files 로 설정해야 합니다.
  • TensorFlow Serving은 로드하기 위해 버전 번호가 가장 큰 모델을 자동으로 선택합니다.
  • 예를 들어, Xception 모델을 이용하여 Train 을 하고 SaveModel 한 내용을 Xception/1 에 저장하고, 2 번째로 다시 Train한 SaveModel 정보를 Xception/2 경로에 저장이 되어 있다면, TensorFlow Serving 에서는 자동으로 번호가 큰 2번 경로의 SaveModel 정보를 가지고 Inference 작업을 진행합니다.

테스트 진행

  • 실제로 버전 번호가 높은 버전이 실제로 TensorFlow Serving에서 Inference 되는지 테스트 진행하였습니다.

1. TensorFlow Serving Docker 실행

  • 먼저, Docker 로 TensorFlow Serving Container를 실행합니다.
  • 실행 명령어는 아래와 같습니다.
docker run -t --rm --name=tf-serving-mnist \
-p 8500:8500 \
-p 8501:8501 \
-v "C:/src/test_data/save_model/tensorflow/:/models/model" \
tensorflow/serving \
--model_name=mnist-model \
--model_config_file=/models/model/Config/models.config \
--model_config_file_poll_wait_seconds=60

2. 대상 모델 Xception 디렉토리 확인

  • 테스트 진행을 위해 C:/src/test_data/save_model/tensorflow/Xception 디렉토리 안에 1, 2 폴더를 생성해 놓았고, SaveModel 정보들도 넣어 놓았습니다.


2. 실행된 Container 로그 확인

  • 로그 확인 결과, XCeption 모델의 경우 현재 1, 2 버전의 모델이 저장되어 있습니다.
  • 여기서, TensorFlow Serving Container를 실행하니까 자동으로 TensorFlow Serving에서는 2번 버전의 모델을 Loading 한 것을 로그로 확인할 수 있습니다.

728x90

이 글을 공유하기

댓글

Designed by JB FACTORY