사용하기 전에

Q. TensorFlow Cluster 상품은 무엇인가요?

  • 대용량 학습데이터 혹은 연산량이 많은 텐서플로우 코드를 Cluster 환경에서 보다 빠르게 실행하기 위한 상품입니다.
  • 미리 제공되는 tcm CLI 명령어를 통해 클러스터의 노드를 생성, 추가, 삭제하고, 스토리지를 Cluster에서 쉽게 공유하고 간편하게 증설할 수 있습니다. 또한 사용자 코드를 쉽게 Cluster에 실행(Job Submit)할 수 있습니다.
  • "Tensorflow Cluster"는 구글 브레인팀에서 개발한 오픈소스 머신러닝 소프트웨어 라이브러리인 Tensorflow를 이용하고 있습니다.

Q. 지원되는 OS는 어떻게 되나요?

  • OS는 'ubuntu-16.04-64-server'를 제공합니다.

Q. 어떤 패키지들이 제공되며, 제공하는 패키지들만 사용할 수 있나요?

  • TensorFlow Cluster master 서버에는 Anaconda와 Cluster를 운영할 수 있는 tcm CLI 패키지가 설치됩니다. (TensorFlow 설치 제외)
  • TensorFlow Cluster master 서버에서 생성하는 Cluster Node에는 TensorFlow가 설치됩니다.

Q. 파이썬 외에 Java나 다른 언어를 사용할 수 있나요?

  • TensorFlow에서 Java나 Go 등의 API도 제공하지만 안정성을 보장하지 않기 때문에 Python을 사용하기를 권해드립니다.

Q. TensorFlow 클러스터는 어떻게 생성하나요?

  • TensorFlow Cluster는 Standard 사양의 서버를 필요에 따라 생성하고, 터미널로 접속후 tcm CLI 명령어로 Cluster를 구성합니다.
  • TensorFlow master 서버는 월 요금제와 시간 요금제 중 선택가능하며, 서버를 생성한 후 접속 환경을 설정하여 이용할 수 있습니다. (Worker, 파라미터 서버 노드들은 시간 요금제로 생성됩니다.)

Q. 제공되는 서버 타입들은 어떤 것들이 있나요?

  • 네이버 클라우드 플랫폼이 제공하는 TensorFlow Cluster master 서버 타입은 Standard 서버 타입중에서 사양 선택이 가능합니다. 터미널로 접속 후 tcm CLI 명령어로 생성하는 서버 노드들은 아래와 같은 스펙 사양을 선택할 수 있습니다.(단 모든 서버 노드들은 동일한 스펙으로 선택이 가능합니다)

  • TensorFlow Cluster Worker, 파라미터 서버노드들은 아래 5가지의 서버 스펙 중에서 선택 가능합니다. (모든 서버 노드들은 동일한 스펙으로 구성되며, GPU 서버타입은 향후 지원 예정입니다.)

스펙코드 스펙 상세 설명
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 단일 GPU를 클러스터 노드수 만큼 확장하여 사용합니다.
gpu2 GPU 2ea, GPU Mem 48GB, vCPU 8ea, Memory 60GB, SSD 50GB 듀얼 GPU를 클러스터 노드수 만큼 확장하여 매우 큰 워크로드 처리가 가능합니다.

(단 노드들은 동일한 스펙타입으로 구성되며, 모든 노드가 워커 서버노드로 인식되고, 파라미터 서버노드의 개수는 지정이 가능합니다)

Q. TensorFlow Cluster master 서버를 생성했는데 워커 서버나 파라미터 서버는 어떻게 생성하나요?

Q. TensorFlow code은 어떻게 Cluster에서 실행하나요?

TensorFlow Cluster 상품 소개

TensorFlow에서 Cluster란 TensorFlow 그래프 상에서의 분산된 연산의 일부로서 작업(Task)의 집합을 의미합니다. 각각의 작업은 TensorFlow의 서버 노드들에서 실행되며, 각 서버들은 세션을 생성하는 마스터 서버, 그래프 연산을 수행하는 워커 서버, 연산된 기울기(Gradient)를 공유하는 파라미터 서버로 구성됩니다. 이러한 서버들이 각각 자신이 수행하는 역할에 위해서 각각의 서버노드들에게 Cluster 구성정보를 설명하는 ClusterSpec을 인자로 넘겨주어야 하며, 본 TensorFlow Cluster 상품은 그러한 작업을 비교적 간편하게 처리할 수 있습니다.

사용자는 각 노드에 전달할 Cluster Spec에 신경 쓸 필요없이 학습 코드 작성에만 집중하시면 됩니다. 다만 Cluster Spec을 세션에 전달하기 위해서 약간의 사용자코드 수정은 필요 합니다. 수정될 부분에 대한 설명은 ('TensorFlow Cluster MNIST 예제')를 참고하세요.

해당 상품이 TensorFlow 분산 병렬처리를 위한 상품이지만, 서버에 Anaconda가 설치되어 있어 기본적인 데이터 전처리, 시각화등을 처리할 수 있습니다.

TensorFlow Cluster 구성도

TensorFlow Cluster 생성

Step 1. 콘솔 접속

콘솔에 접속해서 Server > Server 메뉴를 선택합니다.

① 서버를 생성하려면 서버 생성 버튼을 클릭합니다.

Step 2. 서버 이미지 선택

TensorFlow 서버 이미지를 선택해서 서버를 생성합니다.

① 아래쪽으로 이동하여 이미지에서 'tensorflow-cluster-ubuntu-16.04-64-master'를 선택합니다.

[다음] 버튼을 클릭합니다.

Step 3. 서버 설정

스토리지 종류, 서버 타입, 요금제, Zone을 선택하고, 서버 이름을 입력합니다.

