# クイック スタート --- ## 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" ## スタンドアローンモードでの実行 スタンドアローンモードでSINGAを実行するとは、[Mesos](http://mesos.apache.org/) や [YARN](http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html) のようなクラスターマネージャー利用しない場合のことを言います。 ### Single ノードでのトレーニング 1つのプロセスがローンチされます。 例として、 [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 のデフォルト値は、1つの worker と 1つの 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 グループをローンチすることによって、 In SINGA, [非同期トレーニング](architecture.html) を実行することが出来ます。 例えば、*job.conf* を上記のように変更します。 デフォルトでは、1つの worker グループが1つの worker を持つよう設定されています。 上記の設定では、1つのプロセスに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/" } 1つのworkerグループとして複数のworkerをローンチすることで [同期トレーニング](architecture.html)を実行することが出来ます。 例えば、*job.conf* ファイルを上記のように変更します。 上記の設定では、1つの 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 すべてのプロセスは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) をご覧ください。