LAONBUD

Home

Framework

Laonade Manual

Case

Contact

Support

Time Series Data Prediction

Image Classification

Analytics Application

Health Care

Build
Artificial
Intelligence

Framework "Laonade"

framework

license

CPU

RNN

CNN

RBM

활용

Speed

분산

GUI
Interface

Customizing

Caffe

BSD-2
License

×

×

Fast

×

DeepLearning4j

Apache 2.0

×

Slow

×

MXNet

Apache 2.0

×

×

×

Middle

×

×

×

Neural
Designer

유료

×

×

Slow

×

×

×

Theano

Apache 2.0

×

Middle

×

×

×

Tensorflow

BSD License

×

Middle

×

×

Laonade

유료

Fast

Gradient-Ascent
Deconvolution과
같은 활용 기능 제공

Graph Data 처리와
GPGPU를 이용해
고속 처리 가능

자체 개발한 Graph Data
분산처리 솔루션을 활용

누구나 쉽게 학습 네트워크를
설계하고 해석할 수 있는
GUI Interface 제공

개발 프레임워크에서
지원하지 않는 방식도
Customizing 해서
구현할 수 있는 기능

Laonade 사용 설명서

Chapter 1. Introduction

 인공 신경망을 기반으로 하는 Deep Learning은 다양한 분야에서 혁신을 일으키고 있습니다. 그 중에서도 특히 이미지 인식 분야에서 뛰어난 성능을 보여주고 있습니다. 특정한 이미지 인식 분야에서 과거 Vision 기술이 80% 이상의 성능을 달성하는데 어려움을 겪고 있었던 시기에 Deep Learning이 적용되면서 사람의 인식률보다 뛰어난 성능을 보여주는데 이르렀습니다.

 이러한 뛰어난 성능을 보여주는 Deep Learning을 도입하고자 하는 회사가 많아지고 있지만, Deep Learning을 도입하는 것은 쉽지 않습니다. Deep Learning에 대한 학습도 필요하고 Deep Learning을 학습하고 테스트하기 위해 사용되는 Framework에 대한 학습도 필요하기 때문입니다.

 Laonade에서는 이미지 인식, 객체 검출 분야에서 널리 사용되는 최적화된 네트워크를 GUI 방식으로 손쉽게 활용할 수 있는 방법을 제공해 이러한 문제를 해결하고 있습니다. 학습 과정에서는 Hyper Parameter들을 직접 수정해 작업을 수행하거나 컴퓨터가 자동으로 최적의 Hyper Parameter를 추천해주도록 하는 AutoTune 기능을 활용할 수 있습니다. 그리고 잘 학습된 네트워크를 한 번의 클릭으로 Web API 형태로 배포할 수도 있습니다.

 Laonade를 통해서 회사 내에 존재하는 많은 Data를 활용해 좋은 인식기를 개발할 수도 있고, Deep Learning을 어렵게 공부하지 않아도 손쉽게 Deep Learning을 적용할 수도 있습니다.

 

 Laonade는 앞으로도 Deep Learning을 더 다양한 환경에서 더 쉽게 적용할 수 있는 좋은 서비스를 제공할 계획입니다.

1.1 Laonade 기능

 Laonade는 LaonSill이라는 Framework과 Node.js로 개발되었습니다. Laonade는 아래와 같은 특징을 가지고 있습니다.

  1. Json Communication Format
  2. Input Data로 LDFS Data Format 활용
  3. 다양한 Input Data Format을 LDFS로 변환하는 기능
  4. Data 보강을 위한 다양한 전처리기 지원
  5. Data 관리 기능 제공
  6. GPU 당 Job 할당 기능
  7. Job - Embployee 방식의 구조
  8. 최적화된 이미지 인식, 객체 검출 네트워크 제공
  9. 자동화된 최적의 Hyper Parameter 추천 기능
  10. Project 기반 과거 History 관리 기능

1.2 Laonade 추가 개발 기능

 Laonade는 다음과 같은 기능들을 개발하고 있으며, 이 중 몇몇은 현재 이미 적용되어 있을 수 있습니다.

  1. 온라인 설치 및 배포 기능
  2. 자동 소프트웨어 패치 업데이트 기능
  3. 얼굴 인식, OCR, 자연어 처리 기능
  4. 다양한 형태의 Multi-GPU 지원 기능
  5. 네트워크 압축 기능
  6. OpenCL 지원 기능
  7. Mobile 지원 기능
  8. 강화 학습 기능
  9. 자동 학습 기능

 Chapter 2. Installation

 본 장에서는 Laonade 서비스의 설치에 필요한 시스템 요구사항과 설치 방법을 기술합니다.

2.1 시스템 요구 사항

 본 장에서는 지원 플랫폼 및 운영체제, H/W 요구사항, S/W 요구사항 등등의 여러가지 설치에 필요한 시스템 요구사항에 대해서 기술합니다.

2.1.1 지원 플랫폼 및 운영체제

Laonade 서비스의 지원 플랫폼 및 운영체제는 다음과 같습니다.

CPU Architecture

OS

Binary Bits

x86-64

Centos 7

64 bit

 ※ Centos 7외에도 대중적인 Linux 배포판(ex. Ubuntu 14.04,..)에서 동작은 확인 하였으나 공식적으로 지원하지는 않습니다.

2.1.2 H/W 요구사항

권장 H/W 요구사항은 다음과 같습니다.

Item

Value

Note

CPU

Intel(R) Core(™) i7-6850K CPU @ 3.60GHz

Memory

64GB

OS

Centos 7.4

Disk

4TB HDD disk

1TB SSD disk

GPU

TITAN X

CUDA compute capability 4.0 이상 NVIDIA GPU 필요.

