Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
---
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를 사용하고, 속성을 다음과 같이 설정합니다.
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
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">◼</span>) 버튼을 클릭하여 종료시킵니다.
## 워크플로우 저장하기
워크플로우 편집기에서 작성한 워크플로우를 "Save Workflow" 메뉴를 이용하여 저장합니다.