1.1.IntroductionFramework.md 10.5 KB
Newer Older
HooYoungAhn's avatar
HooYoungAhn committed
# KSB 인공지능 프레임워크 개요

KSB 인공지능 프레임워크는 다양한 학습모델과 지식/경험을 선택조합하여 서비스를 생성할 수 있는 DIY 자가학습형 지식융합 인공지능 서비스 프레임워크를 지향합니다.
분산병렬 인프라를 기반으로, 다양한 데이터 소스로부터 도메인의 응용서비스를 제공하기까지의 전주기적 솔루션을 지향합니다. 데이터의 수집-적재-처리-분석-서빙에 이르는 시스템을 구성할 수 있는 프레임워크 기능과 이를 실행하고 운영할 수 있는 플랫폼 기능을 제공합니다.

KSB 인공지능 프레임워크는 프레임워크 개발자들이 기능을 확장할 수 있도록 컴퍼넌트와 API를 개발할 수 있는 인터페이스를 제공합니다. 또한 개발자들에 의해서 만들어진 컴퍼넌트나 API 들을 이용하여 응용을 개발하고 실행하도록 하는 사용자 인터페이스를 제공합니다.


KSB 인공지능 프레임워크의 **주요 이해관계자** 는 다음과 같습니다.

- **<span style="font-size: 14pt; color:green">응용 개발자</span>**  KSB 인공지능 프레임워크에 탑재된 모듈 및 소프트웨어 컴퍼넌트를 이용하여 응용을 개발하고 이를 실행하여 최종사용자에게 응용을 이용한 서비스를 제공하고자 하는 자
- **<span style="font-size: 14pt; color:green">개발자</span>**  프레임워크 기능을 확장할 수 있도록 컴퍼넌트와 API를 개발하는 자로서 **소프트웨어 컴퍼넌트 개발자**, **파이썬 모듈 개발자**, **지식전문가** 가 포함됩니다.
  - **소프트웨어 컴퍼넌트 개발자** 프레임워크의 개발자 인터페이스를 통하여 새로운 소프트웨어 컴퍼넌트를 개발하여 프레임워크에 탑재하는 자
  - **파이썬 모듈 개발자** 프레임워크에서 제시하는 인터페이스를 만족하는 파이썬 모듈을 개발하여 프레임워크에 탑재하는 자
  - **지식 전문가** 경험이나 지식을 구조화하여 저장하고 이를 활용할 수 있도록 인터페이스를 생성하여 탑재하는 자

- **<span style="font-size: 14pt; color:green">운용자</span>** 프레임워크를 통해 실행된 시스템(엔진)들을 중단없이 안정적으로 실행되도록 자원을 할당하고 운영하고자 하는 자
- **<span style="font-size: 14pt; color:green">관리자</span>** 프레임워크 및 웹툴킷 사용자에 대한 관리 및 시스템 전반적인 관리를 담당하는 자
- **<span style="font-size: 14pt; color:green">최종사용자</span>** 프레임워크를 통해 실행된 응용 시스템으로부터 제공되는 서비스를 최종적으로 제공받는 자


---
## 주요개념
KSB 인공지능 프레임워크는 유기적인 관계에 있는 일련의 작업의 흐름을 **워크플로우** 라는 개념으로 정의합니다. 워크플로우는 독립적인 실행 시스템에 해당하는 단위인 **엔진** 을 하나 이상 선언함으로써 정의될 수 있습니다. 독립적인 논리 배포단위인 **엔진** 은 엔진의 틀에 해당하는 **엔진 컨테이너** 에 필요한 **컴퍼넌트** 를 선언함으로써 정의됩니다. 이러한 과정에 의해 정의된 워크플로우 스펙에 따라 프레임워크는 실행시스템을 동적으로 구성하고, 이를 도메인의 응용에 필요한 서비스를 제공하도록 클러스터 상에 실행합니다.