(https://developer.nvidia.com/cuda-gpus)

2.1.3 S/W 요구사항

 필요한 S/W 요구사항은 다음과 같습니다. Centos 7.4 버전을 기준으로 요구사항이 서술하겠습니다. 아래의 대표 package를 설치했을때에 의존적으로 설치되는 package에 대해서는 생략하겠습니다.

Package

Version

Note

gcc

4.8.5-16

(glibc : 2.17)

yum install gcc

gcc-c++

4.8.5-16

yum install gcc-c++

python-devel

2.7.5-58

yum install python-devel.x86_64

cmake

2.8.12-2

yum install cmake

python2-pip

9.0

yum install epel-release

yum update

yum install python2-pip.noarch

pip install --upgrade pip

gtk2-devel

2.24.31-1

yum install gtk2-devel.x86_64

wget

1.14-15

yum install wget.x86_64

java-openjdk-devel

1.8.0

yum install java-1.8.0-openjdk-devel.x86_64

numpy

1.14.0

pip install numpy

opencv

2.4.13.3

Appendix A 참고

cuda

8.0

Appendix B 참고

cudnn

6.0

Appendix B 참고

python

2.7.5-58

yum install python

boost-devel

1.53

yum install boost-devel.x86_64

hyperopt

0.1

pip install hyperopt

pysmac

0.8

pip install pysmac

Cython

0.27.3

yum install Cython.x86_64

pip install Cython --upgrade

scikit-optimize

0.4

pip install scikit-optimize

psutil

5.4.3

pip install psutil

sysstat

10.1.5

yum install sysstat.x86_64

tkinter

2.7.5

yum install tkinter.x86_64

pudb

2017.1.4

pip install pudb

node.js

6.12.2

yum install nodejs

npm

3.10.10

yum install npm

p7zip

16.02

yum install p7zip

2.2 설치

Laonade 서비스는 아래와 같이 크게 3개의 모듈로 구성이 됩니다:

  • LaonSill Framework
  • Laonade Agents
  • Laonade Service

본 절에서는 3개의 모듈의 설치방법을 서술하겠습니다.

2.2.1 Laonade Package Download

Laonade 설치를 위해서는 배포 패키지가 필요합니다. 배포 패키지는 2가지 형태로 제공이 됩니다.

  • 설치엔지니어를 통한 설치디스크(외장하드디스크) 지원
  • 웹 저장소를 통한 배포 패키지 지원

2가지 형태 모두 라온버드 고객팀 연락을 통해 제공받을 수 있습니다. 라온버드 고객팀 연락처는 아래와 같습니다:

email

cell phone

laonbud@laonbud.com

+82-10-9054-6712

 ※ 주의사항

   저장된 라온에이드 패키지의 위치를 $LAONADE_PACKAGE 환경변수로 설정 해야 합니다.

2.2.2 LaonSill Framework 설치

본 절에서는 LaonSill Framework 설치 방법을 기술합니다.

적절한 장소에 압축을 푼다. $HOME 디렉토리 바로 밑에 푸는 것을 권장합니다. (본 메뉴얼에서는 $HOME 바로 밑에 압축을 풀었다는고 가정하고 설치 방법을 기술합니다.) 압축을 풀고나면 LAONSILL_HOME이라는 디렉토리가 생기는데 이 디렉토리의 경로를 $LAONSILL_HOME 환경변수로 등록합니다.

$ cp $LAONADE_PACKAGE/LaonSill_RevXXXXXX.tar.gz $HOME/.

$ cd $HOME

$ tar zxvf LaonSill_RevXXXXXX.tar.gz

$ rm LaonSill_RevXXXXXX.tar.gz

$ export LAONSILL_HOME=$HOME/LAONSILL_HOME

 ※ 주의사항

   XXXXXX는 배포 리비전 번호를 의미합니다. 받은 $LAONADE_PACKAGE에 들어있는 적절한 리비전번호로 대체해서 사용합니다.

라이브러리를 /etc/ld.so.conf에 등록합니다.

$ sudo vi /etc/ld.so.conf

[/etc/ld.so.conf]

/home/laonbud/LAONSILL_HOME/dev/client/lib

/home/laonbud/LAONSILL_HOME/lib

$ sudo ldconfig

각종 환경변수를 설정합니다.

$ export PATH=$LAONSILL_HOME/bin:$PATH

$ export PYTHONPATH=$LAONSILL_HOME/pyapi:$PYTHONPATH

laonsill 환경설정 파일을 열어서 아래와 같이 적절하게 수정합니다. (수정한 부분은 볼드체로 표시하였습니다.)

$ vi $LAONSILL_HOME/laonsill.conf

[laonsill.conf]

SESS_COUNT=20

GPU_COUNT=1

JOB_CONSUMER_COUNT=10

NETWORK_SAVE_DIR=/home/laonbud/LAONSILL_HOME/param

IMAGEUTIL_SAVE_DIR=/home/laonbud/LAONSILL_HOME/output_images

COLDLOG_DIR=/home/laonbud/LAONSILL_HOME/log

HOTLOG_DIR=/home/laonbud/LAONSILL_HOME/log

SYSLOG_DIR=/home/laonbud/LAONSILL_HOME/log

BASE_DATA_DIR=/home/laonbud/LAONSILL_HOME/data

COMMUNICATOR_REUSE_ADDR=1

STOP_TRAIN_WHEN_GOT_NAN_LOSS=1

LaonSillServer를 아래와 같이 실행합니다. 적절한 버전이 출력이 된다면 정상적으로 설치 된 것입니다.

$ LaonSillServer -v

LaonSillServer version 0.1.0

2.2.3 Laonade Agents 설치

적절한 장소에 압축을 풀어 줍니다. $HOME 디렉토리 바로 밑에 압축을 푸는 것을 권장하고 있습니다. (본 메뉴얼에서는 $HOME 바로 밑에 압축을 풀었다고 가정하고 설치 방법을 기술하겠습니다.) 압축을 풀고나면 LAONADE_HOME이라는 디렉토리가 생기는데 이 디렉토리의 경로를 $LAONADE_HOME 환경변수로 등록합니다.

$ cp $LAONADE_PACKAGE/Laonade_RevXXXXXX.tar.gz $HOME/.

$ cd $HOME

$ tar zxvf Laonade_RevXXXXXX.tar.gz

$ rm Laonade_RevXXXXXX.tar.gz

$ export LAONADE_HOME=$HOME/LAONADE_HOME

추가적으로 환경변수를 설정합니다.

$ export TOOLBOX_HOME=$LAONADE_HOME/lib

$ export PYTHONPATH=$TOOLBOX_HOME/common:$PYTHONPATH

$ export PYTHONPATH=$TOOLBOX_HOME/autotune:$PYTHONPATH

$ export PYTHONPATH=$TOOLBOX_HOME/soosemi:$PYTHONPATH

$ export PYTHONPATH=$TOOLBOX_HOME/resourcemanager:$PYTHONPATH

$ export PYTHONPATH=$TOOLBOX_HOME/sdf_tool:$PYTHONPATH

$ export PATH=$PATH:$LAONADE_HOME/bin

LaonSill 서버를 실행시킵니다.

$ LaonSillServer

Laonade Agents들을 실행하고, 각 프로세스들이 살아있는지 ps로 확인합니다. 4개의 Laonade Agents들이 보이면 성공적으로 설치 된 것으로 볼 수 있습니다.

$ start_server.py

$ ps -ef | grep py

laonbud  30686     1 21 09:17 pts/1    00:00:00 /usr/bin/python /home/laonbud/LAONADE_HOME/bin/soosemi_server.py --port 14001 --serverport 20088 --autotuneport 14000 --logname soosemi_server_0.log

laonbud  30687     1 47 09:17 pts/1    00:00:00 /usr/bin/python /home/laonbud/LAONADE_HOME/bin/autotune_server.py --port 14000 --soosemiport 14001 --logname autotune_server_0.log

laonbud  30688     1  1 09:17 pts/1    00:00:00 /usr/bin/python /home/laonbud/LAONADE_HOME/bin/resource_server.py --port 14002 --logname resourcemanager_server_0.log

laonbud  30689     1 25 09:17 pts/1    00:00:00 /usr/bin/python /home/laonbud/LAONADE_HOME/bin/sdf_tool_server.py --port 14003 --logname tool_server_0.log

2.2.4 Laonade Service 설치

적절한 장소에 압축을 푼다. $HOME 디렉토리 바로 밑에 압축을 푸는 것을 권장합니다. 압축을 풀면 LAONADE_SERVICE_HOME 폴더가 만들어집니다. 이 곳을 LAONADE_SERVICE_HOME 환경변수로 정의하겠습니다.

$ cd $LAONADE_PACKAGE/LaonadeService_RevXXXXXX.tar.gz $HOME/.

$ cd $HOME

$ tar zxvf LaonadeService_RevXXXXXX.tar.gz

$ rm LaonadeService_RevXXXXXX.tar.gz

$ export LAONADE_SERVICE_HOME=$HOME/LAONADE_SERVICE_HOME

필요한 라이브러리들을 npm으로 설치합니다.

$ cd $LAONADE_SERVICE_HOME

$ sudo npm install

laonade에서는 학습에 사용이 되는 파라미터들을 $LAONSILL_HOME/param 위치로 다운로드 하고, 압축을 풀어줍니다.

$ cp $LAONADE_PACKAGE/laonade_base_params.tar.gz $LAONSILL_HOME/param/.

$ cd $LAONSILL_HOME/param

$ tar zxvf laonade_base_params.tar.gz

$ rm laonade_base_params.tar.gz

laonade sample project에서 사용되는 파라미터를 다운로드하고, $LAONSILL_HOME/param에 압축을 풀어줍니다.

$ cp $LAONADE_PACKAGE/sample_param.tar.gz $LAONSILL_HOME/param/.

$ cd $LAONSILL_HOME/param

$ tar zxvf sample_param.tar.gz

$ rm sample_param.tar.gz

laonade sample project에서 사용되는 measure 정보를 다운로드하고, $LAONSILL_HOME/measure에 압축을 풀어줍니다.

$ cp $LAONADE_PACKAGE/sample_measure.tar.gz $LAONSILL_HOME/measure/.

$ cd $LAONSILL_HOME/measure

$ tar zxvf sample_measure.tar.gz

$ rm sample_measure.tar.gz

laonade에서 기본적으로 제공이 되는 학습데이터셋들을 $LAONSILL_HOME/data/sdf 밑으로 복사를 합니다.

$ cp -r $LAONADE_PACKAGE/sdf/* $LAONSILL_HOME/data/sdf/.

node.js 정의된 포트번호로(ex. 15000) 웹서버를 실행 합니다.

$ cd $LAONADE_SERVICE_HOME

$ node app.js --port 15000 --config 0

웹 브라우저를 통해서 Laonade Service가 정상적으로 동작함을 확인 합니다.

Appendix A. OpenCV 설치

 Laonade 서비스는 Opencv의 optional 모듈을 이용합니다. 알려져있는 패키지 설치 매니저(ex. YUM, apt-get, pip, etc..)를 이용하여 OpenCV 배포판을 설치하면 optional 모듈을 설치하지 않기 때문에 정상 동작하지 않습니다. 본 장에서는 OpenCV를 optional 모듈과 함께 수동으로 컴파일하여 설치하는 방법을 서술합니다.

우선 opencv 2.4버전을 받습니다. 메뉴얼이 작성되는 시점(2018년 1월)을 기준으로 git에 올라온 최신 버전은 centos7 환경에서 제대로 빌드되지 않았습니다. 따라서 아래의 2.4.13.3 버전을 다운받아서 설치하는 것을 권장합니다.

$ wget https://github.com/opencv/opencv/archive/2.4.13.3.tar.gz

압축을 풀고, 아래와 같이 빌드를 합니다.

$ tar zxvf 2.4.13.3.tar.gz

$ cd opencv-2.4.13.3

$ mkdir release

$ cd release

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_GTK=ON ..

$ make

$ sudo make install

OpenCV가 설치된 곳을 Python이 인식할 수 있도록 PYTHONPATH 환경변수를 설정합니다. .bashrc 등의 설정 파일에서 환경변수를 설정해 놓는 것을 권장합니다.

$ export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH

 설치된 OpenCV 라이브러리를 로더에서 인식할 수 있도록 설정합니다.

$ sudo vi /etc/ld.so.conf

[/etc/ld.so.conf]

/usr/local/lib

$ sudo ldconfig

Appendix B. CUDA, CUDNN 설치

 Laonade 서비스는 NVIDIA의 CUDA, CUDNN 라이브러리를 이용합니다. 본 절에서는 각각의 라이브러리 설치 방법을 기술합니다.

CUDA 버전 8.0 설치 (방법 A)

NVIDIA CUDA download 사이트에서 runfile을 다운로드를 합니다.

https://developer.nvidia.com/cuda-downloads 에서 다운로드 합니다.

nouveau를 비활성화 합니다.

$ sudo vi /etc/modprobe.d/blacklist-nouveau.conf                                                      

   [blacklist-nouveau.conf]                                  

blacklist nouveau                                                                                      

options nouveau modeset=0                                                                        

$ sudo dracut --force

콘솔 모드로 부팅을 하도록 부트모드를 변경한 후에 재부팅을 합니다.

$ sudo systemctl set-default multi-user.target

$ sudo reboot

CUDA를 인스톨러를 실행합니다. 이때에 OPENGL, nvidia-xconfig 설정은 No로 나머지는 Yes혹은 default 값으로 선택하는 것을 추천합니다.

$ sudo sh cuda_8.0.61_375.26_linux.run

GUI모드로 부팅을 하도록 변경한 후에 재부팅을 합니다.

$ sudo systemctl set-default graphical.target

$ sudo reboot

동작 확인

device query를 빌드하고, 실행하여 정상적인 결과가 나오는지 확인합니다.

$ cd ~/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery

$ make

$ ./deviceQuery

CUDA 버전 8.0 설치 (방법 B)

아래의 스크립트를 실행합니다.

#!/bin/bash

echo "Checking for CUDA and installing."

# Check for CUDA and try to install.

if ! rpm -q cuda-8-0; then

  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-8.0.61-1.x86_64.rpm

  rpm -i --force ./cuda-repo-rhel7-8.0.61-1.x86_64.rpm

  yum clean all

  yum install epel-release -y

  yum update -y

  yum install cuda-8-0 -y

fi

# Verify that CUDA installed; retry if not.

if ! rpm -q cuda-8-0; then

  yum install cuda-8-0 -y

fi

# Enable persistence mode

nvidia-smi -pm 1

CUDNN 버전 6.0 설치

CUDNN을 다운로드 합니다.

https://developer.nvidia.com/cudnn 에서 다운로드 한다.

CUDNN 압축을 풀고 include, lib64 내용을 /usr/local/cuda에 복사하고, shared library는 적절하게 링크를 걸어 줍니다.

$ tar zxvf cudnn-8.0-linux-x64-v6.0.tgz

$ sudo cp cuda/include/* /usr/local/cuda/include/.

$ sudo cp cuda/lib64/libcudnn.so.6.0.21 /usr/local/cuda/lib64/.

$ cd /usr/local/cuda/lib64

$ sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6

$ sudo ln -s libcudnn.so.6.0.21 libcudnn.so

설치된 CUDA 라이브러리와 바이너리를 환경변수에 적절하게 넣어줍니다. .bashrc 등의 환경 설정 파일에도 환경변수를 설정하기를 권장합니다.

$ export PATH=/usr/local/cuda/bin:$PATH

$ export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

 ※ 주의사항

   너무 최신의 그래픽카드를 사용하는 경우에 CUDA에 내장된 디바이스 드라이버만 설치해서는 동작을 하지 않는 경우가 있습니다. 이 경우에는 최신 NVIDIA graphic driver(http://www.nvidia.co.kr/drivers)를 다운로드 받아서 설치 합니다.

Chapter 3. Getting Started

본 장에서는 사용자가 Laonade 서비스의 실행 방법, 종료  방법, 간략한 사용 방법에 대해서 기술합니다.

3.1 Laonade 실행 방법

 본 절에서는 Laonade의 실행 방법에 대해서 기술합니다.

 ※ 주의사항

   Chapter 2. Installation 장의 설치과정에서 이미 Laonade 서비스를 실행했다면 본 절을 진행하지 않아도 됩니다.

3.1.1 Laonsill Server 실행

  $LAONSILL_HOME/laonsill.conf 파일에서 LaonSill Server에서 사용할 포트번호를 설정 할 수 있습니다. 따로 설정하지 않으면 기본 포트(20088)을 사용하게 된다. 설정 방법은 아래와 같습니다.

$ vi $LAONSILL_HOME/laonsill.conf

[laonsill.conf]

                         :

COMMUNICATOR_LISTENER_PORT=20077         ← 원하는 포트 추가

Laonsill Server는 아래와 같이 실행합니다.

 

$ LaonSillServer

[2018/01/18 04:28:51:588800(1266/0)] LAONSILL engine starts

 Laonsill Server는 1개의 GPU를 사용할 수 있습니다. 복수개의 GPU를 사용하기 위해서는 복수개의 LaonSill Server를 실행해야 합니다. 이 부분에 대한 설명은 Appendix A. Multi instance 설정 및 실행을 참고 합니다.

3.1.2 Laonade Agents 실행

  Laonade Agents와 Laonsill Server는 소켓으로 통신을 합니다. 따라서 Laonade Agents들은 Laonsill Server가 사용하는 포트를 인식할 수 있어야 합니다. Laonsill Server이 사용하는 포트가 20077 이라면 $LAONADE_HOME/conf.json 파일을 아래와 같이 수정합니다.

$ vi $LAONADE_HOME/conf.json

[conf.json]

[

    {

        “laonsill” : 20077,

        “autotune” : 14000,

        “soosemi” : 14001,

        “resource_manager” : 14002,

        “sdf_tool” : 14003

    }

]

 Laonade Agents는 4개의 Agent 프로세스들로 구성이 됩니다. 각 Agent 프로세스 들은 소켓으로 Laonade Service, Laonsill Server, 그리고 서로의 Agent Process들과 통신을 합니다. 따라서 각 Agent 프로세스들은 통신을 위한 1개의 포트를 가지고 있습니다. 각각의 Agent들이 사용하는 포트번호를 $LAONADE_HOME/conf.json 파일에서 지정할 수 있습니다. 그 값을 변경하지 않는다면 아래와 같이 각각의 프로세스는 기본 포트번호를 사용하게 됩니다.

Agent Process

포트번호

Autotune Server

14000

Soosemi Server

14001

Resource Manager Server

14002

SDF Tool Server

14003

 Laonade Agents 서버들은 한꺼번에 아래와 같이 실행할 수 있습니다.

$ start_server.py

$

3.1.3 Laonade Service 실행

 Laonade Service는 Laonade Agent 프로세스들과 소켓통신을 이용하여 원하는 정보를 얻습니다. 따라서 Laonade Service는 Laonade Agent들이 사용하고 있는 포트 번호를 인식할 수 있어야 합니다. Laonade Service는 $LAONADE_HOME/configs/0/config.json 파일에 Laonade Agent 프로세스가 사용하였던 포트로 수정해 주어야 합니다. 만약 Laonade Agent 프로세스들이 자신들이 사용하는 포트번호가 변경되지 않았다면 수정할 필요는 없습니다.

$ vi $LAONADE_HOME/configs/0/config.json

[config.json]

{

    “config” : {

        “HOST” : “localhost”,

        “PORT” : {

            “AUTOTUNE” : 14000,

            “MIDDLEWARE” : 14001,

            “RESOURCEMANAGER” : 14002,

            “TOOL” : 14003

        }

    }

}

Laonade Service는 node.js라는 웹서버를 통하여 서비스를 제공합니다. 웹 서버에서 제공하는 포트 번호가 15000번인 경우에는 아래와 같은 명령어로 실행시켜 줍니다.

$ node app.js --port 15000 --config 0

Laonade Server listening on port 15000

3.2 Laonade 사용 방법

3.2.1 Dataset

3.2.1.1 Datasets Page

Name, Build Type, File path, Image Count 및 생성날짜를 확인 할수 있으며, Delete 버튼으로 삭제 및 생성을 취소할수 있습니다.

경로에 데이터가 존재하지 않는 경우에는 Autotune / Training 에서 사용할 수 없습니다.

오른쪽 상단의 Add 버튼으로 새로운 데이터셋을 생성합니다.

다음은 데이터셋 화면입니다.

3.2.1.2 Datasets Add Page

Common

  • Dataset Name: 생성할 데이터셋의 이름을 입력합니다
  • Build Type: 생성할 데이터셋의 빌드 타입을 지정합니다. ImageSet, Annoset, MNIST 의 옵션이 있습니다.
  • Build Type: 생성할 데이터셋의 빌드 타입을 지정합니다. ImageSet, Annoset, MNIST 의 옵션이 있습니다.
  • Out Directory path: 데이터셋 파일을 생성할 디렉토리 경로입니다.
  • LabelMap Filepath: 데이터셋에 대한 레이블 정보가 있는 파일 경로입니다. Annoset Type 의 경우에는 반드시 지정해 주어야 합니다.

Annoset / ImageSet

  • Basepath: 레이블 파일의 이미지 경로의 Basepath 를 입력합니다.
  • Dataset Filepath: 데이터셋에 대한 정보 목록이 있는 파일의 경로를 입력합니다.
  • Shuffle: 이미지의 Shuffle 여부를 설정합니다.
  • Resize Width: 이미지를 넓이를 리사이징 할 경우 사용합니다.
  • Resize Height: 이미지를 높이를 리사이징 할 경우 사용합니다.

MNIST

  • Binary 로 된 MNIST 데이터셋의 이미지 파일 경로를 입력합니다.
  • Binary 로 된 MNIST 데이터셋의 레이블 파일 경로를 입력합니다.

다음은 데이터셋을 추가하는 화면입니다.

3.2.2 Autotune

3.2.2.1 Autotune Manager Page

Autotune Id, Algorithm, Problem, Base Network, Trial Count, Dataset, Image Count 및 생성날짜를 확인 할수 있으며, Delete 버튼으로 삭제할수 있습니다.

오른쪽 상단의 Add 버튼으로 새로운 오토튠을 생성합니다.

다음은 오토튠 매니저 화면입니다.

3.2.2.2 Autotune Add Page

Dataset: 데이터셋을 선택합니다.

Base Network: 네트워크를 선택합니다.

Algorithm: 알고리즘을 선택합니다.

Epochs: Epochs 을 선택합니다.

Trial Count: Trial Count 을 선택합니다. Trial Count 만큼 오토튠 하이퍼 파라미터가 생성됩니다.

다음은 오토튠을 추가하는 화면입니다.

3.2.3 Training

3.2.3.1 Training Manager Page

Name, Problem, Base Network, Best Param Measure, Dataset, Image Count 및 생성날짜를 확인 할수 있으며, View 버튼으로 트레이닝 진행상황 및 결과를 확인할수 있으며, Delete 버튼으로 삭제할수 있습니다.

오른쪽 상단의 Add 버튼으로 새로운 Training 프로젝트를 생성합니다.

다음은 트레이닝 매니저 화면입니다.

3.2.3.2 Training Add Page

데이터셋을 선택합니다.

다음은 데이터셋 선택화면입니다.

트레이닝할 네트워크를 선택합니다.

다음은 네트워크 선택화면입니다.

하이퍼 파라미터를 선택합니다.

선택한 데이터셋과 네트워크로 오토튠이 생성되어 있다면, Autotune Result Select 에서 적절한 하이퍼 파라미터를 자동으로 설정할수 있습니다.

다음은 하이퍼 파라미터 설정 화면입니다.

트레이닝 옵션을 설정합니다.

Save Best Param: 최적 파라미터 저장여부 옵션입니다.

Save Interval: 파라미터 저장 간격을 지정하는 옵션입니다.

Keep Interval Param Count: 저장하고 있을 파라미터의 갯수의 옵션입니다.

다음은 트레이닝 프로젝트 확인 및 옵션 설정 화면입니다.

3.2.3.3 Training View Page

트레이닝 진행 상황 및 결과를 확인할수 있으며, 현재 시스템의 리소스 현황을 확인할수 있습니다.

오른쪽 상단의 버튼을 통해 현재 트레이닝 프로젝트를 레퍼런스하여 새로운 인퍼런스 프로젝트를 생성할수 있습니다.

다음은 트레이닝 프로젝트 상세화면입니다.

3.2.4 Inference

3.2.4.1 Inference Manager Page

Name, Problem, Base Network, Best Param Measure, Dataset, Image Count 및 생성날짜를 확인 할수 있으며, View 버튼으로 인퍼런스 상세화면을 확인할수 있으며, Delete 버튼으로 삭제할수 있습니다.

다음은 인퍼런스 매니저 화면입니다

3.2.4.1 Inference View Page

Inference View 에서 인퍼런스 할 수 있는 모델 을 선택후 Start 버튼을 누릅니다.

팝업창이 뜨면 API NAME 를 설정한 후 실행합니다.

현재 서비스에 해당 API NAME를 사용할수 있는 multipart/formData 형식의 API 가 생성이 되며,

해당 주소로 단일 이미지 파일을 전송하여, API를 사용할수 있습니다.

Stop Inference 버튼으로 인퍼런스를 종료할 수 있습니다.

다음은 인퍼런스 중인 프로젝트가 하나 있는 Inference View 의 화면입니다.

3.3 Laonade 종료 방법

 Laonade 서버의 종료 방법은 아래와 같습니다.

3.3.1 Laonade Service 종료

 node app.js를 직접 실행 시킨 세션에서 ctrl+c 키를 눌러서 종료를 할 수 있습니다.

$ node app.js --port 15000 --config 0

Laonade Server listening on port 15000

^C

$

 다른 세션이나 혹은 background로 실행을 한 경우에는 직접 프로세스에 kill을 날려서 종료를 하도록 합니다.

$ ps -ef | grep node

laonbud   5660  1214  3 04:35 pts/0    00:00:00 node app.js --port 15000 --config 0

laonbud   5756  1214  0 04:35 pts/0    00:00:00 grep --color=auto node

$ skill -9 node

$ ps -ef | grep node

laonbud   6415  1214  0 04:36 pts/0    00:00:00 grep --color=auto node

[1]+  죽었음               node app.js --port 15000 --config 0

$

3.3.2 Laonade Agents 종료

아래와 같은 명령어로 프로세스들을 종료합니다.

$ stop_server.py

$

3.3.3 Laonsill Server 종료

Laonsill Server를 실행시킨 세션에서 ctrl + c로 종료를 시켜줍니다.

$ LaonSillServer

[2018/01/18 04:28:51:588800(1266/0)] LAONSILL engine starts

^C

$

다른 세션이나 혹은 background로 실행을 한 경우에는 직접 프로세스에 kill을 날려서 종료를 하도록 합니다.

$ ps -ef | grep LaonSillServer

laonbud   8689  1247  9 04:40 pts/1    00:00:01 LaonSillServer

laonbud   8724  1247  0 04:41 pts/1    00:00:00 grep --color=auto LaonSillServe

$ kill -9 8689

$ ps -ef | grep LaonSillServer

laonbud   8724  1247  0 04:41 pts/1    00:00:00 grep --color=auto LaonSillServe

[1]+  죽었음               LaonSillServer

$

Appendix A. Multi Instance 설정 및 실행

 본 장에서는  복수개의 GPU 카드를 가진 장비에서 복수개의 Laonade Service를 실행하는 방법에 대해서 기술합니다.

2개의 LaonSillServer 설정 및 실행

모든 LaonSillServer는 각자의 $LAONSILL_HOME을 가지고 있어야 합니다. 따라서 2번째 LaonSillServer를 위한 $LAONSILL_HOME을 만들어 주어야 합니다. 본 예제에서는 1번째 LaonSillServer의 $LAONSILL_HOME이 $HOME/LAONSILL_HOME에 만들어졌다고 가정 하겠습니다. 2번째 LaonSillServer의 $LAONSILL_HOME을 $HOME/LAONSILL_HOME2로 정의하여 아래와 같이 구성 합니다.

$ cd $HOME

$ mkdir LAONSILL_HOME2

$ cd LAONSILL_HOME2

$ ln -s ../LAONSILL_HOME/bin bin

$ ln -s ../LAONSILL_HOME/data data

$ ln -s ../LAONSILL_HOME/pyapi pyapi

$ ln -s ../LAONSILL_HOME/dev dev

$ ln -s ../LAONSILL_HOME/examples examples

$ ln -s ../LAONSILL_HOME/lib lib

$ ln -s ../LAONSILL_HOME/measure measure

$ ln -s ../LAONSILL_HOME/param param

$ mkdir dump

$ mkdir log

$ mkdir output_images

$ cp ../LAONSILL_HOME/*.conf .

$ cp ../LAONSILL_HOME/*.txt .

 ※ 주의사항

   링크를 걸지 말고 복사를 해도 상관없습니다. Laonsill 배포버전을 단순히 $HOME/LAONSILL_HOME2로 푸는 방식도 동작을 합니다. 다만 이렇게 링크를 걸어 주는 것은 공간 사용량을 줄이기 위한 방법일 뿐입니다.

 2번째 Laonsill Server에 대한 설정을 위해서 $HOME/LAONSILL_HOME2/laonsill.conf를 적절하게 수정합니다.

$ vi $HOME/LAONSILL_HOME2/laonsill.conf

[laonsill.conf]

         :

NETWORK_SAVE_DIR=/home/laonbud/LAONSILL_HOME2/param

IMAGEUTIL_SAVE_DIR=/home/laonbud/LAONSILL_HOME2/output_images

COLDLOG_DIR=/home/laonbud/LAONSILL_HOME2/log

HOTLOG_DIR=/home/laonbud/LAONSILL_HOME2/log

SYSLOG_DIR=/home/laonbud/LAONSILL_HOME2/log

BASE_DATA_DIR=/home/laonbud/LAONSILL_HOME2/data

COMMUNICATOR_LISTENER_PORT=20078

        :

아래와 같이 2개의 세션에서 Laonsill Server를 각각 실행해줍니다.

  • 1번 세션

$ LAONSILL_HOME=$HOME/LAONSILL_HOME CUDA_VISIBLE_DEVICES=”0” LaonSillServer

[2018/01/18 07:12:10:971903(2181/0)] LAONSILL engine starts

  • 2번 세션

$ LAONSILL_HOME=$HOME/LAONSILL_HOME2 CUDA_VISIBLE_DEVICES=”1” LaonSillServer

[2018/01/18 07:12:37:590741(2226/0)] LAONSILL engine starts

 ※ 주의사항

   $CUDA_VISIBLE_DEVICES는 해당 세션에서 어떠한 NVIDIA GPU Card를 사용할지를 결정하는 환경 변수입니다. 1번 LaonSillServer는 0번 GPU, 2번 LaonSillServer는 1번 GPU를 사용한다는 가정아래 위와 같이 환경변수값을 설정해 주었습니다.

2개의 Laonade Agents 실행하기

 $LAONADE_HOME/conf.json 파일을 열어서 2번째 Laonsill Server에 대한 정보를 추가합니다.

$ vi $LAONADE_HOME/conf.json

[conf.json]

[

    {

        "laonsill" : 20088,

        "autotune" : 14000,

        "soosemi" : 14001,

        "resource_manager" : 14002,

        "sdf_tool" : 14003

    },

    {

        "laonsill" : 20078,

        "autotune" : 14100,

        "soosemi" : 14101,

        "resource_manager" : 14102,

        "sdf_tool" : 14103

    },

]

Laonade Agent 프로세스들을 실행합니다.

$ start_server.py

$

2개의 Laonade Service  실행하기

Laonade Service에서 추가적인 설정을 위해서는 $LAONADE_HOME/configs 밑에 1번 Laonade Service에 대한 설정을 추가해야 합니다. 우선 0번 Laonade Service에 대한 설정 파일을 복사합니다.

$ cd $LAONADE_HOME/configs

$ mkdir 1

$ cp 0/config.json 1/.

1번 Laonade Service를 적절하게 수정합니다.

$ vi $LAONADE_HOME/configs/1/config.json

[config.json]

{

  "config": {

    "HOST": "localhost",

    "PORT": {

      "AUTOTUNE": 14100,

      "MIDDLEWARE": 14101,

      "RESORUCEMANAGER": 14102,

      "TOOL": 14103

    }

  }

}

2개의 세션을 열어서 각각의 세션마다 Laonade Service를 실행합니다.

  • 1번 세션

$ cd $LAONADE_SERVICE_HOME

$ node app.js --port 15000 --config 0

  • 2번 세션

$ cd $LAONADE_SERVICE_HOME

$ node app.js --port 15001 --config 1

Chapter 4. Laonsill Server

본 장에서는 Laonsill Server에 대한 간략한 설명과 Laonade 서비스의 Laonsill Server 활용 방법을 기술합니다.

4.1 Laonsill Framework 소개

 

 (주)Laonbud는 deep learning 기술을 쉽게 사용할 수 있는 Laonsill Framework를 개발했습니다. Laonsill은 C++ 언어 기반의 오픈소스 프레임워크입니다. 하지만 사용자의 편의성을 의해서 Python, C 인터페이스도 제공 합니다. Laonsill Framework는 GPGPU 시장의 절대적 강자인 NVIDIA에서 인증한 아시아에서 2번째, 국내에서는 최초의 deep learning framework 이다(https://developer.nvidia.com/deep-learning-frameworks). Apache 2.0 라이센스 기반으로 open source로 누구나 자유롭게 사용할 수 있습니다. 현재 github 사이트(https://github.com/laonbud/LaonSill)를 통해 일반 개발자들에게 제공을 합니다.

 

4.2 Laonade의 LaonSill Framework 활용

본 절에서는 Laonade의 LaonSill Framework를 활용 구조와 활용시에 사용이 되는 LaonSill Server의 유용한 파라미터 설정에 대한 설명을 기술합니다.

4.2.1 LaonSill Framework 활용 구조

 Laonsill Framework는 사용자가 deep learning 프로그램을 쉽게 작성할 수 있도록 다양한 형태의 모델을 지원합니다. Laonade은 Laonsill Framework의 server-client 모델을 활용 됩니다. 각각의 요소들에 대한 설명은 아래와 같습니다.

  • LaonSill Server

  LaonSill Server는 실제적인 deep learning 연산을 수행합니다. multi-thread 형태의 1개 프로세스로 제공 됩니다. LaonSill Client Library를 이용하여 다양한 deep learning 연산을 요청 받고, 처리하는 형태로 동작 합니다.

  • LaonSill Client Library

 LaonSill Server를 socket interface로 호출할 수 있는 라이브러리입니다. 현재 공유 라이브러리 형태로 지원하고 있습니다. C, C++, Python 인터페이스를 제공합니다.

  • LaonSill Python Module

 LaonSill Python Module은 LaonSill Server를 Server-Client 모델로써 다양한 deep learing 연산을 요청할 수 있게 설계된 모듈입니다. 내부적으로는 LaonSill Client Library를 호출하여 동작합니다.

  • Laonade

 Laonade는 사용자로부터 web interface를 통하여 원하는 명령을 입력 받습니다. Laonade는 요청받은 명령을 LaonSill Python Module을 호출하는 방식으로 LaonSill Server에게 deep learnig 연산을 전달하고, 그 결과를 받습니다. 자세한 설명은 Chapter 5. Laonade Agents, Chapter 6. Laonade Service에서 기술하니 해당 장들을 참고 합니다.

4.2.2 LaonSill Server 파라미터 설정

LaonSill Server에서는 사용자가 원하는 방식으로 서버를 설정할 수 있도록 파라미터 기능을 제공합니다. 본 관에서는 LaonSill Server에서 파라미터 설정 변경 방법과 Laonade를 잘 사용할 수 있도록 도움이 되는 LaonSill Server의 파라미터들에 대해서 기술합니다.

4.2.2.1 LaonSill Server 파라미터 설정 방법

 파라미터는 파라미터의 이름파라미터 값으로 이루어져 있습니다. SESS_COUNT라는 LaonSillServer에 붙을 수 있는 최대 세션 개수를 정의하는 파라미터 값을 20으로 설정한다고 가정하겠습니다. 아래와 같이 $LAONSILL_HOME/laonsill.conf 파일에 SESS_COUNT=20 이라는 문자열은 추가/수정하면 파라미터 변경이 가능합니다.

$ vi $LAONSILL_HOME/laonsill.conf

[laonsill.conf]

SESS_COUNT=20

변경된 파라미터 적용을 하려면 LaonSill Server, Laonade의 재부팅이 필요합니다. Laonade 종료와 Laonade 시작 방법은 Chapter 3. Getting Started 장을 참고 하시길 바랍니다.

4.2.2.2 유용한 LaonSill Server 파라미터 목록

Laonade에서 사용할만한 유용한 LaonSill Server 파라미터 목록은 다음과 같습니다:

parameter name

recommended value

description

SESS_COUNT

20

LaonSill Server에 최대로 동시에 접속할 수 있는 클라이언트 세션 최대값

COMMUNICATOR_REUSE_ADDR

1

LaonSill Server 재실행시에 종료되었던 LaonSill Server가 잡고 있던 네트워크 포트가 반환이 되지 않으면 부팅이 실패하게 된다. 종료된 LaonSill Server의 네트워크 반환을 기다리지 않고, 곧바로 부팅하고 싶은 경우에 파라미터 값을 1로 설정한다.

STOP_TRAIN_WHEN_GOT_NAN_LOSS

1

deep learning 학습시에 학습 하이퍼파라미터 값이 적절하지 않으면 loss가 무한대 혹은 NaN 값이 나올 수 있다. 이 경우에는 학습을 계속 진행해도 무의미하다. 무의미한 학습을 중단하고 싶다면 파라미터 값을 1로 설정한다.

COMMUNICATOR_LISTENER_PORT

적당한 숫자

LaonSill Server가 사용하는 포트번호를 지정할 수 있다. default 값을 20088 이다.

Chapter 5. Laonade Agents

본 장에서는 Laonade Agents의 동작 방식과 4개의 Laonade Agent들의 상세 설명에 대해서

기술합니다.

5.1 Laonade Agents 동작 방식

 Laonade는 Laonade Agents와 Laonade Service로 구성이 됩니다. Laonade Service가 사용자의 요청 사항을 처리하기 위해서 서버단에서 제공해야 할 여러가지 기능들이 필요합니다. Laonade Agents는 Laonade Service가 필요한 기능을 서버단에서 지원하기 위한 모듈 입니다. Laonade Agents는 실제 4개의 프로세스로 구성 됩니다. 각 Laonade Agent 프로세스들의 동작 방식은 아래와 같습니다.

  • Soosemi Server

Laonade Service의 요청을  JSON interface를 통해 입력받습니다. LaonSill interface를 통해서 LaonSill Server에게  Laonade Service로 부터 받은 요청을 전달합니다. 또한 Autotune Server에게 JSON interface를 통해서 최적 하이퍼파라미터 찾기 기능을 요청 합니다.

  • Autotune Server

Soosemi Server로 부터 요청받은 최적 하이퍼파라미터 찾기 요청을 수행합니다. 최적 하이퍼파라미터 찾는 과정에서 LaonSill Server와 LaonSill interface를 통해서 작업 수행을  LaonSill Server에게 요청합니다.

  • Resource Manager Server

Laonade Service의 JSON interface를 통한 요청을 받아서 적절한 리소스 사용 현황 정보를 반환 합니다.

  • SDF Tool Server

데이터셋 생성 및 여러 정보를 제공해주는 서버입니다. Laonade Service의  JSON interface를 통한 요청에 응답하는 형태로 구동됩니다.

5.2 Laonade Agents 상세 설명

본 절에서는 4개의 Laonade Agent 프로세스들에 대한 상세 설명을 기술합니다.

5.2.1 Soosemi Server

 Soosemi Server는 Laonade Service에서 LaonSill Server에게 요청하고 싶은 기능을 대행해주는 일종의 미들웨어 서버입니다. Laonade Service에서는 LaonSill에서 제공하는 인터페이스 언어(C, C++, Python)를 쉽게 수행하기 어렵습니다. 그 대안으로 JSON interface를 통한 소켓 연동을 제공하여 Laonade Service가 LaonSill Server의 기능을 이용할 수 있도록 인터페이스를 제공 합니다.

 

 이 외에도 최적 하이퍼파라미터 찾기 기능을 수행하는 Autotune Server를 쉽게 이용할 수 있도록 명령을 전달하고, 상태를 관리하는 역할도 수행합니다.  

Soosemi Server에서 제공하는 기능은 아래와 같습니다.

function

description

Note

train_network

네트워크 학습 요청을 LaonSill Server에게 보낸다.

get measure names

학습을 요청한 네트워크에서 iteration 별 loss, accuracy등의 측정할 수 있는 항목의 이름들을 반환한다.

get measures

학습을 요청한 네트워크에서 iteration 별 loss, accuracy등의 측정할 수 있는 항목의 값들을 반환한다.

get measures from file

학습된 네트워크에서 iteration 별 loss, accuracy등의 측정할 수 있는 항목의 값들을 반환한다.

get network info

학습된 네트워크의 정보(ex. 네트워크의 hyper parameter, 네트워크 파라미터의 저장 경로)를 반환한다.

train hyperparam

hyperparamter의 autotune 기능을 수행한다.

send network id

autotune server에서 학습한 네트워크 ID를 전달 받는다.

※ autotune server에서 호출하는 기능. 그 외에는 Laon Service에서 호출

get train hyperparam status

autotune 상태(학습에 사용한 network ID 리스트, 학습 완료 여부)를 반환 한다.

delete network

사용이 완료된 네트워크를 제거 한다.

create inference network

inference 서비스를 시작한다.

destory inference network

inference 서비스를 종료한다.

run classification network

classification network inference 기능을 수행 한다.

run object detection network

object detection network inference 기능을 수행 한다.

5.2.2 Autotune Server

적절한 하이퍼파라미터 설정은 네트워크 학습 성능에 큰 영향을 주게 됩니다. 일반적으로 최적의 하이퍼파라미터를 찾기 위해서는 기술자가 직접 파라미터값을 변경해가며 Training과정을 반복하여 결과를 비교하는 방식으로 찾아냅니다.

Autotune은 학습에 필요한 여러 하이퍼파라미터터들을 자동으로 최적화 해주는 기능입니다. Autotune은 자동화를 통해 인력의 낭비를 줄여주고 실제로 일반적인 경우 사람이 직접 하이퍼파라미터 최적값을 찾는 것보다 Autotune 알고리즘으로 최적값을 찾아내는 것이 더 좋은 결과를 냅니다.

5.2.2.1 Laonade에서 사용되는 하이퍼파라미터 목록 예시

파라미터 이름

타입

범위

기본값

batchSize

정수형

1 ~

1

학습할 데이터를 얼만큼 묶어서 학습하는지에 대한 하이퍼파라미터.

예를 들어 이 값이 32라면 32장의 이미지를 동시에 학습한다는 의미.

epochs

정수형

1 ~

1

하나의 데이터를 몇번 반복해서 학습할 것인지에 대한 하이퍼파라미터.

stepSize

정수형

1 ~

1

1개의 step이 몇번의 iteration으로 이루어져 있는지를 정의하는 하이퍼파라미터.

예를들어서 현재 학습이 20000번의 iteration을 진행하였고, stepSize가 20이라면

1000번째 step을 진행하는 것으로 볼 수 있음.

스텝은 추후에 lrPolicy가 Step인 경우에 base learning rate를 조절하는데 활용이 됨.

baseLearningRate

실수형

0.00001 ~ 0.1

0.001

학습은 각 레이어의 gradient를 적용하는 과정으로 되어 있음.

그 gradient를 어느 비율로 적용할지를 정의하는 하이퍼파라미터.

power

실수형

1.0 ~ 4.0

4.0

lrPolicy의 값이 polynomial일때 learning rate 값을 결정해주는 변수.

momentum

실수형

0.6 ~ 1.0(미만)

0.9

momentum value

weightDecay

실수형

0.0(초과) ~ 1.0(미만)

0.001

weight decay value

gamma

실수형

0.0 ~ 1.0

0.0

learning rate 값을 결정해주는 변수

beta1

실수형

0.0(초과) ~ 1.0(미만)

0.9

Adam 옵티마이저 알고리즘에서 사용하는 변수

beta2

실수형

0.0(초과) ~ 1.0(미만)

0.999

Adam 옵티마이저 알고리즘에서 사용하는 변수

decayRate

실수형

0.0(초과) ~ 1.0(미만)

0.9

RMSprop 옵티마이저 알고리즘에서 사용하는 변수

optimizer

카테고리

["Momentum", "Vanilla", "Nesterov", "Adagrad", "RMSprop", "Adam"]

"Momentum"

학습 옵티마이징 알고리즘을 선택하는 하이퍼파라미터

lrPolicy

카테고리

["Fixed", "Step", "Poly", "Multistep"]

"Fixed"

learning rate 값을 iteration이 변화함에 따라서 변경하는 정책에 대한 하이퍼파라미터

5.2.2.2 Autotune Server로 최적화 할 수 있는 하이퍼파라미터

AutoTune으로 최적화할 수 있는 하이퍼파라미터들의 종류

가질 수 있는 값의 범위

configs

baseLearningRate

0.0001~0.1

optimizer

Momentum, Adam, Adagrad

Momentum 선택 시

의존 Hyperparameter 들

momentum

0.5 ~ 0.99

weightDecay

0.0001 ~ 0.1

Adam 선택 시

의존 Hyperparameter 들

beta1

0.6 ~ 0.9

beta2

0.9 ~ 0.999

Adagrad 선택 시

따로 없음.

layers

ip1(Fully connected)의  nOut

100, 500, 1000

conv2(Conv)의 filterDim.filters

10, 50, 100

conv2(Conv)의 filterDim.rows, filterDim.cols : rows x cols

3x3, 5x5, 7x7

5.2.2.2 Autotune 알고리즘 종류

현재 라온에이드는 3가지 베이지안 옵티마이저 모델(GP, TPE, SMAC)을 통한 최신 하이퍼파라미터 튜닝 기법을 제공합니다.

1) GP (Gaussian Process) : 가우시안 프로세스를 이용하여 최적화 값을 찾는 알고리즘입니다. skopt가 이에 해당합니다.

2) TPE (Tree of Parzen Estimators) :  SMBO (sequential model-based optimization) 방식입니다. hyperopt가 이에 해당합니다.

3) SMAC (Sequential Model-based Algorithm Configuration) : 랜덤포레스트를 최적화에 이용하는 알고리즘으로 SMBO와 ROAR(Randomized Online Aggressive Racing)을 결합한 방식입니다.

5.2.3. SDF Tool Server

5.2.3 SDF TOOL SERVER

SDF TOOL SERVER는  Laonade에서 SDF 파일 생성, 상태 조회, 생성 취소의 역할을 담당합니다. SDF 파일은 LaonSill의 네트워크에서 데이터셋을 다루는 기본 단위의 파일입니다.

5.2.3.1 SDF 파일 생성

현재 SDF TOOL SERVER는 크게 아래 3가지 종류의 SDF 파일 생성을 다루고 있습니다.

  1. MNIST SDF 파일

MNIST SDF 파일은 MNIST 데이터셋을 SDF 파일로 만든 것입니다. MNIST 데이터셋은 위의 그림과 같이 손으로 쓴 숫자 0 ~ 9 이미지를 모아놓은 데이터셋입니다. 딥러닝에서 다루는 아주 기본적인 데이터셋으로                           

http://yann.lecun.com/exdb/mnist/ 에서 다운로드 받을 수 있습니다.

  1. IMAGESET SDF 파일

        

IMAGESET SDF 파일은 이미지 분류를 목적으로 하는 데이터셋을 SDF 파일로 만든 것입니다. 이미지 분류를 목적으로 하는 데이터셋은 이미지와 해당 이미지의 레이블 쌍을 모아 구성됩니다. 대표적으로 IMAGENET (http://www.image-net.org/)와 CIFAR (https://www.cs.toronto.edu/~kriz/cifar.html) 등이 있습니다.

  1. ANNOSET SDF 파일

ANNOSET SDF 파일은 객체 검출을 목적으로 하는 데이터셋을 SDF 파일로 만든 것입니다. 객체 검출을 목적으로 하는 데이터셋은 이미지와 이미지 내의 객체 위치와 해당 객체의 레이블 정보를 담고 있는 XML 파일의 쌍을 모우 구성됩니다. 대표적으로 PASCAL VOC (http://host.robots.ox.ac.uk/pascal/VOC/)와 MS COCO (http://cocodataset.org/) 등이 있습니다.

5.2.3.2 SDF 파일 생성 상태 조회

SDF TOOL SERVER에서는 현재 진행중인, 또는 종료된 SDF 파일 생성 작업의 상태를 조회할 수 있습니다. 생성 상태 조회를 통해 생성 상태, 생성 작업 진행 정도이 정보를 확인할 수 있습니다.

5.2.3.3 SDF 파일 생성 취소

SDF TOOL SERVER에서는 현재 진행중인 SDF 파일 생성 작업을 취소할 수 있습니다. 생성 취소 요청을 통해 현재 진행중인 SDF 파일 생성 작업을 취소하고 상태 조회와 동일한 정보를 확인할 수 있습니다.

5.2.3.4 SDF TOOL 파일 포맷

  • 레이블 맵 파일

레이블 맵 파일은 데이터셋의 각 레이블들의 정보를 담고 있는 파일입니다. JSON 파일로 저장되고 다음과 같은 객체 정보의 목록을 담고 있습니다.

Field

Type

Required

Description

name

문자열

required

레이블의 내부용 이름

label

정수

required

레이블의 인덱스

displayName

문자열

required

레이블의 외부 표시용 이름

color

정수 목록

optional

레이블에 지정된 RGB 컬러

[레이블 맵 파일 예시]

[

    {  

      "name": "none_of_the_above",

      "label": 0,

      "display_name": "background"

    },  

    {  

      "name": "aeroplane",

      "label": 1,

      "display_name": "aeroplane",

      "color": [10, 163, 240]

    },  

    {  

      "name": "bicycle",

      "label": 2,

      "display_name": "bicycle",

      "color": [44, 90, 130]

    },  

    {  

      "name": "bird",

      "label": 3,

      "display_name": "bird",

      "color": [239, 80, 0]

    },  

    {  

      "name": "boat",

      "label": 4,

      "display_name": "boat",

      "color": [37, 0, 162]

    },  

]

  • 데이터셋 파일 포맷

데이터셋 파일은 이미지와 해당 이미지에 대한 레이블 정보 (ANNOSET의 경우 레이블 정보 XML파일의 경로)를 담고 있는 파일입니다. 일반 TXT 파일로 저장되고 다음과 같은 형태로 구성됩니다.

  1. IMAGESET 데이터셋 파일 포맷        

[기준 경로에서의 이미지 상대 경로][스페이스][레이블]

[IMAGESET 데이터셋 파일 예시]

image/000001.jpg 0

image/000002.jpg 7

...

image/001000.jpg 1

  1. ANNOSET 데이터셋 파일 포맷        

[기준 경로에서의 이미지 상대 경로][스페이스][기준 경로에서의 레이블 파일 상대 경로]

[ANNOSET 데이터셋 파일 예시]

image/000001.jpg xml/000001.xml

image/000002.jpg xml/000002.xml

...

image/001000.jpg xml/001000.xml

  • ANNOSET 레이블 파일 포맷

ANNOSET 레이블 파일은 해당 레이블 파일과 쌍으로 존재하는 이미지 내의 객체들의 정보를 저장하고 있는 파일입니다. XML 포맷으로 저장되고 다음과 같은 정보를 담고 있습니다.

[annotation 객체]

Field

Type

Required

Description

size

객체

required

이미지의 Dimension 정보

object

객체

required

이미지상의 객체 위치, 레이블 정보

[size 객체]

Field

Type

Required

Description

width

정수

required

이미지의 픽셀 단위 너비

height

정수

required

이미지의 픽셀 단위 폭

depth

정수

required

이미지의 채널수 (컬러:3, 흑백: 1)

[object 객체]

Field

Type

Required

Description

name

문자열

required

객체의 문자열 레이블

difficult

정수

required

객체 인식 난이도 (쉬움: 0, 어려움: 1)

bndbox

객체

required

객체의 위치 정보

[bndbox 객체]

Field

Type

Required

Description

xmin

정수

required

객체 영역 좌상단 픽셀 단위의 x좌표

ymin

정수

required

객체 영역 좌상단 픽셀 단위의 y좌표

xmax

정수

required

객체 영역 우하단 픽셀 단위의 x좌표

ymax

정수

required

객체 영역 우하단 픽셀 단위의 y좌표

[ANNOSET 레이블 파일 예시]

<annotation>

    <size>

        <width>500</width>

        <height>333</height>

        <depth>3</depth>

    </size>

    <object>

        <name>cow</name>

        <difficult>0</difficult>

        <bndbox>

            <xmin>26</xmin>

            <ymin>91</ymin>

            <xmax>229</xmax>

            <ymax>278</ymax>

        </bndbox>

    </object>

    <object>

        <name>cow</name>

        <difficult>0</difficult>

        <bndbox>

            <xmin>175</xmin>

            <ymin>39</ymin>

            <xmax>500</xmax>

            <ymax>277</ymax>

        </bndbox>

    </object>

</annotation>

5.2.4 Resource Manager

Resource Manager 는 GPU와 CPU의 리소스 사용량에 대한 정보를 실시간으로 모니터링할 수 있도록 해주는 서비스입니다.

 만약 multi-GPU 환경이라면 각각의 GPU 정보를 모두 확인할 수도 있습니다.

<Resource Manager를 통해 확인할 수 있는 리소스 정보들>

리소스 정보

설명

GPU Free Memory

GPU 총 메모리 대비 남은 메모리

GPU Loaded

GPU 부하율

System Free Memory

CPU 총 메모리 대비 남은 메모리

CPU Loaded

CPU 부하율

Chapter 6. Laonade Service

6.1 Introduction

Laonade는 쉽게 접근하고 사용 할수 있는 Deep Learning Servcie 이며,

Laonade 에서 제공하는 Network 와 Hyper Parameter 를 통해 Dataset만 있으면,

누구라도 손쉽게 Project 를 만들어 테스트 할수 있는 Service 입니다.

6.2 Networks

6.2.1 Image Classification Networks

6.2.1.1 VGG 16

VGG 16은 대용량의 네트워크가 이미지 데이터셋을 학습하고 분류하는 환경에서 컨볼루셔널 (Convolutional) 네트워크의 깊이가 분류 정확도에 미치는 영향을 알아보기 위한 연구 과정에서 만들어진 네트워크입니다.

이 연구에서는 매우 작은 (3 x 3) 컨볼루션 필터를 사용하는 네트워크에서 네트워크 깊이에 따른 성능 평가를 진행하였는데, 연구 결과 네트워크 깊이를 16 ~ 19 정도로 늘릴때까지 상당한 성능 향상을 보인다는 사실을 알아내게 되었습니다.

[Fig. 깊이에 따른 VGG 네트워크 설정]

이러한 연구 결과가 반영된 네트워크가 바로 VGG 네트워크입니다. VGG 네트워크는 ImageNet 데이터셋 뿐 아니라 다양한 이미지 데이터셋에 대해서도 당시 최고의 분류 성능을 달성하면서 다양한 환경에서 잘 작동하는 네트워크 모델임을 입증하였습니다. 이 때 공개된 2개의 네트워크가 있는데 이 중 하나가 바로VGG 16 네트워크입니다.

[Fig. VGG 네트워크 설정에 따른 성능]

6.2.1.2 INCEPTION

Inception 네트워크는 네트워크 내부의 계산 자원 활용을 향상시키는 것을 목적으로 한 연구입니다.

네트워크 내부의 계산 자원 활용 향상은 전체 계산 비용은 일정하게 유지하면서 네트워크의 깊이를 늘리고 폭을 넓힐 수 있도록 신중하게 네트워크를 디자인하여 달성할 수 있었습니다. 품질을 최적화하기 위해 네트워크의 구조적인 결정은 헵의 원리 (Hebbian Priciple)와 복수 스케일 처리에 기반하였습니다.

증가된 네트워크 모델 사이즈와 계산 비용은 대부분의 태스크에서 즉각적인 성능 향상으로 이어지나, 계산 효율이나 적은 수의 파라미터는 모바일 비전이나 빅데이터 시나리오와 같은 다양한 사용 예에서 여전히 중요한 요소입니다.

이 연구에서는 네트워크가 컨볼루션 팩토리제이션과 같은 여러가지 기법들을 기반으로 증가된 계산 능력을 최대한 효과적으로 활용하도록하여 네트워크의 규모가 커지는 방법들을 모색했습니다.

[Fig. 5x5 컨볼루션을 대체하는 미니 네트워크]

[Fig. 5x5 컨볼루션을 2개의 3x3 컨볼루션으로 대체하는 Inception 모듈]

Inception 네트워크에 대한 성능 테스트 결과 대용량 이미지셋인 ImageNet 테스트 데이터셋에 대해 21.2%의 TOP-1 에러와 5.6%의 TOP-5 에러를 달성하였고 Inception 네트워크를 복수개 조합하는 방식으로 17.3%의 TOP-1 에러와 3.5% TOP-5 에러를 달성하는 결과를 얻었습니다.

[Fig. Inception 네트워크 성능 비교]

6.2.1.3 RESNET

일반적으로 네트워크의 깊이가 깊어질수록 학습하기 더 어려워지는데, ResNet 네트워크는 이전의 네트워크보다 상당히 더 깊은 네트워크를 쉽게 학습하기 위해 Residual 학습 프레임워크를 제시합니다.

[Fig. 일반 네트워크에서 깊이에 따른 학습/테스트 에러 비교]

[Fig. Residual 학습]

이 연구에서는 참조되지않는 함수를 학습하는 대신, 레이어의 입력을 참조하는 Residual 함수를 학습하도록 명시적으로 레이어들을 재구성하고 이러한 Residual 네트워크가 더 최적화하기 쉽고 상당히 깊은 네트워크로부터 높은 정확도를 획득하기 더 쉽다는 경험적인 증거를 제시합니다.

[Fig. ResNet 네트워크에서 깊이에 따른 학습/테스트 에러 비교]

이 연구는 대용량 이미지셋인 ImageNet 테스트 데이터셋에 대해 최대 152 레이어까지의 깊은 네트워크들을 평가합니다. 이는 VGG 네트워크보다 최대 8배 더 깊지만 더 낮은 복잡도를 가지고 있습니다. 이러한 Residual 네트워크들을 조합하여 테스트결과 3.57%의 에러률을 달성합니다.

[Fig. ResNet 네트워크 성능 비교]

네트워크의 깊이라는 표현력은 많은 시각적인 인식 태스크에서 매우 중요합니다. 단지 매우 깊은 네트워크라는 이유로 ResNet은 COCO 객체 검출 데이터셋에 대해 상대적으로 28%의 성능 향상을 달성합니다.

6.2.2 Object Detection Networks

6.2.2.1 Faster R-CNN

Faster R-CNN은 객체의 위치를 추정하기 위한 영역 제안 (Region Proposal) 알고리즘에 기반하고 있는 네트워크입니다. 객체 검출 분야에서의 SPPnet과 Fast R-CNN 네트워크들과 같은 성능 향상은 검출 네트워크에서 실행 시간을 단축하였지만 이러한 영역 제안 연산은 여전히 병목 지점입니다.

[Fig. 영역 제안 알고리즘에 따른 처리 속도 비교]

이 연구에서는 영역 제안 네트워크 (Region Proposal Network-RPN)를 제시하는데 이 영역 제안 네트워크가 검출 네트워크와 전체 이미지에 대한 컨볼루셔널 특징값들을 공유하도록 하여 영역 제안에 필요한 비용을 많은 부분 줄였습니다.

[Fig. Faster R-CNN의 구조]

RPN은 객체의 위치 검출과 객체 스코어를 동시에 예측하는 완전한 컨볼루션 네트워크입니다. RPN은 검출을 위해 Fast R-CNN에서 사용되는 고품질의 영역 제안을 생성하기 위해 End-to-End로 학습됩니다. 그리고 RPN을 Fast R-CNN과 하나의 네트워크로 통합하여 RPN 네트워크가 통합된 네트워크에게 어떤 영역을 확인해야 하는지 알려주게 됩니다.

연구를 발표한 당시 VGG 16과 같은 매우 깊은 네트워크를 기반으로 한 Faster R-CNN 네트워크는 5FPS의 성능을 보였고 다양한 객체 검출 데이터셋에서 최고의 정확도를 보였습니다.

[Fig. PASCAL VOC 2007 테스트셋에 대한 성능 비교]

6.2.2.2 SSD

SSD 네트워크는 하나의 네트워크를 사용하여 이미지에서 객체를 검출하는 방법을 제시합니다.

SSD는 객체 검출 결과인 객체 위치를 표현할 수 있는 전체의 연속적인 직사각형 공간을 특징맵의 각 위치별로 다른 비율과 다른 스케일의 제한된 수의 기본 직사각형으로만 구성된 불연속적인 공간으로 제한하는 방법에 기반합니다.

[Fig. SSD 네트워크 기본 직사각형 구성]

예측 시점에서 네트워크는 각 기본 직사각형에 대해 전체 카테고리별의 오브젝트가 존재할 가능성 스코어를 계산하고, 각 기본 직사각형을 실제 객체의 형태에 맞도록 조정할 수 있는 조정값들을 계산합니다. 그리고 다양한 사이즈의 객체를 검출하기 위해 다양한 해상도를 가진  복수개의 특징맵들로부터의 예측을 조합하는 방법을 사용합니다.

[Fig. SSD 구성]

SSD 네트워크는 영역 제안 생성이나 이어지는 픽셀 또는 특징맵 재샘플링 과정을 제거하고 전체 연산을 하나의 네트워크로 통합하기 때문에 기존에 객체 영역 제안을 필요로 하는 네트워크들보다 상대적으로 간단한 구조를 가집니다. 이로인해 SSD 네트워크는 학습하기 쉽고 다른 객체 검출을 필요로 하는 시스템에 통합하기 직관적입니다.

여러 객체 검출용 데이터셋에 대한 실험 결과는 SSD가 매우 빠르고 정확하다는 것을 보여줍니다. 논문에서 제안하고 있는 두 가지 모델 중 상대적으로 작은 모델의 경우 VOC2007 테스트셋에 대해 74.3mAP의 정확도와 59FPS의 처리속도를, 큰 모델의 경우 76.9mAP의 정확도와 22FPS의 처리속도를 얻을 수 있습니다.

[Fig. PASCAL VOC 2007 테스트셋에 대한 성능 비교]

6.2.2.3 YOLO

YOLO는 You Only Look Once의 줄임말로 한번만 본다는 뜻의 Object Detection 시스템입니다.

YOLO는 간단한 네트워크 구조로 속도가 굉장히 빨랐고 그 이전의 다른 Object Detection 시스템들과 비교했을 때 정확도가 2배정도 높았습니다.

지금은 차기버전인 YOLO v2가 발표된 상태입니다.

[YOLO Original버전과 YOLO v2의 비교]

YOLO v2는 몇가지의 변화를 통해서 Original 버전보다 mAP와 recall이 상당히 높아졌습니다. 또한 Darknet19 네트워크를 이용하여 속도도 빨라졌습니다.

6.3 Dataset

LAONADE 에서는 sdf 확장자를 가진 파일로 데이터셋을 적용할수 있습니다.

데이터셋을 생성할 때 필요한 정보는 다음과 같습니다.

Common

  • Dataset Name: 생성할 데이터셋의 이름을 입력합니다
  • Build Type: 생성할 데이터셋의 빌드 타입을 지정합니다. ImageSet, Annoset, MNIST 의 옵션이 있습니다.
  • Build Type: 생성할 데이터셋의 빌드 타입을 지정합니다. ImageSet, Annoset, MNIST 의 옵션이 있습니다.
  • Out Directory path: 데이터셋 파일을 생성할 디렉토리 경로입니다.
  • LabelMap Filepath: 데이터셋에 대한 레이블 정보가 있는 파일 경로입니다. Annoset Type 의 경우에는 반드시 지정해 주어야 합니다.

Annoset / ImageSet

  • Basepath: 레이블 파일의 이미지 경로의 Basepath 를 입력합니다.
  • Dataset Filepath: 데이터셋에 대한 정보 목록이 있는 파일의 경로를 입력합니다.
  • Shuffle: 이미지의 Shuffle 여부를 설정합니다.
  • Resize Width: 이미지를 넓이를 리사이징 할 경우 사용합니다.
  • Resize Height: 이미지를 높이를 리사이징 할 경우 사용합니다.

MNIST

  • Binary 로 된 MNIST 데이터셋의 이미지 파일 경로를 입력합니다.
  • Binary 로 된 MNIST 데이터셋의 레이블 파일 경로를 입력합니다.

데이터셋의 크기에 따라 시간이 오래 걸릴수도 있으며, 데이터셋의 생성 진행과정은 상단 정보창에서 확인할수 있습니다.

데이터셋을 오토튠이나 트레이닝에서 사용할 경우 네트워크 타입에 맞게 설정해야합니다.

BuildType이 MNIST 경우 LeNet 네트워크에서 사용할수 있습니다.

BuildType이 Imageset 경우 Inception, Residual, VGG16 네트워크에서 사용할수 있습니다.

BuildType이 Annoset 경우 FRCNN, SSD, YOLO 네트워크에서 사용할수 있습니다.

데이터셋 생성 중에는 다른 데이터셋을 생성할 수 없습니다.

다음은 데이터셋을 생성 중일 경우의 상단 화면입니다.

6.4 Autotune

오토튠은 적절한 하이퍼 파라미터를  자동으로 생성해 줍니다.

동일 데이터와 동일 네트워크로 오토튠이 완료된 하이퍼 파라미터가 있을시 트레이닝 네트워크 생성시에 사용할 수 있습니다.

오토튠을 생성할 경우 필요한 정보는 다음과 같습니다.

Dataset: 데이터셋을 선택합니다.

Base Network: 네트워크를 선택합니다.

Algorithm: 알고리즘을 선택합니다.

Epochs: Epochs 을 선택합니다.

Trial Count: Trial Count 을 선택합니다. Trial Count 만큼 오토튠 하이퍼 파라미터가 생성됩니다.

데이터셋과 네트워크 설정이 다음과 같아야 생성이 가능합니다.

BuildType이 MNIST 경우 LeNet 네트워크에서 사용할수 있습니다.

BuildType이 Imageset 경우 Inception, Residual, VGG16 네트워크에서 사용할수 있습니다.

BuildType이 Annoset 경우 FRCNN, SSD, YOLO 네트워크에서 사용할수 있습니다.

오토튠 생성은 데이터셋 또는 설정에 따라 시간이 오래 걸릴 수 있으며,

오토튠 생성중에는 트레이닝 프로젝트 생성/오토튠/인퍼런스 를 사용할수 없습니다.

다음은 오토튠을 생성 중일 경우의 상단 화면입니다.

6.5 Training

트레이닝 프로젝트 생성을 통해 학습을 진행할수 있으며,

트레이닝 프로젝트 생성에 필요한 정보는 다음과 같습니다.

Dataset: Laonade 에서 생성한 데이터셋

Network: Laonade 에서 제공하는 네트워크

Hyper Parameter: 직접 입력하거나 오토튠을 통한 결과를 가져올수 있습니다.

Save Best Param: 최적 파라미터 저장여부 옵션입니다.

Save Interval: 파라미터 저장 간격을 지정하는 옵션입니다.

Keep Interval Param Count: 저장하고 있을 파라미터의 갯수의 옵션입니다.

데이터셋과 네트워크 설정이 다음과 같아야 생성이 가능합니다.

BuildType이 MNIST 경우 LeNet 네트워크에서 사용할수 있습니다.

BuildType이 Imageset 경우 Inception, Residual, VGG16 네트워크에서 사용할수 있습니다.

BuildType이 Annoset 경우 FRCNN, SSD, YOLO 네트워크에서 사용할수 있습니다.

트레이닝 프로젝트 생성은 데이터셋 또는 설정에 따라 시간이 오래 걸릴 수 있으며,

트레이닝 프로젝트 생성중에는 트레이닝 프로젝트 생성/오토튠/인퍼런스 를 사용할수 없습니다.

트레이닝 진행중에는 Accuracy, Loss 등의 정보를 그래프로 확인할수 있으며

완료된 후 해당 프로젝트로 손쉽게 인퍼런스 프로젝트 생성이 가능합니다.

다음은 트레이닝 프로젝트  생성 중일 경우의 상단 화면입니다.

6.6 Inference

인퍼런스 프로젝트는 트레이닝 프로젝트로 부터 생성이 가능하며,

인퍼런스 프로젝트가 생성이 되면 현재 서비스에 해당 API NAME를 사용할수 있는 multipart/formData 형식의 API 가 생성이 되며,

설정한 주소로 단일 이미지 파일을 전송하여, API를 사용할수 있습니다.

인퍼런스 서비스 중에는 트레이닝 프로젝트 생성/오토튠/인퍼런스 를 사용할수 없습니다.

다음은 인퍼런스 중일 경우의 상단 화면입니다.

Time Series Data Prediction

DBN, RNN 등을 이용해 시리얼 데이터 예측

Image Classification

GoogLeNet, vgg 16 등을 이용한 이미지 인식

Analytics Application

deconvolution, gradient ascent을 이용한 neural network 분석 및 응용

Health Care

Deep Learning을 의료 분야의 문제에 적용. ex) 당뇨병 진단, 안면 마비 진단

Contact

경기도 수원시 영통구 광교산로 154-42 경기대학교 창업보육센터 611호

EMAIL : LAONBUD@LAONBUD.COM

Support