2.5.11.InceptionServingExample.md 6 KB
Newer Older
HooYoungAhn's avatar
HooYoungAhn committed
---
html:
  toc: true
  offline: true
export_on_save:
  html: true
---
# 온디맨드 방식으로 Inception 모델 서빙하기 (InceptionServingExample)
---
텐서플로우 기반 Inception 모델을 이용한 이미지 분류 RESTful 서비스 예제를 소개합니다.

## 모델 등록하기
웹툴킷 화면에서 [Repository] 탭을 클릭하여, Inception 모델을 등록합니다.

### 모델 폴더 생성하기
웹툴킷 화면에서 [New Directory] 메뉴를 클릭하여, Inception 모델을 등록할 폴더를 생성합니다.
![모델 폴더 생성화면](images/2.5.11_1_01.png)

### 모델 업로드
웹툴킷 화면에서 [File Upload] 메뉴를 클릭하여, 모델을 등록합니다.

[파일 입력] 콤보 박스에서 '폴더'를 선택합니다.
![모델 업로드 메뉴](images/2.5.11_1_02.png)
[파일 선택] 버튼을 클릭하여, 등록할 모델을 선택합니다.
![모델 업로드 선택](images/2.5.11_1_03.png)

### 모델 등록 완료
웹툴킷 화면에서 모델이 등록된 것을 확인할 수 있습니다.
![모델 등록 완료](images/2.5.11_1_04.png)

## 워크플로우 생성하기
워크플로우 편집기를 이용하여, 다음의 절차에 따라 워크플로우를 생성합니다.

### 엔진 선택
본 예제는 온 디맨드 타입의 분류 서비스를 제공하므로, OnDemandServing 엔진을 선택합니다.

#### Reader
본 예제에서는 Reader를 사용하지 않습니다.

#### Writer
본 예제에서는 Writer를 사용하지 않습니다.

#### Controller
본 예제의 Controller는 TensorflowServingController를 사용하고, 속성을 기본 값으로 설정합니다.

#### Runner
본 예제의 Runner는 TensorflowServingRunner를 사용하고, 속성을 다음과 같이 설정합니다.
field  |value   | 설명
--|---|--
modelBasePath  |  models/inception |  모델 경로
port  |  8002 |  이미지 분류 결과를 서비스할 포트 번호
modelName  |   inception |  서비스에 사용할 inception 모델의 이름

'modelBasePath' 설정은 위에서 등록한 Inception 모델을 선택합니다.
![모델 경로 설정](images/2.5.11_2_01.png)

#### Operator
본 예제의 Operator는 TensorflowServingOperator를 사용하고, 속성을 기본 값으로 설정합니다.

완성된 워크플로우는 다음과 같습니다.
![워크플로우 완성 화면](images/2.5.11_2_02.png)

웹툴킷에 ksbuser@etri.re.kr 계정으로 로그인하면, 본 예제 워크플로우가 이미 만들어져 있는 것을 확인할 수 있습니다.
워크플로우 편집기의 불러오기 메뉴를 통해 본 예제를 실행할 수 있습니다.

## 워크플로우 실행 및 모니터링하기

### 워크플로우 실행하기
워크플로우 편집기 화면 상단의 실행 버튼을 클릭하여, 위에서 작성한 워크플로우를 실행합니다.
본 예제는 온 디맨드 타입의 엔진이므로, Batch 체크박스를 해제하고 Run 버튼을 클릭합니다.
![워크플로우 실행](images/2.5.11_3_01.png)

### 워크플로우 모니터링 하기

#### 워크플로우 상태 확인
웹툴킷 [Monitoring] 화면에서 [Workflow] 탭을 선택하여, 위에서 실행한 워크플로우와 엔진의 동작 상태를 확인할 수 있습니다.
정상적으로 실행되어 Status 값이 Inprogress인 것을 확인할 수 있습니다.
![워크플로우 동작 상태 확인](images/2.5.11_3_02.png)

#### 워크플로우 로그 보기
[Workflow History] 탭을 선택하여, 현재 동작 중인 워크플로우의 로그 정보를 확인할 수 있습니다.
![워크플로우 히스토리](images/2.5.11_3_03.png)

#### 서빙 서비스 상태 보기
웹툴킷 [Dashboard] 탭을 선택하면, 화면 하단의 'Services' 테이블에서 위에서 실행한 온 디멘드 서빙 서비스에 대한 정보를 확인할 수 있습니다.
![서비스 정보 확인](images/2.5.11_3_04.png)

## 결과 확인하기
Postman 프로그램을 이용하여, 본 예제의 이미지 분류 서비스의 기능을 확인하는 과정입니다.

#### Inception 모델의 메타데이터 조회
- 웹툴킷 [Dashboard] 화면 'Services' 테이블의 'URL' 정보를 이용하여 Inceptin 모델의 메타데이터를 조회할 수 있습니다.
- 좌측 상단의 콤보박스에서 'GET'을 선택하고, Request-URL 값을 ``http://0.0.0.0:8002/model``로 설정합니다.
- [Send] 버튼을 클릭하여 메타데이터 조회를 요청을 하면, 다음과 같이 모델의 메타데이터를 확인할 수 있습니다.
![모델 메타데이터 조회](images/2.5.11_4_01.png)

#### 이미지 분류 질의 결과 보기
- 위에서 조회한 메타데이터를 이용하여 이미지 분류 질의 요청과 그에 대한 결과를 확인할 수 있습니다.
- 좌측 상단의 콤보박스에서 'POST'를 선택하고, Request-URL 값을 ``http://0.0.0.0:8002/model/predict_images/images`` 로 설정합니다.
  - predict_images: 이미지 분류 signature 이름
  - images: 입력 tensor의 이름
- [Headers] 메뉴에서 KEY 필드에서 'Content-Type'"'을 VALUE 필드에서 'image/jpeg'을 입력합니다.
![이미지 분류 질의 요청 설정 1](images/2.5.11_4_02.png)
- [Body] 메뉴에서 [binary] 버튼을 선택하고, [파일 선택] 버튼을 클릭하여 분류하고자 하는 이미지 파일을 선택합니다.
![이미지 분류 질의 요청 설정 2](images/2.5.11_4_03.png)
- [Send] 버튼을 클릭하여 이미지 분류 질의 요청을 하면, 다음과 같이 이미지 분류 결과를 확인할 수 있습니다.
(Inception 모델의 경우, score가 가장 높은 순서로 5개의 분류 카테고리를 알려줍니다.)
![이미지 분류 질의 요청 결과](images/2.5.11_4_04.png)

## 워크플로우 종료하기
웹툴킷 [Monitoring] 화면의 [Workflow] 탭에서, 현재 Status가 Inprogress인 InceptionServingExample 워크플로우의 정지(<span style="color:red">&#9724;</span>) 버튼을 클릭하여 종료시킵니다.

## 워크플로우 저장하기
워크플로우 편집기에서 작성한 워크플로우를 "Save Workflow" 메뉴를 이용하여 저장합니다.