# BeeAI: KSB 인공지능 프레임워크
## 소개
![개념도](images/images_conceptual_illustration.jpg)
#### 개념 및 구조
- KSB 인공지능 프레임워크(이하 BeeAI)는 IoT, 빅데이터, 기계학습 및 도메인 지식을 융합하여 다양한 인공지능 서비스 구축에 필요한 공통기능을 제공하는 인공지능 프레임워크입니다. BeeAI는 분산병렬 인프라를 기반으로, 다양한 데이터 소스의 수집으로부터 도메인 응용서비스 제공까지의 전주기적 솔루션을 지향합니다.
- BeeAI는 멀티모달 데이터처리, 멀티모델 동시학습 및 추론, 자동기계학습, 분산병렬학습 및 추론, 학습모델 및 도메인지식의 탑재·연동 등의 기능을 제공합니다. 각각의 기능들은, 워크플로우를 이용하여 선택·조합·실행·서빙 및 재활용이 가능하도록 설계되었습니다.
#### 특장점
- 지속성 : SW/Data/Analytics/경험 등 기업의 데이터를 활용한 인공지능 기술력 내재화 가능
- 다양성 : SW 컴퍼넌트들의 조합으로 다양한 응용 서비스 시스템 구성 가능
- 재활용성 : 워크플로우 재활용 및 공유 기능 제공
- 확장성 : 개발자 API를 이용한 3rd Party 컴퍼넌트 개발 및 등록 인터페이스 제공
- 편의성 : (1) 웹 기반 DIY 워크플로우 저작도구 및 모니터링/실행/제어 인터페이스제공, (2) Stand-alone 실행환경과 웹툴킷 저작 환경을 포함한 컨테이너 기반 툴박스 제공, (3) 모델 학습과 서빙 프로세스 일원화
## 가입절차
BeeAI를 다운받기 위한 절차는 다음과 같습니다.
#### ETRI 외부 클라우드 저장소 회원가입
- 접속 후 "외부 클라우드 저장소" 클릭 (아래 그림 참조)
![ETRI 오픈소스포털](images/images_oss.etri.re.kr.png)
- 외부 클라우드 저장소 회원가입 (아래 그림 참조). 회원 가입시의 "Full name"과 "Username"은 아래 "권한요청 Email 발송"에서 필요함.
![ETRI 외부 클라우드 저장소 가입](images/images_etri.external.git.png)
#### 권한요청 Email 발송
가입시의 "Full name"과 "Username"을 포함하는 메일을 작성하여 발송합니다 (아래 참조).
- Email 제목: KSB KAF Git Repository 접근승인요청
- Email 수신처: dwk@etri.re.kr
- 내용: 반드시 "Full name"과 "Username"을 포함하여야 하며, 기타 내용은 자유양식으로 작성
담장자 (dwk@etri.re.kr) 부재시, 추가 Email 수신처는 아래와 같습니다.
- kanghj@etri.re.kr
- leeyh@etri.re.kr
발송된 권한요청 Email은 담당자에 의해 수동으로 확인됩니다. 담당자가 부재 중이 아닐 경우, 빠른 확인 후 권한요청 승인에 대한 답변이 이메일로 발송됩니다.
#### 다운로드
권한요청 승인 답메일을 받은 후에는, 아래의 명령어를 이용하여 BeeAI를 다운로드할 수 있습니다.
git clone http://211.43.13.21/ksb/kaf
처음으로 다운로드할 경우, 가입시 이용한 사용자 ID ("Username")와 암호 ("Password")를 입력합니다.
#### 업데이트
BeeAI가 업데이트된 경우, 아래 명령어를 이용해 업데이트된 파일만 받을 수 있습니다.
git pull http://211.43.13.21/ksb/kaf
#### 참고
동일한 BeeAI를 사이트에서 별도의 회원 가입 후, "2. KSB 인공지능 프레임워크 (오픈소스 및 바이너리 파일)"를 통해서도 다운로드 받을 수 있습니다. 주의: 이 방법으로 다운을 받으면, BeeAI가 업데이트 되었을 경우 전체파일을 새로 받아야 합니다.
## 설치
다운받은 BeeAI를 설치하기 위해 다음 문서를 참고합니다.
- BeeAI 설치
-
- 웹툴킷 설치
-
## 처음 실행하기
BeeAI를 실행하기 위해 다음 문서를 참고합니다.
- BeeAI 실행
-
## 사용자 가이드
KSB 인공지능 프레임워크를 이용하여 인공지능 서비스를 만드는 방법을 설명한 사용자 매뉴얼이다.
KSB 웹툴킷을 이용하여 인공지능 서비스와 관련된 워크플로우를 만들고 실행하거나 제어하는 방법을 설명한다.
또한 워크플로우를 쉽게 개발할 수 있도록 KSB 웹툴킷 기반의 다양한 워크플로우 개발 예제를 소개한다.
### 워크플로우 예제 :: 데이터 처리
#### 스트림 데이터 적재하기
- 스트림 데이터를 MongoDB에 적재하는 예제를 소개합니다.
-
#### 배치방식으로 데이터 처리하기
- KMeans 클러스터링을 수행하는 배치데이터 처리 예제를 소개합니다.
-
#### 비식별 처리하기
- 원본 데이터에 총계처리, 가명처리, 부분식별자삭제, 암호화 비식별화 기능을 적용한 예제를 소개합니다.
-
### 워크플로우 예제 :: ML 모델 학습 및 서빙
#### ML모델 학습하기
- DecisionTree 분류 예제를 소개합니다.
-
#### AutoML 학습하기
- AutoML 학습 예제를 소개합니다..
-
#### 배치방식으로 ML모델 예측결과 얻기
- AutoML로 학습된모델로부터 예측하는 예제를 소개합니다.
-
#### 스트림 방식으로 ML모델 예측결과 얻기
- 온도센서 스트림 데이터를 전처리하여 기계학습 모델에 의해 예측된 온도값을 Kafka 스트림으로 내보내는 예제를 소개합니다.
-
#### 스트림 방식으로 예측하여 REST 방식으로 서빙하기
- 온도센서 스트림 데이터를 전처리하여 기계학습 모델에 의해 예측된 온도값을 클라이언트 요청에 따라 전달하는 예제를 소개합니다.
-
#### 스트림 예측결과를 지식추론하여 REST 방식으로 서빙하기
- 온도센서 스트림 데이터를 전처리하여 기계학습 모델에 의해 예측된 온도값을 클라이언트의 요청에 따라 최적의 제어를 추론하여 전달하는 예제를 소개합니다.
-
### 워크플로우 예제 :: DL 모델 학습 및 서빙
#### 텐서플로우 모델 주기적으로 학습하기
- 텐서플로우 기반 딥러닝 모델을 주기적으로 학습하는 예제를 소개합니다.
-
#### 온디맨드 방식으로 Inception 모델 서빙하기
- 텐서플로우 Inception 모델을 이용한 온디맨드 방식의 이미지 분류 서비스 예제를 소개합니다.
-
#### 스트림 방식으로 Mnist 모델 서빙하기
- Kafka로부터 전달받은 이미지를 텐서플로우 기반 Mnist 모델로 분류하여 Kafka 스트림으로 전달하는 예제를 소개합니다.
-
### 워크플로우 예제 :: 융합서빙 및 기타
#### 융합 REST API 만들기
- REST API를 파이프라인하여 새로운 융합 REST API 를 만드는 예제를 소개합니다.
-
#### 쿠버네티스를 이용한 주기적인 모델학습 및 예측모델 서빙하기
- 강남교통 모델을 주기적으로 학습하고 학습된 모델을 쿠버네티스에서 서빙하는 예제를 소개합니다.
-
### 워크플로우 예제 :: 교통속도 예측 튜토리얼
#### 교통속도 스트림 데이터 전처리하기
- 교통센서로부터 시계열 속도 데이터를 수집하여 전처리를 수행하고, 파일로 저장하는 예제를 소개합니다.
-
#### 교통속도예측 텐서플로우 모델 학습하기
- 일정 기간 수집하여 전처리한 시계열 속도 데이터를 이용하여 텐서플로우 기반 딥러닝 모델을 학습하여 서빙용 모델을 만드는 예제를 소개합니다.
-
#### 온디맨드 방식으로 교통속도예측 모델 서빙하기
- 텐서플로우 기반 딥러닝 모델을 이용한 교통 속도 예측 RESTful 서비스 예제를 소개합니다.
-
#### 스트림 방식으로 교통속도예측 모델 서빙하기
- 교통센서로부터 시계열 속도 데이터를 수집한 후 전처리를 수행하고, 텐서플로우 기반 딥러닝 모델에 의해 예측된 속도를 클라이언트로 전달하는 예제를 소개합니다.
-
#### 실시간 시계열 교통속도 센서스트림 처리하기
- 교통센서로부터 동시에 무작위로 들어오는 시계열 속도 데이터를 수집하여 시간 순으로 데이터를 처리해서
내보내는 예제를 소개합니다.
-
#### 실시간 시계열 교통속도 센서스트림 처리 및 텐서플로우 모델 서빙하기
- 교통센서로부터 시계열 속도 데이터를 수집한 후 전처리를 수행하고, 텐서플로우 기반 딥러닝 모델에 의해
예측된 속도를 클라이언트로 전달하는 예제를 소개합니다.
-
#### 실시간 시계열 교통속도 센서스트림 처리/학습/예측 및 주기적 모델 갱신하기
- 교통센서로부터 시계열 속도 데이터를 수집한 후 전처리를 수행하고, 텐서플로우 기반 딥러닝 모델에 의해
예측된 속도를 클라이언트로 전달하는 한편, 전처리한 속도 데이터를 계속해서 파일에 저장한 후
텐서플로우 기반 딥러닝 모델을 주기적으로 학습하는 예제를 소개합니다.
-
## BeeAI 관련 웹사이트
- BeeAI 네이버 카페
-
- ETRI 오픈소스포털
-