TensorFlow Cluster tcm 命令語使用ガイド
tcm CLI 命令語使用権限の認証を受ける
tcm CLI 命令語使用権限の認証を受ける方法は次の通りです。
TensorFlow Cluster master サーバにアクセスして
tcm
命令語を実行します。root@kym:~# tcm auth
最初の実行の際はtcm CLI使用権限がないのでAccess KeyとSecret Keyを入力してくださいというメッセージが表示されます。
ncloud マイページ > アカウント管理 > 認証キー管理ページから Access Keyをコピーして貼り付けるとSecret Keyプロンプトが表示されます。同じ方法でSecret Keyもコピーして貼り付けます。
認証が完了したら次のような成功メッセージが表示されます。その後はtcm CLI命令語を自由に使用できます(サーバを引き続き利用の際は再認証の必要なし)。
Authentication Success.
tcm CLI 命令語の種類を確認する
tcm CLI 命令語の種類を確認するためにはTensorFlow Clusterコンソールから以下のように'tcm' 命令語を実行します。
root@kym:~# tcm
上の命令語を実行すると以下のように使用可能な命令語リストが列挙されます。
root@kym:~# tcm
Type: Tcm
String form: <__main__.Tcm object at 0x7f9c6bfb91d0>
Usage: tcm
tcm add-vm
tcm create
tcm delete
tcm history
tcm info
tcm monitor
tcm mount
tcm nas-create
tcm nas-delete
tcm nas-info
tcm nas-volume
tcm rm-vm
tcm start-vm
tcm stop-vm
tcm submit
tcm unmount
では、命令語の使用法を一つずつご説明します。
Cluster生成
Clusterを生成する前または生成後にCluster情報を確認します。
root@kym:~# tcm info [NCP TensorFlow Cluster] No clusters. Please create node using 'create' command
まだ生成されたClusterがないので 'create' 命令語を使用してClusterを生成してくださいというメッセージが表示されます。
tcm create
を実行します。以下のように使用法が表示されます。[オプション]は選択事項です。--specの基本オプション値は 'basic'です。Usage: tcm create COUNT [SPEC] tcm create --count COUNT [--spec SPEC]
tcm create 3
またはtcm create --count 3
を実行するとbasicスペックのサーバがClusterに3つ生成されます。サーバノードスペックは
--spec
オプションに指定し、各スペックは以下の通りです。(gpu1, gpu2は今後サポート予定).- mini: vCPU 4ea, Memory 16GB, HDD 50GB
- basic: vCPU 8ea, Memory 32GB, HDD 50GB
- high: vCPU 16ea, Memory 32GB, HDD 50GB
- gpu1: GPU 1ea, GPU Mem 24GB, vCPU 4ea, Memory 30GB, SSD 50GB
gpu2: GPU 2ea, GPU Mem 48GB, vCPU 8ea, Memory 60GB, SSD 50GB
tcm create 3
命令語を実行してサーバノードを3つ作成します。サーバノード数は2台以上10台以下で実行してください。今後add-vm
のような命令語に Clusterを拡張できます。root@kym:~# tcm create 3 [NCP TensorFlow Cluster] Creating nodes to configure the cluster... [NCP TensorFlow Cluster] Successfully requested. After the cluster is installed, you can check the cluster infomation through the 'tcm info' command. root@kym:~#
サーバが正確に生成されたか確認する際は 'tcm info' 命令語を実行します。各サーバノードの名前は master サーバ名 + 乱数 + 番号で設定されます。
root@kym:~# tcm info +----------------+-------------+------------+---------------------+-------------+--------------+------------+ | Server Name | Instance No | Status | Create Date | Memory Size | Private IP | SSH | | | | | | | | Connection | +----------------+-------------+------------+---------------------+-------------+--------------+------------+ | kym-zc8mooq4-1 | 539137 | setting up | 2018-03-12 15:43:45 | 32.00 GB | 10.39.3.97 | False | | kym-zc8mooq4-2 | 539140 | setting up | 2018-03-12 15:43:50 | 32.00 GB | 10.39.13.235 | False | | kym-zc8mooq4-3 | 539143 | setting up | 2018-03-12 15:43:55 | 32.00 GB | 10.39.3.202 | False | +----------------+-------------+------------+---------------------+-------------+--------------+------------+
サーバの状態が 'setting up'と表示され、サーバ間の通信状態(SSH Connection)が 'False'と出力されます。作業完了までは数分かかります。もう一度サーバノードの状態を確認します。
+----------------+-------------+---------+---------------------+-------------+--------------+------------+ | Server Name | Instance No | Status | Create Date | Memory Size | Private IP | SSH | | | | | | | | Connection | +----------------+-------------+---------+---------------------+-------------+--------------+------------+ | kym-zc8mooq4-1 | 539137 | running | 2018-03-12 15:43:45 | 32.00 GB | 10.39.3.97 | True | | kym-zc8mooq4-2 | 539140 | running | 2018-03-12 15:43:50 | 32.00 GB | 10.39.13.235 | True | | kym-zc8mooq4-3 | 539143 | running | 2018-03-12 15:43:55 | 32.00 GB | 10.39.3.202 | True | +----------------+-------------+---------+---------------------+-------------+--------------+------------+
サーバ状態が 'running'で、サーバ間の通信状態(SSH Connection)が全て'True'であればCluster生成が完了した状態です。
Cluster サーバノードの追加
Clusterにサーバを追加する際は tcm add-vm [サーバ台数]
またはtcm add-vm --count [サーバ台数]
命令語を使用します。
root@kym:~# tcm add-vm 1
[NCP TensorFlow Cluster] Successfully requested.
Clusterに現在生成されているサーバノードと同じスペックのサーバがもう一台生成されます。tcm add-vm 1
命令は tcm add-vm --count 1
命令と同じです。tcm add-vm
命令語を一度実行して増設できる最大サーバ台数は10台です。
以下のように追加されたサーバノードの状態を確認できます。サーバ状態とサーバ間の通信状態が可用できる状態であるか確認が必要です。
root@kym:~# tcm info
+----------------+-------------+------------+---------------------+-------------+--------------+------------+
| Server Name | Instance No | Status | Create Date | Memory Size | Private IP | SSH |
| | | | | | | Connection |
+----------------+-------------+------------+---------------------+-------------+--------------+------------+
| kym-zc8mooq4-1 | 539137 | running | 2018-03-12 15:43:45 | 32.00 GB | 10.39.3.97 | True |
| kym-zc8mooq4-2 | 539140 | running | 2018-03-12 15:43:50 | 32.00 GB | 10.39.13.235 | True |
| kym-zc8mooq4-3 | 539143 | running | 2018-03-12 15:43:55 | 32.00 GB | 10.39.3.202 | True |
| kym-zc8mooq4-4 | 539158 | setting up | 2018-03-12 16:36:18 | 32.00 GB | 10.39.2.214 | False |
+----------------+-------------+------------+---------------------+-------------+--------------+------------+
Cluster サーバノードの停止
Clusterのサーバノードを停止する方法をご説明します。
サーバを一台ずつまたは全て停止させることができます。サーバインスタンス番号の代わりにall
を入力すると全てのサーバノードに適用されます。
Usage: tcm stop-vm INSTANCE_NO
tcm stop-vm --instance-no INSTANCE_NO
root@kym:~# tcm stop-vm all
[NCP TensorFlow Cluster] Successfully requested.
root@kym:~# tcm info
+----------------+-------------+---------------+---------------------+-------------+--------------+------------+
| Server Name | Instance No | Status | Create Date | Memory Size | Private IP | SSH |
| | | | | | | Connection |
+----------------+-------------+---------------+---------------------+-------------+--------------+------------+
| kym-zc8mooq4-1 | 539137 | shutting down | 2018-03-12 15:43:45 | 32.00 GB | 10.39.3.97 | False |
| kym-zc8mooq4-2 | 539140 | shutting down | 2018-03-12 15:43:50 | 32.00 GB | 10.39.13.235 | False |
| kym-zc8mooq4-3 | 539143 | shutting down | 2018-03-12 15:43:55 | 32.00 GB | 10.39.3.202 | False |
| kym-zc8mooq4-4 | 539158 | shutting down | 2018-03-12 16:36:18 | 32.00 GB | 10.39.2.214 | False |
+----------------+-------------+---------------+---------------------+-------------+--------------+------------+
Cluster サーバノードのスタート
Clusterのサーバノードをスタートする方法をご説明します。
停止したサーバを一台ずつまたは全てスタートさせることができます。サーバインスタンス番号の代わりにall
を入力すると全てのサーバノードに適用されます。
Usage: tcm start-vm INSTANCE_NO
tcm start-vm --instance-no INSTANCE_NO
root@kym:~# tcm start-vm 539137
success
root@kym:~# tcm info
+----------------+-------------+---------+---------------------+-------------+--------------+------------+
| Server Name | Instance No | Status | Create Date | Memory Size | Private IP | SSH |
| | | | | | | Connection |
+----------------+-------------+---------+---------------------+-------------+--------------+------------+
| kym-zc8mooq4-1 | 539137 | booting | 2018-03-12 15:43:45 | 32.00 GB | 10.39.3.97 | False |
| kym-zc8mooq4-2 | 539140 | stopped | 2018-03-12 15:43:50 | 32.00 GB | 10.39.13.235 | False |
| kym-zc8mooq4-3 | 539143 | stopped | 2018-03-12 15:43:55 | 32.00 GB | 10.39.3.202 | False |
| kym-zc8mooq4-4 | 539158 | stopped | 2018-03-12 16:36:18 | 32.00 GB | 10.39.2.214 | False |
+----------------+-------------+---------+---------------------+-------------+--------------+------------+
サーバのスタートが完了したらサーバ状態が 'booting'から 'running'に転換されますが数分かかります。
Cluster サーバノードの削除
tcm rm-vm
命令語で停止したサーバノードを削除できます。
Usage: tcm rm-vm INSTANCE_NO
tcm rm-vm --instance-no INSTANCE_NO
root@kym:~# tcm rm-vm 539140
[NCP TensorFlow Cluster] Successfully requested.
root@kym:~# tcm info
+----------------+-------------+---------+---------------------+-------------+-------------+------------+
| Server Name | Instance No | Status | Create Date | Memory Size | Private IP | SSH |
| | | | | | | Connection |
+----------------+-------------+---------+---------------------+-------------+-------------+------------+
| kym-zc8mooq4-1 | 539137 | running | 2018-03-12 15:43:45 | 32.00 GB | 10.39.3.97 | True |
| kym-zc8mooq4-3 | 539143 | stopped | 2018-03-12 15:43:55 | 32.00 GB | 10.39.3.202 | False |
| kym-zc8mooq4-4 | 539158 | stopped | 2018-03-12 16:36:18 | 32.00 GB | 10.39.2.214 | False |
+----------------+-------------+---------+---------------------+-------------+-------------+------------+
サーバノードが二台の場合はそれ以上は削除されません。この場合 tcm stop-vm
で作成した全てのサーバを停止させた後に tcm delete
命令語でClusterを削除してください。
Clusterの削除
Clusterを削除するためには tcm delete
命令語を使用します。全てのサーバノードが停止した状態でのみ作動します。
Usage: tcm delete
root@kym:~# tcm delete
[NCP TensorFlow Cluster] VM is powered on. Please shut down the VM.
root@kym:~# tcm info
+----------------+-------------+---------+---------------------+-------------+-------------+------------+
| Server Name | Instance No | Status | Create Date | Memory Size | Private IP | SSH |
| | | | | | | Connection |
+----------------+-------------+---------+---------------------+-------------+-------------+------------+
| kym-zc8mooq4-1 | 539137 | running | 2018-03-12 15:43:45 | 32.00 GB | 10.39.3.97 | True |
| kym-zc8mooq4-3 | 539143 | running | 2018-03-12 15:43:55 | 32.00 GB | 10.39.3.202 | True |
| kym-zc8mooq4-4 | 539158 | running | 2018-03-12 16:36:18 | 32.00 GB | 10.39.2.214 | True |
+----------------+-------------+---------+---------------------+-------------+-------------+------------+
root@kym:~# tcm stop-vm all
[NCP TensorFlow Cluster] Successfully requested.
root@kym:~# tcm info
+----------------+-------------+---------------+---------------------+-------------+-------------+------------+
| Server Name | Instance No | Status | Create Date | Memory Size | Private IP | SSH |
| | | | | | | Connection |
+----------------+-------------+---------------+---------------------+-------------+-------------+------------+
| kym-zc8mooq4-1 | 539137 | shutting down | 2018-03-12 15:43:45 | 32.00 GB | 10.39.3.97 | False |
| kym-zc8mooq4-3 | 539143 | shutting down | 2018-03-12 15:43:55 | 32.00 GB | 10.39.3.202 | False |
| kym-zc8mooq4-4 | 539158 | shutting down | 2018-03-12 16:36:18 | 32.00 GB | 10.39.2.214 | False |
+----------------+-------------+---------------+---------------------+-------------+-------------+------------+
root@kym:~# tcm delete
[NCP TensorFlow Cluster] Successfully requested.
root@kym:~# tcm info
[NCP TensorFlow Cluster] No clusters. Please create node using 'create' command
Cluster 共用ストレージの生成
Cluster master サーバのlocal ストレージが足りなかったりサーバノードが学習データを共有できるようにしたりする場合はNASストレージを生成できます。
NASストレージ名は必須入力値で、 volumeオプションの基本値は500GBです。volume オプション値はストレージ(NAS)のsize(GB)です。サポートする容量は500~10,000GBで、100GB単位で追加できます。
Usage: tcm nas-create NAME [VOLUME]
tcm nas-create --name NAME [--volume VOLUME]
root@kym:~# tcm nas-create train
success
root@kym:~# tcm nas-info
+----------------+-------------+--------+-----------+-----------+--------------+------------------------------+------------------------------------------+
| Name | Instance No | Status | Size | Used Size | Use Ratio(%) | Mount Info | ACL Instance List |
+----------------+-------------+--------+-----------+-----------+--------------+------------------------------+------------------------------------------+
| n000327_train | 539170 | CREAT | 500.00 GB | 272.00 KB | 0.0 | 10.250.48.15:/n000327_train | [] |
+----------------+-------------+--------+-----------+-----------+--------------+------------------------------+------------------------------------------+
'train'という500GBサイズのNAS ストレージが生成されたことを確認できます。
Cluster 共用ストレージのマウント
生成されたNASストレージを全てのサーバノードに同時にマウントします。一つのClusterは一つのNAS ストレージがマウントでき、masterサーバを始めとするサーバノードのマウントルートは /mnt/nasに固定されます。
Usage: tcm mount NAS_INSTANCE_NO
tcm mount --nas-instance-no NAS_INSTANCE_NO
nas-info
命令語で生成された 'nas instance no'をマウント命令語に因子値で入力してください。
root@kym:~# tcm mount 539170
[NCP TensorFlow Cluster] Successfully requested.
root@kym:~# tcm nas-info
+----------------+-------------+--------+-----------+-----------+--------------+------------------------------+------------------------------------------+
| Name | Instance No | Status | Size | Used Size | Use Ratio(%) | Mount Info | ACL Instance List |
+----------------+-------------+--------+-----------+-----------+--------------+------------------------------+------------------------------------------+
| n000327_train | 539170 | CREAT | 500.00 GB | 348.00 KB | 0.0 | 10.250.48.15:/n000327_train | ['539104', '539161', '539164', '539167'] |
+----------------+-------------+--------+-----------+-----------+--------------+------------------------------+------------------------------------------+
ACL InstanceにCluster masterサーバとサーバノードが自動で構成されたのを確認できます。
以下のように ssh root@[サーバノードの私設IP] 命令語
でサーバノードに上手くマウントされたか確認できます。基本的にCluster masterサーバの共用キーがCluster生成の際のサーバノードに自動でコピーされるため、遠隔命令語を使用できます。
root@kym:~# ssh root@10.39.3.232 'df -h'
Warning: Permanently added '10.39.3.232' (ECDSA) to the list of known hosts.
Filesystem Size Used Avail Use% Mounted on
udev 16G 0 16G 0% /dev
tmpfs 3.2G 8.8M 3.2G 1% /run
/dev/xvda1 48G 5.2G 40G 12% /
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 16G 0 16G 0% /sys/fs/cgroup
tmpfs 3.2G 0 3.2G 0% /run/user/1000
10.250.48.15:/n000327_train 500G 320K 500G 1% /mnt/nas
tmpfs 3.2G 0 3.2G 0% /run/user/0
Cluster 共用ストレージのアンマウント
次の命令語で Cluster master サーバ及びサーバノードにNASストレージを同時にアンマウントできます。
Usage: tcm unmount NAS_INSTANCE_NO
tcm unmount --nas-instance-no NAS_INSTANCE_NO
アンマウントと同時にNAS ACLが自動で解除されますのでご注意ください。
Cluster 共用ストレージの削除
NAS 共用ストレージを削除し、unmount
命令語のようにアンマウントと同時にNAS ACLが自動で解除されます。
Usage: tcm nas-delete NAS_INSTANCE_NO
tcm nas-delete --nas-instance-no NAS_INSTANCE_NO
Cluster 共用ストレージボリュームの変更
NAS ストレージのボリュームサイズを変更できます。 ボリュームサイズを 500~10,000GBの範囲に変更でき、変更単位は100GBです。
Usage: tcm nas-volume NAS_INSTANCE_NO SIZE
tcm nas-volume --nas-instance-no NAS_INSTANCE_NO --size SIZE
Cluster JOB Submit(提出)
この商品はTensorFlowの 'Distributed Tensorflow' 機能に適した Cluster構造です。pythonコードをDistribute Tensorflowから提供する文法と形式に沿って作成しないと正常に作動しません。提出前に必ず全てのノードのサーバノード間のアクセス状態(SSH Connection)が 'True'であることを確認してください。
[PS_NUM]はパラメータサーバの個数を指定するオプションです。Default値は1であり、ユーザーがワーカーサーバ数より小さい値で指定できます。この場合 Clusterは自動でユーザープログラムに変更されたClusterスペックを転送します(プログラムCluster因子値を受ける場合に該当する)。基本的にClusterの全てのサーバノードはワーカーサーバで作動します。
共用ㇲトレージ(nas)のマウント機能を使うと分散環境実行の際にデータを共用で使用できます。
Usage: tcm submit FILE_PATH [PS_NUM] [FORCE] [ARGS ...]
tcm submit --file-path FILE_PATH [--ps-num PS_NUM] [--force FORCE] [ARGS ...]
次は基本で提供される TensorFlow Distriuted 例題を提出する例です。
root@kym:~# tcm submit /home/ncp/workspace/DistributedTensorFlow.py
root@kym:~# [NCP TensorFlow Cluster] Successfully requested. You can check the log using 'tcm monitor' command.
[FORCE] オプションをTrueに設定するとワーカーサーバの実行有無をmasterサーバノードでチェックし、全て終了の際はパラメータサーバがJobを自動で停止させます。
BackGound Jobで実行されるため、実行後コンソールプロンプトへ移動され、ログは次に説明する tcm monitor
命令語で確認できます。
Cluster JOB ログをみる
Usage: tcm monitor
TensorFlow 学習ログを tailingして連続的に表示してくれます。途中で抜け出す際はCtrl + Cを押してください。
各サーバノードのログは Cluster masterサーバの /home/ncp/ncp.logに集計されて保存されます。
root@kym:~# tcm monitor
[NCP TensorFlow Cluster] If you want to finish monitoring, press Ctr+c
2018-03-12 18:26:54.444489: I tensorflow/core/distributed_runtime/master_session.cc:998] Start master session f3f069b8690ca808 with config: device_filters: "/job:ps" device_filters: "/job:worker/task:0" allow_soft_placement: true
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Extracting /home/ncp/mnist-data/train-images-idx3-ubyte.gz
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Extracting /home/ncp/mnist-data/train-labels-idx1-ubyte.gz
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Extracting /home/ncp/mnist-data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting /home/ncp/mnist-data/t10k-labels-idx1-ubyte.gz
Worker 0: Initializing session...
Worker 0: Session initialization complete.
Training begins @ 1520846815.213741
1520846815.350583: Worker 0: training step 1 done (global step: 0)
1520846815.378844: Worker 0: training step 2 done (global step: 0)
1520846815.405878: Worker 0: training step 3 done (global step: 0)
1520846815.428620: Worker 0: training step 4 done (global step: 1)
1520846815.449924: Worker 0: training step 5 done (global step: 1)
1520846815.470958: Worker 0: training step 6 done (global step: 1)
1520846815.495449: Worker 0: training step 7 done (global step: 1)
1520846815.516172: Worker 0: training step 8 done (global step: 2)
1520846815.540724: Worker 0: training step 9 done (global step: 2)
1520846815.565506: Worker 0: training step 10 done (global step: 2)
------------------------------ 중 략 ------------------------------
1520846960.827992: Worker 0: training step 3031 done (global step: 3000)
Training ends @ 1520846960.828057
Training elapsed time: 145.614315 s
After 3000 training step(s), validation cross entropy = 812.873
##########################################################################################
[NCP TensorFlow Cluster] FINISH DISTRIBUTE JOB
[NCP TensorFlow Cluster] IF YOU WANT TO FINISH MONITORING, PRESS CTR+C
[NCP TensorFlow Cluster] TOTAL TIME : 163.34 seconds
##########################################################################################
Cluster JOB 履歴情報をみる
Usage: tcm history
次のように作業提出履歴を確認でき、現在実行している Jobの状態を確認できます。
root@kym:~# tcm history
+---------------------+----------------------------------------------+--------+---------------------+-------------+
| Submit Time | File Name | Status | End Time | Total Time |
| | | | | (sec) |
+---------------------+----------------------------------------------+--------+---------------------+-------------+
| 2018-03-12 18:26:39 | /home/ncp/workspace/DistributedTensorFlow.py | Finish | 2018-03-12 18:29:22 | 163.34 |
| 2018-03-12 18:37:48 | /home/ncp/workspace/DistributedTensorFlow.py | submit | None | None |
+---------------------+----------------------------------------------+--------+---------------------+-------------+