[一日30分 인생승리의 학습법] [Tensorflow] Serving이용하여 REST API 만들기
2021.08.07 13:19
[一日30分 인생승리의 학습법] [Tensorflow] Serving이용하여 REST API 만들기
IRIS예제를 이용하여 텐서플로 딥러닝 모델을 만들고
REST API를 통해 예측하는 시스템을 만들어보겠습니다.
1) 텐서플로와 텐서플로 서빙 도커 이미지를 다운받습니다
트레이닝하고 모델을 저장할 버전과 서빙할 버전의 메이저 버전이 같도록 하는 것을 권장합니다
2) 텐서플로 컨테이너를 실행합니다
호스트시스템의 경로를 C:\notebooks로 지정했는데 자신의 환경에 맞게 변경할 수 있습니다
3) 주피터 노트북을 실행합니다
참고로 주피터 노트가 아닌 vim 등을 통해 직접 소스코드를 작성하셔도 됩니다.
4) 웹 브라우저로 접속합니다
5) Iris 트레이닝하고 모델을 결과로 저장하는 소스코드를 작성하고 실행합니다
iris 디렉토리의 트리구조입니다.
latest_exporter에 최근 모델들이 있고 가장 좋은 모델이 best_exporter에 존재합니다.
(1번만 트레이닝했을 때 best_exporter가 없을 수 있으므로 2회 이상 트레이닝을 해주세요)
best_exporter의 모델을 서빙하기 위해 serving_exporter로 복사합니다.
참고로 serving_exporter의 디렉토리 구조는 하위에 모델명 하위에 모델번호입니다.
6) 텐서플로 서빙 컨테이너를 3개 실행합니다 (운영환경에서 안정적인 운영을 위해 2개 이상을 권장합니다)
컨테이너 실행 환경변수 모델명이 iris_dnn입니다, 모델을 저장했던 serving_exporter 하위 폴더 iris_dnn과 일치합니다
serving1번 컨테이너는 8501번 포트, 2번 컨테이너는 8502번 포트,
3번 컨테이너는 8503번 포트를 서비스 합니다.
기동 로그를 살펴보시면 모델번호 1560950528를 예약 > 승인 > 로딩합니다.
7) 호스트 PC 또는 호스트 서버 등에서 API를 호출해 봅니다
요청URL 형식
요청메시지 형식( instances 대신 inputs형식도 가능합니다 )
[리눅스 또는 Mac curl 명령어]
[원도우 curl 명령어] (따옴표에 주의합니다)
3개 명령어를 실행하면 아래와 같은 결과가 나옵니다
만약 아래와 같은 오류 메시지에 주의하십시요
8) 5번으로 올라가서 다시 실행해봅니다(트레이딩 + 더 좋은 모델 발견)
다시 돌려보니 1560950528보다 더 좋은 1560950530가 나왔습니다.
현재 떠 있는 서빙 로그를 살펴보면 1560950530을 먼저 기동하여 정상을 확인한 후
1560950528 모델을 내리는 것을 확인할 수 있습니다.
텐서플로 서빙은 모델번호가 가장 큰 숫자의 모델을 자동으로 로딩하고 이전 모델은 종료합니다.
여기까지 IRIS예제를 이용하여 텐서플로 모델을 만들고 실제 서빙하는 실습을 해보았습니다.
끝.
[출처] https://blog.naver.com/wideeyed/221566170795
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.