### 워크플로우
일련의 작업을 정의하고 실행하기 위한 단위입니다. 하나의 워크플로우는 하나 이상의 엔진컨테이너의 정의로 구성될 수 있으며, 워크플로우를 구성하는 각각의 엔진들은 배치실행과 동시실행 방식으로 구동될 수 있습니다.
- **배치실행 방식** 엔진의 순서정보에 의해 순차적으로 일련의 엔진이 실행되고 종료되는 방식
- **동시실행 방식** 워크플로우에 정의된 엔진이 동시에 실행되는 방식

### 엔진컨테이너
엔진컨테이너는 워크플로우 상에서 필요한 목적에 맞게 구성할 수 있는 하나의 실행 시스템인 엔진에 대한 틀로서, 엔진컨터이너 상에 컴퍼넌트들을 탑재하여 각 컴퍼넌트의 값을 설정하여 엔진에 대한 정의를 합니다. 엔진의 유형은 현재 총 12 종이 제공되고 있으며, 자세한 내용은 <a href="./2.4.1.EngineTypeList.md">엔진 유형 목록</a>을 참조하시기 바랍니다.
HooYoungAhn's avatar
HooYoungAhn committed

### 컴퍼넌트
엔진컨테이너를 구성하는 구성체로서, 5가지의 컴퍼넌트의 유형이 존재하며 각각 다음과 같은 역할을 수행합니다.

- **Reader** 데이터 발생지로부터 데이터를 읽어오기 위한 컴퍼넌트 유형
- **Writer** 데이터 저장소로 데이터를 출력하기 위한 컴퍼넌트의 유형
- **Operator** 데이터를 처리하기 위한 컴퍼넌트의 유형
- **Runner** 실행 런타임을 실행하기 위한 컴퍼넌트 유형
- **Controller** 엔진컨테이너 내의 처리절차를 구성하고 실행을 주관하는 컴퍼넌트의 유형

현재 프레임워크 상에는 데이터처리/학습/서빙 관련 총 73종의 컴퍼넌트가 탑재되어 있으며, 자세한 내용은 <a href="./2.4.2.ComponentList.md">컴퍼넌트 목록</a>을 참조하시기 바랍니다. 개략적인 분류는 다음과 같습니다.
HooYoungAhn's avatar
HooYoungAhn committed
- **데이터 수집/처리 컴퍼넌트 (62종)**: 수집/적재 17종, 미니배치 32종, 실시간 처리 13종
- **학습 SW (2종)**:  분산텐서플로우 스케툴러(CoDDL), AutoSparkML
- **모델서빙 관련 컴퍼넌트 (3종)**: 온디맨드 DL 모델 서빙, 스트림 DL 모델서빙, 스트림 ML모델서빙
- **융합서빙 관련 컴퍼넌트 (6종)**: 컨트롤러 1종, 오퍼레이터 5종


------
## KSB 인공지능 프레임워크 SW v19.03 구성요소

### KSB 클라이언트
**KSB 클라이언트** 는 워크플로우를 작성하고, 이를 **KSB 프레임워크** 에서 구동하도록 지시하기 위해 **KSB 프론트엔드** 로 요청하는 역할을 수행하는 도구입니다. **KSB 프레임워크** 의 클라이언트 모듈은 웹기반의 클라이언트 모듈인 **KSB 웹툴킷** 과 스칼라 기반의 클라이언트 모듈인 **KSB Client SDK** 두 가지 형태로 제공됩니다.

#### KSB 웹툴킷
**KSB 웹툴킷** 은 워크플로우를 정의할 수 있는 편집기, 워크플로우를 실행하고 제어하기 위한 모니터링, 데이터의 업로드 및 시각화 등을 웹 방식의 그래픽 환경에서 수행할 수 있도록 제공되는 클라이언트 모듈입니다. 자세한 내용은 <a href="./2.1.IntroductionWebToolkit.md">KSB 웹툴킷 소개</a> 를 참조하시기 바랍니다.
HooYoungAhn's avatar
HooYoungAhn committed

#### KSB Client SDK
**KSB Client SDK** 는 스칼라(자바) 기반의 클라이언트 개발도구로서, 개발자가 **KSB 프레임워크** 상에서 실행하고자 하는 워크플로우를 개발할 수 있는 환경과 작성한 워크플로우를 실행할 수 있는 API 를 함께 제공합니다 (자세한 설명은 <a href="./3.1.HowToConfigureDevelopEnvironment.md">KSB 프레임워크 SW 개발환경 구성</a>을 참조). 또한 **KSB 프레임워크** 상에 실행가능한 다양한 종류의 워크플로우 예제를 포함하고 있으므로, 이를 참조하여 다양한 워크플로우 시나리오 예제를 작성할 수 있습니다.
HooYoungAhn's avatar
HooYoungAhn committed

