Classic環境で利用できます。
Ncloud TensorFlow Cluster tcm コマンドご利用ガイド
tcm CLIコマンドの使用権限認証
tcm CLIコマンドの使用権限を認証する方法は次の通りです。
-
Ncloud TensorFlow Cluster masterサーバにアクセスし、
tcmコマンドを実行します。root@kym:~# tcm auth -
初回実行時には tcm CLIの使用権限がないため、Access Keyと Secret Keyを入力するようメッセージが表示されます。Access Keyをコピーして貼り付けると、Secret Keyのプロンプトが表示されます。同じ方法で Secret Keyもコピーして貼り付けます。Access Keyの確認方法については、Ncloud APIをご参照ください。
-
認証が完了すると、次のように成功メッセージが表示されます。その後は tcm CLIコマンドを自由に使用できます(サーバを継続利用する場合、再認証は不要です)。
Authentication Success.
tcm CLIコマンドの種類について
tcm CLIコマンドの種類を確認するには、Ncloud 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
それでは、コマンドの使用方法を1つずつ学んでいきましょう。
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接続)がすべて「True」の場合、Clusterの作成が完了した状態です。
Clusterサーバーノード追加
Clusterにサーバを追加するには、「tcm add-vm [サーバ台数]」または「tcm add-vm --count [サーバ台数]」コマンドを使用します。
root@kym:~# tcm add-vm 1
[NCP TensorFlow Cluster] Successfully requested.
Clusterに現在作成されているサーバノードと同じ仕様のサーバがもう1台作成されます。tcm add-vm 1 コマンドは、tcm add-vm --count 1 コマンドと同じです。tcm add-vm コマンドを1回実行して拡張可能な最大サーバ台数は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のサーバノードを停止する方法について説明します。
サーバを1台ずつ、またはすべて停止できます。サーバインスタンス番号の代わりに 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サーバノードを開始する方法について説明します。
停止されたサーバを1台ずつ、またはすべて起動できます。サーバインスタンス番号の代わりに 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 |
+----------------+-------------+---------+---------------------+-------------+-------------+------------+
サーバノードが2台の場合、これ以上の削除は行われません。この場合、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ストレージをすべてのサーバノードに同時にマウントします。1つの Clusterには1台の 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コードを Distributed Tensorflowが提供する記法と形式に従って作成することで、正常に動作します。提出前に必ずすべてのノードのサーバノード間の接続ステータス(SSH Connection)が「True」であることをご確認ください。
[PS_NUM]はパラメータサーバの数を指定するオプションです。デフォルト値は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 Distributedのユースケースを提出する例です。
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を自動的に停止します。
BackGround 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 |
+---------------------+----------------------------------------------+--------+---------------------+-------------+