가입시의 "Full name"과 "Username"을 포함하는 메일을 작성하여 발송합니다 (아래 참조).
- Email 제목: KSB KAF Git Repository 접근승인요청
- Email 수신처: dwk@etri.re.kr
- Email 수신처: kanghj@etri.re.kr
- 내용: 반드시 "Full name"과 "Username"을 포함하여야 하며, 기타 내용은 자유양식으로 작성
담장자 (dwk@etri.re.kr) 부재시, 추가 Email 수신처는 아래와 같습니다.
담장자 (kanghj@etri.re.kr) 부재시, 추가 Email 수신처는 아래와 같습니다.
- kanghj@etri.re.kr
- leeyh@etri.re.kr
발송된 권한요청 Email은 담당자에 의해 수동으로 확인됩니다. 담당자가 부재 중이 아닐 경우, 빠른 확인 후 권한요청 승인에 대한 답변이 이메일로 발송됩니다.
...
...
@@ -60,11 +60,6 @@ BeeAI가 업데이트된 경우, 아래 명령어를 이용해 업데이트된
<code>git pull http://211.43.13.21/ksb/kaf</code>
</pre>
#### 참고
동일한 BeeAI를 <https://csleoss.etri.re.kr/kor/sub02_04.do> 사이트에서 별도의 회원 가입 후, "2. KSB 인공지능 프레임워크 (오픈소스 및 바이너리 파일)"를 통해서도 다운로드 받을 수 있습니다. <b>주의</b>: 이 방법으로 다운을 받으면, BeeAI가 업데이트 되었을 경우 전체파일을 새로 받아야 합니다.
## 매뉴얼
...
...
@@ -77,7 +72,7 @@ BeeAI가 업데이트된 경우, 아래 명령어를 이용해 업데이트된
<tr>
<td> 1 </td>
<tdwidth="150px"nowrap> 설치 가이드</td>
<tdwidth="150px"nowrap>시작하기 </td>
<td>KSB 인공지능 프레임워크를 빠르게 시작할 수 있는 1) docker image 와 고객의 환경에 맞게 구성하여 설치할 수 있는 2) 오픈소스 및 바이너리 파일 을 제공합니다.</td>
KSB 툴박스를 동작시킨 상태에서 docker 컨테이너로부터 kafka 설정 파일을 복사하여 설치할 수도 있습니다.
먼저 도커에 접속하는 방법을 참고하여 접속합니다. (<ahref="http://csleoss.etri.re.kr:8088/images/contents/manual_1.0/Filezilla.html"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
먼저 도커에 접속하는 방법을 참고하여 접속합니다. (<ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/Filezilla.md"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
도커에 있는 kafka_2.11-0.10.0.1 폴더를 /home/csle 폴더에 복사합니다.
KSB 툴박스를 동작시킨 상태에서 docker 컨테이너로부터 zookeeper 설정 파일을 복사하여 설치할 수도 있습니다.
먼저 도커에 접속하는 방법을 참고하여 접속합니다. (<ahref="http://csleoss.etri.re.kr:8088/images/contents/manual_1.0/Filezilla.html"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
먼저 도커에 접속하는 방법을 참고하여 접속합니다. (<ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/Filezilla.md"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
도커에 있는 zookeeper-3.4.9 폴더를 /home/csle 폴더에 복사합니다.
그리고 심볼릭링크을 설정합니다.
...
...
@@ -345,8 +345,7 @@ source deactivate
```
## [Host PC] KSB 툴박스 파일 설치하기
KSB 프레임워크를 호스트 서버에 직접 설치하는 경우에도 ksb_toolbox_v1903.tar.gz 파일이 필요합니다.
<ahref="http://csleoss.etri.re.kr/kor/sub02_01.do"title="다운로드"> 다운로드</a> 페이지로부터 KSB 툴박스 파일을 다운로드합니다.
- ksb_toolbox_v1903.tar.gz : KSB 툴박스 파일
KSB 툴박스 파일을 다운로드합니다.
<br>
csle 사용자 계정의 home에 ksb_toolbox_v1903.tar.gz 압축을 해제합니다. 결과적으로 /home/csle/ksb-csle 폴더가 생성됩니다.
...
...
@@ -537,7 +536,7 @@ KSB 지식베이스엔진(KSB-Knowledge Engine)을 사용하기 위한 절차
### 지식베이스 엔진 가져오기
KSB 지식베이스엔진은 현재 Docker 컨테이너에 포함되어 배포 되고 있습니다.
도커에 접속하는 방법을 참고하여 접속합니다. (<a href="http://csleoss.etri.re.kr:8088/images/contents/manual_1.0/Filezilla.html"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
도커에 접속하는 방법을 참고하여 접속합니다. (<a href="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/Filezilla.md"> Filezilla를 이용하여 KSB 툴박스 docker 컨테이너에 접속하기 </a>)
도커에 있는 ksb-knowledge 폴더를 Host PC의 /home/csle 폴더에 복사합니다.
@@ -20,7 +14,7 @@ UI 기반으로 KSB 인공지능 프레임워크를 사용할 수 있는 KSB 웹
[Ubuntu 언어 변경](https://askubuntu.com/questions/509174/how-can-i-change-the-language-from-english-to-spanish)
- Postgresql 9.6.8 이상이 설치되어야 합니다.
- Pgadmin3 1.22.2 이상이 설치되어야 합니다.
- JDK 8 이 설치되어야 합니다. 설치 방법은 다음 링크를 참고 합니다. [JDK 8 설치](https://csleoss.etri.re.kr/images/contents/manual_1.0/1.2.HowToInstallKsbToolBox.html#host-pc-java-8-oracle-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0)
- JDK 8 이 설치되어야 합니다. 설치 방법은 다음 링크를 참고 합니다. [JDK 8 설치](https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/1.2.HowToInstallKsbToolBox-1903.md)
이제 <ahref="http://csleoss.etri.re.kr:8088/kor/sub05_03.do"title="사용자가이드"> 사용자 가이드</a>로 이동하셔서 워크플로우 예제들을 실행해 보시기 바랍니다.
이제 <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/userGuide.md"title="사용자가이드"> 사용자 가이드</a>로 이동하셔서 워크플로우 예제들을 실행해 보시기 바랍니다.
@@ -21,7 +21,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
| TableReader |ksb.csle.component.reader.<br>TableReader |JDBC 기반 데이터 입력기 | |
###ksb.csle.component.pipe.stream.reader
###ksb.csle.component.pipe.stream.reader
| 컴포넌트 이름 | 구현 클래스명 | 설명 |
|-------------|-------------|------------|
...
...
@@ -34,7 +34,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
## writer
###ksb.csle.component.writer
###ksb.csle.component.writer
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
...
...
@@ -47,7 +47,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
|TableWriter |ksb.csle.component.writer.<br>TableWriter |JDBC 기반 데이터 출력기 | |
###ksb.csle.component.pipe.stream.writer
###ksb.csle.component.pipe.stream.writer
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
...
...
@@ -63,7 +63,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
## Operator
###ksb.csle.component.operator.analysis
###ksb.csle.component.operator.analysis
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
...
...
@@ -99,7 +99,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
###ksb.csle.component.operator.integration
###ksb.csle.component.operator.integration
|컴포넌트 이름 | 구현 클래스명 | 설명 | 관련 링크|
|---|---|---|---|
...
...
@@ -110,7 +110,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
|VectorAssembleColumnAddOperator |ksb.csle.component.operator.integration.<br>VectorAssembleColumnAddOperator |Spark ML 동작을 위한 Vector assemble 처리기 | |
###ksb.csle.component.operator.reduction
###ksb.csle.component.operator.reduction
|컴포넌트 이름 | 구현 클래스명 | 설명 | 관련 링크|
|---|---|---|---|
|AggregateOperator |ksb.csle.component.operator.reduction.<br>AggregateOperator |숫자형 데이터 통계값 (min, max, avg, std, count) 대체 |<ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/tree/master/manual1903/operator/4.1.1.16.Aggregate_manual.md"> Link</a> |
...
...
@@ -131,7 +131,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
|TimeWindowAggregateOperator |ksb.csle.component.operator.reduction.<br>TimeWindowAggregateOperator |Unit timestamp 정보를 이용하여 시간정보에 따라 aggregation 처리기 | |
###ksb.csle.component.operator.service
###ksb.csle.component.operator.service
|컴포넌트 이름 | 구현 클래스명 | 설명 |
|---|---|---|
|ControlContextQueryOperator |ksb.csle.component.operator.service.<br>ControlContextQueryOperator |컨텍스트 및 제어 쿼리 처리기 | |
...
...
@@ -140,7 +140,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
###ksb.csle.component.operator.transformation
###ksb.csle.component.operator.transformation
|컴포넌트 이름 | 구현 클래스명 | 설명 | 관련 링크|
|---|---|---|---|
|AddConditionalColumnOperator |ksb.csle.component.operator.transformation.<br>AddConditionalColumnOperator |주어진 조건에 의해 새로운 column 생성 | |
...
...
@@ -162,7 +162,7 @@ KSB 인공지능 프레임워크가 기본적으로 제공하는 컴포넌트의
|VectorizeColumnOperator |ksb.csle.component.operator.transformation.<br>VectorizeColumnOperator |여러 column들을 모아서 하나의 vector 타입 column을 생성 | |
HTTP 서버로부터 전달되어 오는 데이터를 입력 받기 위해 **HttpServerReader** 를 드래그 앤 드롭한 후 아래표와 같은 속성을 지정합니다.
field |value | 설명
...
...
@@ -61,7 +61,7 @@ ip | 0.0.0.0 | HTTP 서버의 주소를 입력합니다.
port | 53001 | HTTP 서버의 포트번호를 입력합니다.
####Writer
####Writer
**MongodbWriter** 를 드래그앤 드롭한 후 아래표와 같은 속성을 지정합니다.
field |value | 설명
...
...
@@ -71,18 +71,18 @@ dbName | examples | DB 명
collectionName | data_from_http | 생성할 테이블 명
cleaningDataInconsistency | true | 기존 테이블 삭제 및 재생성 여부
####Controller
####Controller
**SparkSessionOrStreamController** 를 드래그앤 드롭한 후 아래 표와 같은 속성을 지정합니다.
field |value | 설명
--|---|--
setOperationPeriod | 3 | 스트리밍 처리 주기 (초 단위)
####Runner
####Runner
**SimpleSparkRunner** 를 드래그앤 드롭합니다. 디폴트 속성값을 사용합니다.
####Operator
####Operator
본 예제에서는 스트림 입력을 그대로 MongoDB에 적재하므로 Operator를 사용하지 않습니다. 만약 스트림 입력 데이터를 가공해야 할 경우, 필요한 Operator를 드래그앤 드롭하여 속성값을 지정한 후 사용할 수 있습니다.
<br>
...
...
@@ -93,7 +93,7 @@ ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 만들어
![워크플로우 불러오기](./images/2.5.1_workflowLoad.png)
##워크플로우 실행 및 모니터링하기
##워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행 버튼(<spanstyle="color:#000000">▶</span>)을 클릭합니다. 본 예제는 스트림 데이터를 처리하므로 **Batch** 체크 박스를 해제하고 워크플로우를 실행합니다.
![학습 데이터셋 저장소 위치 및 파일 선택하기 ](./images/2.5.10_DataRepository.png)
## 사용자 파이썬 코드 준비하기
텐서플로우 기반 딥러닝 모델이 구현된 사용자 파이썬 코드가 있어야 합니다. 사용자 파이썬 코드는 프레임워크와 연동하기 위해 프레임워크에서 전달하는 파라미터를 받는 부분, 학습된 모델을 텐서플로우 서빙용으로 export 하는 부분 등이 구현되어야 합니다. 자세한 내용은 <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.7.2.KSB_TfPyCoding_Guide.html">KSB 프레임워크와 연동을 위한 tensorflow 학습코드 작성하기</a> 를 참고합니다.
텐서플로우 기반 딥러닝 모델이 구현된 사용자 파이썬 코드가 있어야 합니다. 사용자 파이썬 코드는 프레임워크와 연동하기 위해 프레임워크에서 전달하는 파라미터를 받는 부분, 학습된 모델을 텐서플로우 서빙용으로 export 하는 부분 등이 구현되어야 합니다. 자세한 내용은 <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/edit/master/manual1903/2.7.2.KSB_TfPyCoding_Guide.html">KSB 프레임워크와 연동을 위한 tensorflow 학습코드 작성하기</a> 를 참고합니다.
main 함수를 포함한 사용자 파이썬 코드에서 사용하는 라이브러리 파일 등은 동일한 폴더에 위치 시키거나 1 depth의 하위 폴더까지 작성 가능합니다.
##워크플로우 생성하기
##워크플로우 생성하기
워크플로우 편집화면을 이용하여 아래의 과정을 통해 워크플로우를 생성합니다.
- 워크플로우 속성
...
...
@@ -33,7 +33,7 @@ description | 텐서플로우 기반 딥러닝 모델을 주기적으로 학습
isBatch | true | 배치 처리를 하는 워크플로우 이므로, true 로 지정
verbose | false | 디버깅을 위해 로그정보를 보고자할 경우, true 로 지정
###엔진 선택
###엔진 선택
본 예제는 텐서플로우를 이용하여 배치 형태로 딥러닝 모델을 생성하는 워크플로우이므로 배치 엔진을 선택합니다. 그리고 딥러닝 모델을 주기적으로 생성하기 위해 **RUNTYPE** 을 **반복실행** 으로 설정합니다. **주기** 는 한번, 매분, 매시간, 매일, 매주, 매월, 매년 중에 하나로 설정합니다. 본 예제에서는 테스트를 위해 **매분** 으로 설정합니다. 매분은 테스트용으로 5분 단위로 엔진이 submit 되어 실행됩니다.
...
...
@@ -43,7 +43,7 @@ verbose | false | 디버깅을 위해 로그정보를 보고자할 경우, true
--|---|---|---|--
1 | Batch | TrainEngine | 반복 실행 | 텐서플로우 모델 학습
####Reader
####Reader
FileReader를 선택하고 아래표와 같은 속성을 지정합니다. filePath 에 입력 파일의 경로 및 파일명을 지정합니다. 이 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--input` 파라미터로 전달됩니다.
field |value | 설명
...
...
@@ -59,7 +59,7 @@ filePath는 경로 입력창 옆의 "File" 버튼을 클릭하여 아래 그림
![학습 데이터셋 파일 위치 및 선택하기 ](./images/2.5.10_DataFile.png)
####Writer
####Writer
FileWriter를 선택하고 아래표와 같은 속성을 지정합니다. filePath 에 학습한 딥러닝 모델이 최종 저장될 폴더를 지정합니다. 해당 폴더에 자동으로 최신버전의 폴더를 생성한 후 모델이 저장됩니다. 모델의 버전은 0000 부터 시작하여 1씩 증가합니다. filePath 에 입력한 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--output` 파라미터로 전달됩니다.
본 예제에서는 다른 엔진에서 학습한 딥러닝 모델을 사용하도록 하기 위해 HDFS 절대경로를 지정합니다. 상대경로를 지정할 경우, 동적으로 생성한 **사용자 기본 파일경로** 가 앞에 추가되므로 다른 엔진에서 정확한 파일 경로를 지정하는 것이 어렵습니다.
...
...
@@ -72,10 +72,10 @@ delimeter | , | 구분자
header | false | header 포함 여부
saveMode | | 사용하지 않음
####Controller
####Controller
텐서플로우와 같은 외부시스템를 제어하기 위한 ExternalAnalysisController를 선택합니다.
####Runner
####Runner
TensorflowRunner 를 선택하고 아래표와 같은 속성을 지정합니다. pyEntryPath 에 main 함수를 포함하는 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 경로 및 파일명을 지정합니다.
field |value | 설명
...
...
@@ -86,7 +86,7 @@ inJson | false | Json 형태 파라미터 전달 여부
tfVersion | r1.3 | 텐서플로우의 버전
####Operator
####Operator
DLTrainOperator를 선택하고 아래표와 같은 속성을 지정합니다. modelPath 에 내부적으로 학습된 모델을 저장할 경로를 지정합니다. 이 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--modelPath` 파라미터로 전달됩니다. 로컬 파일시스템 절대경로로 입력합니다.
또한, modelPath를 기준으로 최신버전의 폴더를 자동으로 생성하여 사용자 파이썬 코드의 `--model` 파라미터로 전달합니다. 모델의 버전은 0000 부터 시작하여 1씩 증가합니다. 따라서 예를 들면:
...
...
@@ -117,7 +117,7 @@ paramValue | 2 |
ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 만들어져있습니다. 불러오기해서도 돌려볼 수 있습니다.
##워크플로우 실행 및 모니터링하기
##워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
엔진의 RUNTYPE 을 설정한 후, 워크플로우 편집기 상단의 실행 버튼을 누릅니다. 이 때, 본 예제는 Batch 형태로 실행되는 엔진이므로 Batch 체크 박스를 선택하고 워크플로우를 실행합니다.
@@ -16,7 +16,7 @@ KSB Dockerize 라이브러리는 사용자가 프로그래밍한 Python 함수
1. 입력한 문장의 topic 분류
2. topic이 일상적 대화일 경우, 일상적 대화들을 학습한 모델로 응답 문장 생성 <br>topic이 여행과 관련된 대화일 경우, 여행 관련 대화들을 학습한 모델로 응답 문장 생성
따라서 topic 분류 모델(이하 classify로 칭함), 일상적 대화들을 학습한 모델(이하 chitchat으로 칭함), 여행 관련 대화들을 학습한 모델(이하 travel로 칭함)이 필요합니다. 이러한 모델들을 KSB Dockerize를 이용하여 프레임워크에서 서빙하기 위해 <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.7.1.KSB_Dockerize.html">Python 모듈 사용하기 (KSB Dockerize)</a> 매뉴얼에서 제공하는 방법대로 `base.py` 와 `main_func`을 생성해야 합니다.
따라서 topic 분류 모델(이하 classify로 칭함), 일상적 대화들을 학습한 모델(이하 chitchat으로 칭함), 여행 관련 대화들을 학습한 모델(이하 travel로 칭함)이 필요합니다. 이러한 모델들을 KSB Dockerize를 이용하여 프레임워크에서 서빙하기 위해 <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.7.1.KSB_Dockerize.md">Python 모듈 사용하기 (KSB Dockerize)</a> 매뉴얼에서 제공하는 방법대로 `base.py` 와 `main_func`을 생성해야 합니다.
### 사용자 파이썬 코드 업로드
Host PC의 /home/csle/ksb-csle/examples/pyModules/ChatbotServing 폴더에 있는 사용자가 프로그래밍한 파이썬 함수를 HDFS repository에 웹툴킷을 이용하여 업로드 합니다.
텐서플로우 기반 딥러닝 모델이 구현된 사용자 파이썬 코드가 있어야 합니다. 사용자 파이썬 코드는 프레임워크와 연동하기 위해 프레임워크에서 전달하는 파라미터를 받는 부분, 학습된 모델을 텐서플로우 서빙용으로 export 하는 부분 등이 구현되어야 합니다. 자세한 내용은 <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.7.2.KSB_TfPyCoding_Guide.html">KSB 프레임워크와 연동을 위한 tensorflow 학습코드 작성하기</a> 를 참고합니다.
텐서플로우 기반 딥러닝 모델이 구현된 사용자 파이썬 코드가 있어야 합니다. 사용자 파이썬 코드는 프레임워크와 연동하기 위해 프레임워크에서 전달하는 파라미터를 받는 부분, 학습된 모델을 텐서플로우 서빙용으로 export 하는 부분 등이 구현되어야 합니다. 자세한 내용은 <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.7.2.KSB_TfPyCoding_Guide.md">KSB 프레임워크와 연동을 위한 tensorflow 학습코드 작성하기</a> 를 참고합니다.
main 함수를 포함한 사용자 파이썬 코드에서 사용하는 라이브러리 파일 등은 동일한 폴더에 위치 시키거나 1 depth의 하위 폴더까지 작성 가능합니다.
##워크플로우 생성하기
##워크플로우 생성하기
워크플로우 편집화면에서 워크플로우를 작성합니다. 본 예제에서는 두 개의 엔진을 생성합니다.
- 워크플로우 속성
...
...
@@ -46,7 +46,7 @@ verbose | false | 디버깅을 위해 로그정보를 보고자할 경우, true
텐서플로우를 이용하여 딥러닝 학습을 위해 Batch 엔진을 선택합니다.
####Reader
####Reader
FileReader를 선택하고 아래표와 같은 속성을 지정합니다. filePath 에 입력 파일의 경로 및 파일명을 지정합니다. 이 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--input` 파라미터로 전달됩니다.
![학습 데이터셋 파일 위치 및 선택하기 ](./images/2.5.14.TrafficPeriodicTrainAndK8sServingExample_02.png)
####Writer
####Writer
처리 결과를 파일 형태로 저장할 것이므로 FileWriter를 선택합니다. filePath 에 학습한 딥러닝 모델이 최종 저장될 폴더를 지정합니다. 해당 폴더에 자동으로 최신버전의 폴더를 생성한 후 모델이 저장됩니다. 모델의 버전은 0000 부터 시작하여 1씩 증가합니다. filePath 에 입력한 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--output` 파라미터로 전달됩니다.
본 예제에서는 두번째 엔진인 OnDemandServing 엔진에서 쿠버네티스를 이용한 모델 서빙을 하기 위해 HDFS 절대경로를 지정합니다. 상대경로를 지정할 경우, 동적으로 생성한 **사용자 기본 파일경로** 가 앞에 추가되므로 OnDemandServing 엔진에서 정확한 파일 경로를 지정하는 것이 어렵습니다.
...
...
@@ -72,10 +72,10 @@ delimeter | , | 구분자
header | false | header 포함 여부
saveMode | | 사용하지 않음
####Controller
####Controller
본 예제에서 Controller는 텐서플로우와 같은 외부시스템를 제어하기 위한 ExternalAnalysisController를 선택합니다.
####Runner
####Runner
tensorflowRunner 를 선택합니다. pyEntryPath 에 main 함수를 포함하는 사용자 파이썬 코드(강남 교통 데이터를 학습하기 위한 코드)의 경로 및 파일명을 지정합니다.
field |value | 설명
...
...
@@ -106,7 +106,7 @@ pyEntryPath 에는 아래와 같이 3가지 경로가 입력 가능합니다.
결과적으로 KSB 인공지능 프레임워크는 엔진 실행시, 로컬 파일시스템의 사용자 repository에 있는 kangnam 폴더 및 하위 1 depth 폴더를 file:///home/csle/ksb-csle/components/src/main/python/로 copy 후 tensorflow를 실행합니다.
####Operator
####Operator
DLTrainOperator를 선택하고 아래표와 같은 속성을 지정합니다. modelPath 에 내부적으로 학습된 모델을 저장할 경로를 지정합니다. 이 값은 사용자 파이썬 코드(텐서플로우 모델을 정의하고 학습하는 코드)의 `--modelPath` 파라미터로 전달됩니다. 로컬 파일시스템 절대경로로 입력합니다.
또한, modelPath를 기준으로 최신버전의 폴더를 자동으로 생성하여 사용자 파이썬 코드의 `--model` 파라미터로 전달합니다. 모델의 버전은 0000 부터 시작하여 1씩 증가합니다. 따라서 예를 들면:
...
...
@@ -125,7 +125,7 @@ field |value | 설명
isTrain | True | 새롭게 학습할 경우에는 True, 그 외의 경우에는 False.
num_epochs | 1 | 학습 반복 횟수
####엔진 RunType
####엔진 RunType
매분 주기적으로 실행하기 위해 해당 파라미터를 설정하고 Apply를 누릅니다. 현재 테스트를 위해 주기 : '매분' 설정은 내부적으로 5분 단위의 주기적 실행을 하게 설정되어 있습니다.
ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 KMeansExample 이름으로 저장되어 있으며, 워크플로우를 불러올 수 있습니다.
##워크플로우 실행 및 모니터링하기
##워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행 버튼(<spanstyle="color:#000000">▶</span>)을 클릭합니다. 본 예제는 배치형태로 실행되는 엔진을 사용하였으므로 **Batch** 체크 박스를 체크하고 워크플로우를 실행합니다.
@@ -66,12 +66,14 @@ saveMode | OVERWRITE | 파일 저장 방식을 선택합니다.
#### Controller
Controller 로는 SparkSessionOrStreamController 를 선택합니다.
SparkSessionOrStreamController는 Spark 환경에서 배치 처리나 스트림 처리에 범용적으로 사용하는 컨트롤러입니다.
field |value | 설명
--|---|--
operationPeriod | 0 | 컨트롤러 실행 주기를 입력합니다. 배치처리이므로 0 을 입력합니다. stream 처리의 경우 실행 주기값을 입력합니다.
#### Runner
SimpleSparkRunner를 선택합니다.
field |value | 설명
--|---|--
master | local [ * ] | Spark local 모드를 입력합니다.
...
...
@@ -90,6 +92,7 @@ sparkVersion | 2.3.0 | Spark 버전 정보를 입력합니다.
비식별 처리 관련 모든 Operator에는 필수적으로 1) 처리할 컬럼에 대한 속성정보와, 2) 비식별 처리 후 적정성을 검증할 방법에 대한 정보를 포함하게 됩니다.
먼저, 데이터 컬럼에 대한 속성정보는 Operator의 fieldInfo를 클릭하여 설정합니다. fieldInfo는 아래와 같은 형식으로 정의되며, 여기서는 총계처리를 예제로 들어 설명합니다.
field |value | 설명
--|---|--
key | 1 | 총계처리 기능을 적용할 칼럼 ID를 입력합니다.
...
...
@@ -103,6 +106,7 @@ filePath | 입력없음 | 컬럼 내 데이터 hierarchy를 파일로 읽어
컬럼의 hierarchy는 데이터를 어떤 형식으로 일반화할건지 나타내는 것으로, 일반화 기법 적용시 필수적으로 정의되어야 합니다. 가령, '55132'라는 zip code 데이터가 주어진 경우 한번 일반화를 수행하면 '5514*'로 변경될 수 있습니다. 일반화 후에도 적정성 평가를 통과 못하면 추가적으로 일반화를 더 수행하여 '551**''와 같은 데이터로 변경을 하게 됩니다. 일반화 단계에 따른 데이터의 변화를 일반화 단계 정보라 하며, 이 정보는 사용자가 직접 파일 형식으로 저장하여 그 파일로부터 읽어들이게 됩니다. 또는 autoConfigured true 설정을 통해 자동적으로 일반화 단계 정보를 구성할 수도 있습니다 (자동 구성시, 데이터의 syntatic 정보는 고려되지 않은 채, 숫자 값의 크기 또는 문자열의 길이를 기반으로 단순히 일반화 단계가 정의됩니다)
데이터 처리자는 비식별 처리 후 개인정보 및 민감정보 제거여부에 대해 적정성 검증을 수행해야 합니다 (6월 발간된 비식별 조치가이드라인에서는 k-익명성 기반 적정성 검증만이라도 필수적으로 수행하길 권고하고 있습니다). 적정성 검증에 대한 정보는 다음과 같은 형식으로 정의됩니다. Operator 내 check라는 버튼을 클릭한 후 아래와 같이 설정합니다.
field |value | 설명
--|---|--
measureLoss | AECS | 원본 데이터 대비 비식별 처리된 데이터의 데이터 손실량을 측정합니다.
...
...
@@ -148,6 +152,7 @@ fieldInfo | 아래의 표 참고 | 컬럼의 속성을 정의합니다.
check | 위의 공통 설정 | 적정성 평가를 어떻게 수행할지 정의합니다.
본 예제에서는 데이터를 랜덤 문자열로 변경합니다. 랜덤 문자열을 생성을 위해, randInfo 클릭 후 다음과 같이 설정합니다.
field |value | 설명
--|---|--
randMethod | MIXED | 숫자, 문자를 섞어서 랜덤문자를 생성합니다.
...
...
@@ -230,7 +235,7 @@ filePath | 입력없음 | 컬럼 내 데이터 hierarchy를 파일로 읽어
ksbuser@etri.re.kr 계정으로 접속하면 DeidentificationExample의 이름의 예제 워크플로우를 불러올 수 있습니다.
##워크플로우 실행 및 모니터링하기
##워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행 버튼을 누릅니다. 이 때, BatchToBatchStream 엔진은 배치형태로 실행되는 엔진이므로 Batch 체크 박스를 체크하고 워크플로우를 제출합니다.
본 예제에서는 Host PC의 "/home/csle/ksb-csle/pyML/autosparkml/datasets/iris_dataset" 폴더를 사용자 HDFS repository 의 "dataset/iris_dataset" 로 업로드하여 사용합니다. 이 자료는 DataFrame 을 저장하고 있는 parquet 형태의 자료입니다.
<b>참고</b>: 입력데이터가 CSV 형태일 때 parquet로 변환하는 예제는 이 매뉴얼을 참고하면 됩니다: <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.7.3.CSV2Parquet.html">CSV 파일 Parquet 변환</a>
<b>참고</b>: 입력데이터가 CSV 형태일 때 parquet로 변환하는 예제는 이 매뉴얼을 참고하면 됩니다: <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/edit/master/manual1903/2.7.3.CSV2Parquet.md">CSV 파일 Parquet 변환</a>
본 예제에서는 Host PC의 "/home/csle/ksb-csle/pyML/autosparkml/datasets/iris_dataset" 폴더를 사용자 HDFS repository 의 "dataset/iris_dataset" 로 업로드하여 사용합니다. 이 자료는 DataFrame 을 저장하고 있는 parquet 형태의 자료입니다.
<b>참고</b>: 입력데이터가 CSV 형태일 때 parquet로 변환하는 예제는 이 매뉴얼을 참고하면 됩니다: <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.7.3.CSV2Parquet.html">CSV 파일 Parquet 변환</a>
<b>참고</b>: 입력데이터가 CSV 형태일 때 parquet로 변환하는 예제는 이 매뉴얼을 참고하면 됩니다: <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.7.3.CSV2Parquet.md">CSV 파일 Parquet 변환</a>
bootStrapServer | csle1:9092 | Kafka 접속 주소(IP, 포트번호)
#####Controller
#####Controller
Controller 로는 WindowedSparkSessionOrStreamController 를 선택합니다. WindowedSparkSessionOrStreamController 는 스트림으로 입력되는 데이터를 큐에 저장하고, 일정 주기 마다 정해진 윈도우 크기로 잘라서 operator 에게 전달합니다.
field |value | 설명
--|---|--
operationPeriod | 2 | Reader로 부터 데이터를 읽어올 주기 | 53002 | HTTP 서버의 포트번호
센서로부터 입력되는 온도 데이터를 여섯가지 전처리 기법을 적용하여 정제합니다. 본 예제에서 사용한 전처리 기법은 ColumnSelectOperator, MinMaxScalingOperator, TransposeOperator, SparkMLPredictOperator, MinMaxScalingOperator, ColumnSelectOperator 입니다.
- ColumnSelectOperator
...
...
@@ -135,7 +140,7 @@ selectedColumnId | 13 | 선택할 칼럼 ID
ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 만들어져있습니다. 불러오기해서도 돌려볼 수 있습니다.
##워크플로우 실행 및 모니터링하기
##워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행 버튼을 누릅니다. 이 때, StreamToStream 엔진은 배치형태로 실행되지 않는 엔진들이므로 Batch 체크 박스는 해제하고 워크플로우를 실행해야합니다.
...
...
@@ -154,7 +159,7 @@ WorkFlow History 탭을 선택하면, KSB프레임워크에서 워크플로우
![워크플로우 동작 로그](./images/2.5.7_04.png)
##결과 확인하기
##결과 확인하기
#### 온도 스트림데이터 생성하기
워크플로우 실행 결과를 확인하기 위해서는 온도데이터를 스트림 형태로 발생시켜야 합니다. 이를 위해 위에서 설명한 Jmeter 도구를 활용합니다.
Controller 로는 WindowedSparkSessionOrStreamController 를 선택합니다. WindowedSparkSessionOrStreamController 는 스트림으로 입력되는 데이터를 큐에 저장하고, 일정 주기 마다 정해진 윈도우 크기로 잘라서 operator 에게 전달합니다.
field |value | 설명
--|---|--
operationPeriod | 2 | Reader로 부터 데이터를 읽어올 주기 | 53002 | HTTP 서버의 포트번호
...
...
@@ -56,12 +62,14 @@ windowSize | 10 | 큐에서 사용할 윈도우의 크기 | |
##### Runner
SimpleSparkRunner 를 선택합니다.
field |value | 설명
--|---|--
inJason | false | false로 설정하는 경우 json 형태의 파라메타를 커맨드라인 파라미터 형태로 변환하여 호출되는 외부 시스템에 전달. True 이면 json 형태의 파라메타 형태 그대로 외부시스템에 전달.