### KSB 프론트엔드
**KSB 프론트엔드****KSB 웹툴킷** 이나 **KSB Client SDK** 를 이용하여 작성된 워크플로우 스펙을 받아서 **KSB 오케스트레이터** 로 넘겨 줌으로써 워크플로우를 수행하도록 하는 매개역할을 수행합니다. 이 외에도 사용자 관리나 저장소 관리 등의 다양한 요청에 대해 대응하는 front-end 로서의 역할을 수행합니다.

### KSB 메세지 인터페이스
**KSB 메세지 인터페이스** 는 각 컴퍼넌트들에 대한 속성값을 정의하고 값을 전달하기 위한 **KSB 메세지 인터페이스** 객체에 해당합니다.

### KSB 오케스트레이터
**KSB 프론트엔드** 로부터 넘겨받은 워크플로우 사양에 따라 필요한 엔진을 구성하여 실행하도록 요청하고, 각각의 엔진에 대한 구동과 종료 및 제어를 수행하는 등의 역할을 수행합니다.

### KSB 엔진 컴퍼넌트
엔진컨테이너를 구성하는 구성체로서 5가지 유형이 있으며, 이들 5가지의 컴퍼넌트의 조합에 의해 엔진이 생성됩니다. 현재 **KSB 프레임워크** 에는 약 73종 이상의 컴퍼넌트가 구현되어 있습니다. ( 상기 **컴퍼넌트** 설명 참조 )

### KSB 연동플랫폼
**KSB 프레임워크** 는 목적에 따른 다양한 외부 실행 플랫폼과 연동할 수 있는 인터페이스를 제공합니다. 각각의 **KSB 연동플랫폼****엔진컴퍼넌트****Runner** 에 의해 연동과 실행이 제어됩니다. 현재 **KSB 프레임워크** 에는 Spark, Tensorflow, Tensorflow Serving, Jena Knowledge Base 등을 연동하기 위한 모듈이 각각의 **Runner 컴퍼넌트** 로 구현되어 있습니다.

### KSB 저장소
**KSB 프레임워크** 는 수집한 데이터를 적재하기 위한 저장소인 **데이터 저장소**, 자원이나 응용에 필요한 자원이나 룰, 컨텍스트 정보 등을 저장할 수 있는 **자원/룰 저장소**, 프레임워크 자체적인 워크플로우를 보관하기 위한 **워크플로우 저장소**, 크게 3가지 유형의 저장소 기능을 제공합니다.


------
## KSB 배포

**KSB 인공지능 프레임워크**<a href="https://etrioss.kr/ksb/kaf">KSB 인공지능 프레임워크 웹페이지</a> 를 통해 **툴박스 버전****클러스터 버전**, 두 가지의 배포버전에 대한 설치방법을 제공하고 있습니다.
HooYoungAhn's avatar
HooYoungAhn committed

### KSB 툴박스
**KSB 툴박스****KSB 웹툴킷** 과 stand-alone 버전의 **KSB 런타임(실행환경)** 을 지원하는 툴박스 형태의 **KSB 프레임워크** 로서, 사용자의 로컬환경에서 KSB 프레임워크 실행환경을 쉽고 빠르게 구성하여 사용하기 위한 환경을 제공합니다.

### KSB 클러스터
**KSB 클러스터** 는 실제 클러스터 환경에서 운영하기 위한 배포 형태로서 **KSB 웹툴킷** 과 분산병렬 버전의 **KSB 런타임** 을 지원하는 **KSB 프레임워크** 로 구성되어 있습니다. 설치와 사용에 관한 자세한 사항은 <a href="./3.1.HowToConfigureDevelopEnvironment.md">KSB 인공지능 프레임워크 설치</a> 매뉴얼을 참조하시기 바랍니다.