① Zone을 선택합니다. 'KR-1'과 'KR-2' 중에 선택이 가능합니다.

② 서버 스토리지 종류를 선택합니다.

  • 고성능 I/O가 필요한 서비스에는 SSD를, 일반적인 서비스에는 HDD를 선택하세요. 단, 부팅 스토리지가 SSD인 경우에만 추가 스토리지로 SSD를 이용할 수 있습니다.

③ 원하는 서버 타입을 선택합니다. Master 서버는 Standard 서버 타입 안에서만 선택이 가능합니다.

④ 요금제는 월요금제 또는 시간 요금제 중 선택할 수 있습니다.

⑤ 서버 대수를 입력합니다. (Master 서버는 1대가 하나의 클러스터가 되기 때문에 1대를 선택하시고, 복수의 클러스터를 원하는 경우에만 1대 이상을 선택하시게 됩니다.)

⑥ 서버 이름을 입력하신 후 [다음] 버튼을 클릭합니다.

Step 4. 인증키 설정

보유하고 있는 인증키가 있는 경우 ‘보유하고 있는 인증키 이용’을 선택하고, 없는 경우 아래의 절차대로 새로운 인증키를 생성합니다.

새로운 인증키 생성을 선택합니다.

② 인증키 이름을 입력합니다.

인증키 생성 및 저장 버튼을 클릭하여 로컬 PC에 인증키 파일을 저장합니다.

  • 새로운 인증키를 발급받습니다.
  • 저장 후 인증키는 고객의 PC 안전한 위치에 보관해 주십시오.
  • 인증키는 최초의 관리자 비밀번호를 가져올 때 이용됩니다.

[다음] 버튼을 클릭합니다.

Step 5. 네트워크 접근 설정

Tensorflow Cluster 상품은 기본적으로 Worker 노드들 간에 통신을 통해 Job을 수행합니다. 해당 상품에서는 이러한 통신을 위해 특정 포트를 열어 사용하게 되는데, 이는 네이버 클라우드 플랫폼 콘솔에서 ACG 등록을 통해 가능합니다. Tensorflow Cluster 상품 사용을 위한 ACG 등록은 크게 두 가지 방법이 있습니다.

① 사용자 ACG 생성을 통한 등록

  • '신규 ACG 생성' 옵션을 선택하면 '+ACG 생성' 버튼이 생성됩니다.
  • '+ACG 생성' 버튼을 클릭합니다.
  • 'ACG 생성' 팝업이 뜨면 ACG이름을 입력합니다.
  • 아래 ACG 설정을 하나씩 입력하고 '+추가' 버튼을 눌러 추가합니다.
프로토콜 접근소스 허용포트
TCP 0.0.0.0 22
TCP 0.0.0.0 2222
TCP 0.0.0.0 3333
  • '생성' 버튼 클릭.

② ncloud-default-acg 사용

  • ncp 계정에는 기본적으로 ncloud-default-acg 라는 ACG가 등록되어 있습니다. 이는 보유하고 있는 노드들 범위에서 모든 포트에 접근 가능한 설정입니다.
  • 해당 ACG를 사용하면 Tensorflow Cluster에서 각 Worker 노드들 간의 통신이 가능합니다.

다음 그림은 ②번 방법을 선택한 사진입니다.

Step 6. 최종 확인

설정한 내용을 최종 확인합니다.

① 서버 이미지, 서버, 인증키, ACG가 정상적으로 설정되었는지 확인합니다.

② 최종 확인 후에는 서버 생성 버튼을 클릭합니다.

  • 서버가 생성되기까지는 수 분에서 수십 분이 소요됩니다.

서버 목록에서 확인

생성한 서버를 리스트에서 확인합니다.

① 생성한 서버가 목록에 표시됩니다.

② 서버가 생성되고 패키지가 설치 완료되어 서버 상태가 운영중이 될 때까지 대기합니다.

포트 포워딩 설정 및 접속

포트 포워딩 설정

터미널 프로그램(Putty 등)으로 서버에 접속하려면 포트 포워딩을 설정해야 합니다.

① 서버리스트에서 설정할 서버를 선택하시고 상단에 포트 포워딩 설정을 클릭합니다.

② 포트 포워딩 설정 화면에서 외부 포트 번호를 설정합니다. 외부 포트 번호의 입력 범위는 1024~65,534로, 서버 접속을 위한 기능 외에 서비스 용도로 사용할 수 없습니다.
(내부 포트 번호는 22로 정해져 있습니다.)

추가 버튼을 클릭하면 설정 내역이 하단에 추가되며 [수정], [삭제] 버튼을 클릭하여 설정 내역을 수정, 삭제할 수 있습니다.

적용 버튼을 클릭하면 설정한 외부 포트로 터미널 프로그램을 이용하여 SSH 접속을 할 수 있습니다.

접속 및 tcm CLI 명령어 사용

터미널 프로그램으로 ssh root@[접속용 공인 아이피] -p [포트포워딩 포트번호]로 아래 그림과 같이 접속하면 tcm CLI명령어를 사용하실 수 있습니다.

① TensorFlow Cluster master 서버에 접속합니다.

② tcm 명령어를 실행시키면 사용 가능한 CLI command 리스트가 출력됩니다.

③ tcm info 명령어로 기존에 생성한 Cluster 노드 정보를 확인할 수 있습니다. (기 생성 Cluster 노드가 없는 경우, Create 명령어로 새롭게 구성하실 수 있습니다.)

자세한 tcm CLI 명령어 사용법은 ('TensorFlow Cluster tcm 명령어 사용 가이드') 참고하세요.

연관 정보 바로가기

아래 가이드에서 연관 정보를 확인할 수 있습니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...