Newer
Older
---
html:
toc: true
offline: true
export_on_save:
html: true
---
# 온디맨드 방식으로 교통속도예측 모델 서빙하기 (TrafficOnDemandServing)
---
텐서플로우 기반 딥러닝 모델을 이용한 교통 속도 예측 RESTful 서비스 예제를 설명합니다.
## 입력 데이터 준비하기
<a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.6.2.TrafficTraining.md">교통속도예측 텐서플로우 모델 학습하기</a> 매뉴얼에서 학습한 후 export 된 모델이 ``hdfs://csle1:9000/user/ksbuser_etri_re_kr/model/kangnam`` 위치에 저장되어 있다고 가정합니다.
워크플로우 편집화면에서 워크플로우를 작성합니다. 하나의 엔진을 생성합니다.
- 워크플로우 속성
속성 | 값 | 비고
--|---|--
name | TrafficOnDemandServing | 워크플로우 이름
description | 강남 교통 RESTful 서비스 예제 | 워크플로우를 설명하는 글
isBatch | false | RESTful 서비스를 하는 워크플로우 이므로, false 로 지정
verbose | false | 디버깅을 위해 로그정보를 보고자할 경우, true 로 지정
### 엔진 생성하기
텐서플로우를 이용하여 온 디맨드 형태로 교통속도 예측 서비스를 생성하는 워크플로우이므로, OnDemandServing 엔진을 선택합니다. OnDemandServing 엔진에서는 데이터를 입출력하기 위한 Reader 와 Writer를 사용하지 않습니다. 데이터는 request 에 실어서 보냅니다.
- 엔진 속성
순번 | 엔진 Type | NickName | RunType | 설명
--|---|---|---|--
1 | OnDemandServing | ServingEngine | 즉시실행 | Restful 서비스 제공
#### Controller
TensorflowServingController 를 선택합니다.
#### Runner
TensorflowServingRunner 를 선택하고 아래표와 같은 속성을 지정합니다.
48
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
field |value | 설명
--|---|--
port | 8001 | RESTful 서비스 포트번호
modelName | kangnam_traffic | 모델의 이름
modelBasePath | model/kangnam | 모델 경로
#### Operator
TensorflowServingOperator 를 선택합니다.
<br>
![워크플로우 완성 화면](./images/2.6.3_workflow.png)
ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 만들어져있습니다. 불러오기해서도 돌려볼 수 있습니다.
## 워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행 버튼을 누릅니다.
### 워크플로우 모니터링 하기
KSB 웹툴킷 상단 메뉴의 Monitoring 탭을 클릭하면 Workflow 탭이 선택되어있습니다. Workflow 탭에서는 실행한 워크플로우들의 목록 및 동작 상태를 확인하고 제어할 수 있습니다. 위에서 실행한 워크플로우 이름을 클릭하면 워크플로우의 각 엔진들의 동작 상태 (status) 를 확인할 수 있습니다.
![워크플로우 동작 상태 확인](./images/2.6.3_monitoring.png)
WorkFlow History 탭을 선택하면, 프레임워크에서 워크플로우가 동작하며 발생시킨 로그 정보를 확인 할 수 있습니다.
![워크플로우 히스토리](./images/2.6.3_monitoring_history.png)
### 서빙 서비스 상태 보기
KSB 웹툴킷 Dashboard 화면을 선택하면, 화면 하단의 Services 테이블에서 본 예제에서 실행한 서빙 서비스에 대한 정보를 확인할 수 있습니다.
![서빙 서비스 상태](./images/2.6.3_services.png)
### 서빙 서비스 확인하기
Postman 프로그램을 활용하여 서빙 엔진이 제공하는 RESTful 서비스를 테스트할 수 있습니다. Postman을 실행하여 아래와 같이 설정합니다.
- 좌측 상단의 콤보 박스에서 **POST** 를 선택하고, 질의 선택할 URL을 입력합니다. 본 예제에서의 URL은 서빙 엔진이 제공하는 URL (``http://0.0.0.0:8001/model/predict_speed/in1``)을 사용합니다. "predict_speed" 는 모델 export 시 정의한 signature 이름이고, "in1" 은 입력 tensor 로 정의한 이름입니다.
- **Headers** 메뉴에서 Key 필드에 "Content-Type"을, Value 필드에 "text/csv" 을 입력합니다.
![Postman 설정](./images/2.6.3_postmanSetting.png)
- **Body** 메뉴에서 **binary** 라디오 버튼을 선택한 후, **파일 선택** 버튼을 클릭하여 입력 파일을 선택합니다. 입력파일은 Host PC의 /home/csle/ksb-csle/examples/input 폴더에 있는 ``traffic_serving_input1.csv`` 또는 ``traffic_serving_input2.csv`` 를 사용합니다.
- 우측 상단의 **Send** 버튼을 클릭하면 질의 요청이 제출되고, 결과가 화면 하단에 표시됩니다. 입력 데이터에 대한 15분 뒤 예측된 교통 속도가 리턴됩니다.
![챗봇 서비스 확인하기](./images/2.6.3_servingResult1.png)
## 워크플로우 종료하기
KSB 웹툴킷 상단 "Monitoring" 메뉴의 "Workflow" 탭에서 실행 중인 TrafficOnDemandServing 워크플로우를 종료(<span style="color:red">◼</span>)할 수 있습니다.
## 워크플로우 저장하기
워크플로우 편집 화면에서 작성한 워크플로우를 "Save Workflow" 메뉴를 이용하여 저장합니다.