2017년 3월 14일 화요일

Azure 상에서 Tensorflow GPU instance 이용하기

Community 에 한분께서 아래와 같이 질문을 주셨습니다. 이에대한 답변을 Facebook 에 작성하다 보니, 글이 너무 길어지는 듯 하여, 이곳에 옮겨 적어 봅니다.

Q) AzureML에서 Tensorflow를 연동하는 방법을 아시는 분이 계신가요-제가 아는 범위에선 Theano 연동하는 정도만이네요 ㅠㅠ

A) 답변입니다.

안녕하세요. Data Platform MVP 인 김훈동입니다. Azure 상에서 Tensorflow 를 쓰는 몇가지 방법이 있습니다. 질문에서 AzureML 이라고 언급 주셨는데, Azure ML Studio 등에서의 사용이 아닌 Azure 상에서의 Tensorflow 구동 이라고 질문을 이해했습니다. Azure ML Studio 에서는 Tensorflow Azure 에 구축한 별도 Instance 에 원격 실행 컴멘드를 날려서 Training 을 시키고, Tensorflow Serving Layer 를 이용하여, Input 에 대한 Output Restful 하게 받아 Azure ML Studio 에서 연동하는 방법이 있을 것입니다

아래부터는 Azure Tensorflow Cluster(GPU 포함)를 구축하는 방법론입니다.

(1)   가장쉽게
A.     Azure Instance Gallery 에서 Deep Learning Toolkit for DSVM 이미지 VM을 사용하는 방법
                         i.         OS Windows 2012 RC2 입니다.
                        ii.         GPU 사용이 가능합니다.(Region east US 등으로 하면 N-Series가 보입니다.)
                       iii.         CNTK, Keras, Tensorflow, mxnet 가 모두 기본 세팅되어 있고, MS R, Jupyter Notebook, Python Anaconda등이 설치되어 있으며, Visual Studio Data Science 툴들과 Spyder IDE 등이 세팅되어 있고, 요즘 도전적인 Data Scientist 들에게 Hot Julia Lang 개발환경까지 세팅되어 있습니다.
                       iv.         Jupyter Notebook 을 열면 Tensorflow, CNTK 등의 Example 이 담긴 Notebook 들이 폴더 별로 정리되어 구동됩니다.
                        v.         Ubuntu 에서 쓰시다가 Windows 위에서 사용하는 경우 호환문제를 걱정하시는 분들이 간혹 계시는데, UTF8 한글 부분과 일부 Old 스타일 CSV 핸들링 패키지를 제외하고, 문제가 되는 경우는 별로 없습니다.

(2)   Ubuntu 가 편하다면
A.     Ubuntu Instance 에 기본 Tensorflow 가 세팅된 인스턴스는 아직 존재하지 않는 것으로 보입니다. 제가 하나 만들어서 올릴까봐요. ^^
B.      하지만, Tensorflow 설치가 그리 어렵지 않으므로, Ubuntu VM 에 직접 설치하셔도 됩니다.
C.      동남아시아나 eastUS 등에 가셔서 N-Series 를 선택하시면, GPU Ubuntu VM 을 만드실 수 있습니다. 여기서 주의할점은 이상하게 Ubuntu VM은 디스크 Type SDD가 아닌 HDD 를 선택해야 N-Series 가 보인다는 점 입니다. 그런데, 최종 만들어진 Information 을 보면 SSD 가 포함되어 있습니다.

(3)   Windows10 Instance 에 설치하여 사용하는 방법.
A.     Tensorflow 1.X 가 정식으로 릴리즈 되면서, Windows 10 에도 꽤 쉽게 설치가 가능합니다.
B.      , 현재 Windows 64비트만 지원합니다.
C.      Anaconda 64비트 설치 후 설치하면 더 쉽습니다.
D.     특히 CUDA cuDNN Windows Linux보다 훨씬 설치가 간단합니다.
                         i.         CUDA cuDNN 설치 후 내컴퓨터->우클릭->속성->환경변수 가서 path 만 잡아 주면 끝
E.      Pip GPU 버전 설치할 때,  2월 말까지만 해도, whl 파일 경로가 win_x86_64.whl 요런식으로 되어 있었고, 해당 파일은 오류가 있었는데, 현재 win_amd64.whl 로 바뀌어 있구요. 그 파일이 원래 Windows 에서 오류없이 깔리는 것으로 Blog 등에서 공유되었던 파일입니다. 현재는 공식 install guide 문서가 수정되어 있습니다. (최근에 수정되었네요2017년 3월 현재.)

(4)   Docker 사용방법
A.     영재MVP님께서 말씀해 주신 것 처럼 Docker를 이용할 수도 있습니다. Docker VM보다 유리한 점들이 분명 있죠. 장단점이 있는 것 같습니다.

(5)   좀더 고급스럽게 사용하는 방법
A.     요즘 제가 열심히 실험하고 있는 방법입니다. 실무 시나리오 사용성 검증이 끝나면 블로그 하고 공유 드리도록 하겠습니다.
B.      HDInsight Spark Cluster 가 필요합니다.
                         i.         HDinsight Spark Cluster 가 기 세팅되어 있는 Instance 를 구동합니다.
                        ii.         추가로 Tensorflow Keras 를 설치합니다.
                       iii.         오픈소스인 elephas 를 설치합니다.
                       iv.         실험해보고 있는데요. 위 조합에서는 Tensorflow Spark 의 강점을 조합할 수 있고, 추가로, Tensorflow Model에 대하여 아래와 같은 것들이 가능합니다.


답이 잘 되었으면 좋겠네요. ^^