Fork me on GitHub

퀵 스타트


SINGA 인스톨

SINGA 인스톨은 여기를 참조하십시오.

Zookeeper 실행

SINGA 트레이닝은 zookeeper를 이용합니다. 우선 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을 실행할 때, MesosYARN 과 같은 클러스터 관리툴을 이용하지 않는 경우를 말합니다.

Single 노드에서의 트레이닝

하나의 프로세스가 시작됩니다. 예를 들어, CIFAR-10 데이터 세트를 이용하여 CNN 모델을 트레이닝 시킵니다. 하이퍼 파라미터는 cuda-convnet에 따라 설정되어 있습니다. 자세한 내용은 CNN 샘플 페이지를 참조하십시오.

데이터와 작업 설정

데이터 세트 다운로드와 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 그룹을 실행함으로써 비동기 트레이닝을 할 수 있습니다. 예를 들어, job.conf 을 위와 같이 변경합니다. 기본적으로 하나의 worker 그룹이 하나의 worker를 갖도록 설정되어 있습니다. 위의 설정은 하나의 프로세스에 2개의 worker가 설정되어 있기 때문에 2개의 worker 그룹이 동일한 프로세스로 실행됩니다. 결과 인메모리 Downpour 트레이닝 프레임워크로 실행됩니다.

사용자는 데이터의 분산을 신경 쓸 필요는 없습니다. 랜덤 오프셋에 따라 각 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를 실행하여 동기 트레이닝을 수행 할 수 있습니다. 예를 들어, job.conf 파일을 위와 같이 변경합니다. 위의 설정은 하나의 worker 그룹에 2개의 worker가 설정되었습니다. worker 들은 그룹 내에서 동기화합니다. 이것은 인메모리 sandblaster로 실행됩니다. 모델은 2개의 worker로 분할됩니다. 각 레이어가 2개의 worker로 분산됩니다. 배분 된 레이어는 원본 레이어와 기능은 같지만 특징 인스턴스의 수가 B / g 로 됩니다. 여기서 B는 미니밧치 인스턴스의 숫자로 g는 그룹의 worker 수 입니다. 다른 스킴을 이용한 레이어 (뉴럴네트워크) 파티션 방법도 있습니다.

다른 설정들은 모두 “병렬화 없음”의 경우와 동일합니다.

./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 의 코드 변경 및 추가에 대한 자세한 내용은 프로그래밍 가이드를 참조하십시오.