[Tensorflow] RestAPI를 사용한 모델 배포 with docker

hugingstar·2023년 9월 3일
0
post-thumbnail

이번 글에서는 텐서플로우 모델을 RestAPI를 사용하여 배포하는 방법에 대해서 설명한다. Docker-hub에 있는 tensorflow/serving을 만든다.

(1) 서빙 이미지 탐색 및 다운로드

  • Poweshell을 관리자 모드로 켠다
  • search 명령어로 tensorflow/serving 이미지가 있는지 확인한다.
docker search tensorflow/serving

  • 도커 이미지를 Pull 한다.(: 뒤에는 tag가 있으므로 확인하여 본인에게 필요한 작업환경을 선택해서 사용하면된다. Docker-hub 홈페이지로 들어가야한다.)
docker pull tensorflow/serving:latest

  • Docker serving을 테스트할 모델 파일을 텐서플로우 serving 깃허브에서 제공하므로 다운로드 받는다.
mkdir servingTest
cd servingTest
git clone --depth=1 https://github.com/tensorflow/serving

  • 어떤 파일을 배포할 지 확인한다.(저장한 파일 위치로 들어가서 직접 확인한다.)
  • 아래의 경로를 참고해서 모델 파일이 있는 곳까지 들어간다.
  • 아래 그림처럼 다양한 테스트 파일이 있는 것을 확인한다.
<Path>
E:\servingTest\serving\tensorflow_serving\servables\tensorflow\testdata

  • saved_model_half_plus_three 라는 모델로 테스트를 진행한다. 이 모델은 값을 입력하면 입력된 값에 0.5를 곱하고 3을 더한 결과가 출력되는 모델이다.(0.5 * x + 3)
  • saved_model_half_plus_three 폴더 안으로 들어가보면, 확장자 .pb 라는 모델 파일이 있다.
  • 우리가 사용하는 모델이 바로 이 pb 모델이다.(내가 원하는데로 바꿀려면 메타데이터 설정이 필요한데 좀 복잡하다..)

(2) 실행 및 결과 도출

  • 두 개의 파워쉘 창을 열고 결과를 도출해본다.
  • run 명령어로 실행한다. (실행할 때 -v 옵션을 켜서 )
  • 8501 포트로 접속해서 사용할 수 있다고 대기 상태가 된다.
docker run -p 8501:8501 -v E:\servingTest\serving\tensorflow_serving\servables\tensorflow\testdata\saved_model_half_plus_three:/models/half_plus_three -e MODEL_NAME=half_plus_three -t tensorflow/serving
  • 컨테이너

  • 대기중

curl -d "{""instances"": [2.0, 4.0, 6.0]}" -X POST http://localhost:8501/v1/models/half_plus_three:predict
  • 새로운 명령 프롬프트를 연다. (값을 입력해서 출력값 확인한다.)

(3) 고찰

  1. 예제 파일에서는 .pb 파일의 메타데이터들을 모두 매핑시켜져 있기 때문에 특별한 문제 없이 사용가능하였다. 하지만, 우리가 만든 딥러닝 파일은 .h5 확장자라서 .pb로 맞추는 것이 어렵다.
  2. 딥러닝 뿐만 아니라 .joblib 확장자를 사용하는 머신러닝 모델을 배포해야한다면 굉장히 처리해줘야할 문제들이 많아진다.
  3. 하지만, 모델 배포를 위한 컨테이너 활용 방안을 자세하게 조사할 수 있었다. 이러한 조건들을 반영해서 컨테이너를 만든다.
  4. 보통 대용량 연산이 가능한 모델은 서버 컴퓨터에만 놓고 연산 결과만 현장으로 보내야하는 경우가 대부분인데, 타겟 도메인으로 모델을 보내야하는 것을 고려해야한다면 이 방법에서 보완이 필요하다.
  5. 개인별 개발 환경을 serving 컨테이너가 만들어논 방식을 따라야 한다.

0개의 댓글