Ncloud TensorFlow Cluster tcm コマンドご利用ガイド

Prev Next

Classic環境で利用できます。

Ncloud TensorFlow Cluster tcm コマンドご利用ガイド

tcm CLIコマンドの使用権限認証

tcm CLIコマンドの使用権限を認証する方法は次の通りです。

  1. Ncloud TensorFlow Cluster masterサーバにアクセスし、tcm コマンドを実行します。

    root@kym:~# tcm auth
    
  2. 初回実行時には tcm CLIの使用権限がないため、Access Keyと Secret Keyを入力するようメッセージが表示されます。Access Keyをコピーして貼り付けると、Secret Keyのプロンプトが表示されます。同じ方法で Secret Keyもコピーして貼り付けます。Access Keyの確認方法については、Ncloud APIをご参照ください。

  3. 認証が完了すると、次のように成功メッセージが表示されます。その後は 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作成

  1. Clusterを作成する前または作成後に Cluster情報を確認します。

    root@kym:~# tcm info
    [NCP TensorFlow Cluster] No clusters. Please create node using 'create' command
    

    まだ作成された Clusterがないため、create コマンドを使用して Clusterを作成するように指示するメッセージが表示されます。

  2. tcm createを起動します。以下のように使用方法が出力されます。[オプション]は任意事項です。--specのデフォルトオプション値は basicです。

    Usage:       tcm create COUNT [SPEC]
                tcm create --count COUNT [--spec SPEC]
    
  3. 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:~#
    
  4. サーバが正常に作成されているか確認するには、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        |
+---------------------+----------------------------------------------+--------+---------------------+-------------+