- 인쇄
- PDF
Ncloud TensorFlow Cluster tcm 명령어 사용 가이드
- 인쇄
- PDF
Classic 환경에서 이용 가능합니다.
Ncloud TensorFlow Cluster tcm 명령어 사용 가이드
tcm CLI 명령어 사용 권한 인증받기
tcm CLI 명령어 사용 권한을 인증받는 방법은 다음과 같습니다.
Ncloud 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 명령어 종류를 확인하려면 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
이제 명령어 사용법을 하나씩 알아 보겠습니다.
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 |
+----------------+-------------+---------+---------------------+-------------+-------------+------------+
서버 노드가 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 스토리지를 모든 서버 노드에 동시에 마운트합니다. 하나의 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 |
+---------------------+----------------------------------------------+--------+---------------------+-------------+