GYUMIN DEV LOG

FloydHub


회사에서쓰는 그램, 맥북 모두 GPU가 없어서 CUDA를 쓰지도 못하는 상황이고 집에있는 노트북에는 외장 GPU가 있지만 성능이 안나와 CPU랑 비교해도 별로 차이가 없다.. ㅡㅡ

그래서 CloudGPU인 FloydHub를 이용해서 GPU를 사용하였다.
방법도 쉽고 AWS 같은 경우에는 개발환경을 구성해야하는데 FloydHub는 간단하게 GPU만써서 내가 원하는 결과를 가져올 수 있어서 좋음.
주피터 노트북 환경으로도 사용 가능하기 때문에 익숙한 분들은 사용하면 될듯하다.


1. floyd-cli install

1
pip3 install floyd-cli
cs


나는 Mac OS X에 Virtualenv를 이용해서 Python3.6버전으로 환경을 구성해서 사용하고 있다. 가상환경에서 파이썬 개발환경을 구성한 분들은 해당 가상환경을 activated 하고 설치해야함.


2. FloydHub 가입 후 Project 생성

1. 가입 및 로그인
2. 상단 Project - New Project
3. 프로젝트 생성 후 로컬에서 설정한 프로젝트 이름과 똑같은 폴더를 만든 후 cli 명령 수행

크게 보면 이렇다.


나중에 작업을 수행하면 jobs목록에 수행한 작업 목록이 뜨게됨.

프로젝트 생성이 완료 되었으면 

로컬에 my-dl-project 폴더 생성하고 해당 폴더로 이동해서 아래의 명령어를 실행

1
floyd init pleasure082/my-dl-project 
cs

그리고 파이썬 코드 파일(cifar10.py)을 해당 폴더에 옮겨논 다음 아래 명령어를 실행하여 Job을 할당하고 실행시킬 수 있다.

그리고 작업이 진행되며 나오는 콘솔창과 텐서보드는 job에 들어가면 볼 수 있음.

1
floyd run --gpu --env tensorflow-1.5 --tensorboard 'python cifar10.py'
cs



옵션 설명

--gpu : gpu를 사용해서 학습을 진행

--env tensorflow-1.5 : 작업 환경을 tensorflow 1.5버전으로 학습을 진행

--tensorboard : tensorboard를 이용해서 학습 과정을 시각화



-------------------------------------------------------------------------------------------------------------------

내용 추가!!(2018. 05. 13)

Dataset을 생성하고 Data를 업로드하는 것을 빠트려서 추가합니다.

Project를 생성하고 job을 생성해서 학습을 진행할 때 읽어오는 Data는 DataSet의 추가하여 업로드해서 사용해야 합니다.


Project를 생성한 것처럼 Dataset을 추가하고 마찬가지로 Floyd-CLI를 이용하여 Upload를 진행하면 됩니다.

job을 할당할 때 아래의 옵션도 추가합니다.


--data pleasure082/datasets/cifar10-data/1:data


floyd run --gpu --env tensorflow-1.5 --data pleasure082/datasets/cifar10-data/1:data --tensorboard 'python train.py'


이렇게 하면 할당된 job에 들어가서 import된 Dataset을 확인할 수 있습니다.


-------------------------------------------------------------------------------------------------------------------



저는 Tesla K80 Standard GPU를 비용을 지불하고 10시간 결제하였습니다. 10시간에 12달러 이므로 참고하시길 바랍니다.

우측 상단 프로필 화살표 - Usage - GPU 항목의 get more Hour를 클릭하면 원하는 시간만큼 구매할 수 있고 해외 결제가 가능한 카드를 등록하고 사용하면 된다.(결제 할 때 자동으로 갱신 안되게끔 주의!!)


그리고 내가 작성한 예제코드는 tensorflow.python.keras에 있는 cifar10 load_data.py를 import해야 해서 tensorflow 1.5버전으로 작업환경을 구성하였음.

from tensorflow.python.keras._impl.keras.datasets.cifar10 import load_data


옵션으로  tensorboard를 주게되면 자신이 올린 파이썬 코드에 텐서보드 Summary를 해놓았다면 해당 job에 들어가서 tensorboard 링크를 눌러 실행시킬 수 있음.


코드는 github에 올려놓았으니 참고하시길 바랍니다.


그리고 학습이 완료된 후 output(checkpoint(.ckpt), GraphFile(.pb), tensorboard event file 등등)을 확인하기 위해서는 반드시 /output 하위 경로로 저장되게 코드를 수정해줘야 한다.



그래야지 다음과 같이 학습이 끝난 후 output에서 해당 결과를 확인가능함

output은 다운로드 받을 수 있으며 CLI탭에 들어가서 로컬에서 명령어로 쉽게 다운로드 가능하다. :)



지금까지는 FloydHub를 이용하여 기존의 예제 코드에 조금 수정을한 CIFAR10를 학습해보았다. 다음은 이 모델을 안드로이드에서 TensorFlow Lite를 사용하여 run해보려고 한다.