blob: a77f84ee34c5f72964aa562f0d0a8180349c413b [file] [log] [blame]
# 퀵 스타트
---
## SINGA 인스톨
SINGA 인스톨은 [여기](installation.html)를 참조하십시오.
### Zookeeper 실행
SINGA 트레이닝은 [zookeeper](https://zookeeper.apache.org/)를 이용합니다. 우선 zookeeper 서비스가 시작되어 있는지 확인하십시오.
준비된 thirdparty 스크립트를 사용하여 zookeeper를 설치 한 경우 다음 스크립트를 실행하십시오.
#goto top level folder
cd SINGA_ROOT
./bin/zk-service.sh start
(`./bin/zk-service.sh stop` // zookeeper 중지).
기본 포트를 사용하지 않고 zookeeper를 시작시킬 때는 `conf/singa.conf`을 편집하십시오.
zookeeper_host : "localhost : YOUR_PORT"
## Stand-alone 모드에서 실행
Stand-alone 모드에서 SINGA을 실행할 때, [Mesos](http://mesos.apache.org/) 와 [YARN](http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html) 과 같은 클러스터 관리툴을 이용하지 않는 경우를 말합니다.
### Single 노드에서의 트레이닝
하나의 프로세스가 시작됩니다.
예를 들어,
[CIFAR-10](http://www.cs.toronto.edu/~kriz/cifar.html) 데이터 세트를 이용하여
[CNN 모델](http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks)을 트레이닝 시킵니다.
하이퍼 파라미터는 [cuda-convnet](https://code.google.com/p/cuda-convnet/)에 따라 설정되어 있습니다.
자세한 내용은 [CNN 샘플](cnn.html) 페이지를 참조하십시오.
#### 데이터와 작업 설정
데이터 세트 다운로드와 Triaing 이나 Test 를 위한 데이터 샤드의 생성은 다음과 같이 실시합니다.
cd examples/cifar10/
cp Makefile.example Makefile
make download
make create
Training 과 Test 데이터 세트는 각각 *cifar10-train-shard*
그리고 *cifar10-test-shard* 폴더에 만들어집니다. 모든 이미지의 특징 평균을 기술한 *image_mean.bin* 파일도 함께 생성됩니다.
CNN 모델 트레이닝에 필요한 소스코드는 모두 SINGA에 포함되어 있습니다. 코드를 추가 할 필요는 없습니다.
작업 설정 파일(*job.conf*) 을 지정하여 스크립트(*../../bin/singa-run.sh*)를 실행합니다.
SINGA 코드를 변경하거나 추가 할 경우는, 프로그래밍가이드 (programming-guide.html)를 참조하십시오.
#### 병렬화 없이 트레이닝
Cluster Topology의 기본값은 하나의 worker와 하나의 server가 있습니다.
데이터와 모델의 병렬 처리는 되지 않습니다.
트레이닝을 시작하기 위하여 다음 스크립트를 실행합니다.
# goto top level folder
cd ../../
./bin/singa-run.sh -conf examples/cifar10/job.conf
현재 실행중인 작업의 리스트를 보려면
./bin/singa-console.sh list
JOB ID | NUM PROCS
---------- | -----------
24 | 1
작업을 종료하려면
./bin/singa-console.sh kill JOB_ID
로그 및 작업 정보는 */tmp/singa-log* 폴더에 저장됩니다.
*conf/singa.conf* 파일의 `log-dir`에서 변경 가능합니다.
#### 비동기 병렬 트레이닝
# job.conf
...
cluster {
nworker_groups : 2
nworkers_per_procs : 2
workspace : "examples/cifar10/"
}
여러 worker 그룹을 실행함으로써 [비동기 트레이닝](architecture.html)을 할 수 있습니다.
예를 들어, *job.conf* 을 위와 같이 변경합니다.
기본적으로 하나의 worker 그룹이 하나의 worker를 갖도록 설정되어 있습니다.
위의 설정은 하나의 프로세스에 2개의 worker가 설정되어 있기 때문에 2개의 worker 그룹이 동일한 프로세스로 실행됩니다.
결과 인메모리 [Downpour](frameworks.html) 트레이닝 프레임워크로 실행됩니다.
사용자는 데이터의 분산을 신경 쓸 필요는 없습니다.
랜덤 오프셋에 따라 각 worker 그룹에 데이터가 보내집니다.
각 worker는 다른 데이터 파티션을 담당합니다.
# job.conf
...
neuralnet {
layer {
...
sharddata_conf {
random_skip : 5000
}
}
...
}
스크립트 실행 :
./bin/singa-run.sh -conf examples/cifar10/job.conf
#### 동기화 병렬 트레이닝
# job.conf
...
cluster {
nworkers_per_group : 2
nworkers_per_procs : 2
workspace : "examples/cifar10/"
}
하나의 worker 그룹으로 여러 worker를 실행하여 [동기 트레이닝](architecture.html)을 수행 할 수 있습니다.
예를 들어, *job.conf* 파일을 위와 같이 변경합니다.
위의 설정은 하나의 worker 그룹에 2개의 worker가 설정되었습니다.
worker 들은 그룹 내에서 동기화합니다.
이것은 인메모리 [sandblaster](frameworks.html)로 실행됩니다.
모델은 2개의 worker로 분할됩니다. 각 레이어가 2개의 worker로 분산됩니다.
배분 된 레이어는 원본 레이어와 기능은 같지만 특징 인스턴스의 수가 `B / g` 로 됩니다.
여기서 `B`는 미니밧치 인스턴스의 숫자로 `g`는 그룹의 worker 수 입니다.
[다른 스킴](neural-net.html)을 이용한 레이어 (뉴럴네트워크) 파티션 방법도 있습니다.
다른 설정들은 모두 "병렬화 없음"의 경우와 동일합니다.
./bin/singa-run.sh -conf examples/cifar10/job.conf
### 클러스터에서의 트레이닝
클러스터 설정을 변경하여 위 트레이닝 프레임워크를 확장합니다.
nworker_per_procs : 1
모든 프로세스는 하나의 worker 스레드를 생성합니다.
결과 worker 우리는 다른 프로세스 (노드)에서 생성됩니다.
클러스터의 노드를 특정하려면 *SINGA_ROOT/conf/* 의 *hostfile* 의 설​​정이 필요합니다.
e.g.,
logbase-a01
logbase-a02
zookeeper location도 설정해야합니다.
e.g.,
# conf/singa.conf
zookeeper_host : "logbase-a01"
스크립트의 실행은 "Single 노드 트레이닝"과 동일합니다.
./bin/singa-run.sh -conf examples/cifar10/job.conf
## Mesos에서 실행
*working* ...
## 다음
SINGA 의 코드 변경 및 추가에 대한 자세한 내용은 [프로그래밍 가이드](programming-guide.html)를 참조하십시오.