2016년 9월 27일 화요일

Python Anaconda & GPU - 세팅 및 성능 비교

요즘 Python 의 행보가 매우 무섭다. 

특히 Machine Learning 쪽에서 다양한 오픈 모듈이 나오면서 힘을 받기 시작했고,  Deep Learning 쪽에서는 TensorFlow 등의 걸출한 프레임워크가 그 행보에 힘을 더해 준 느낌이다. 최근 화두가 된,  microservice 또한 Python 계열에 장점이 많은 분야 중 하나이다. 


  1. 아나콘다 Accelerate 모듈 업데이트
    1. conda update conda
    2. conda install accelerate
    3. conda install numbapro
  2. NVIDIA 드라이버 다운로드
    1. 아래처럼 NVIDIA 홈페이지에서 전용 driver 다운로드.
    2. 먼저 Tesla ... 이름에서 부터 존재감이..ㅋㅋ
    3. 다음은 Quadro ... 드라이버. 존재감이 살짝 떨어짐 TT
    4. 드라이버를 각각 서버에 업로드
    5. 위처럼 기존에 있던 Nouveau 때문에 에러 남. Nouveau 를 disable 시켜야 함.
    6. 친절하게도 disable script 도 만들어 준다.
    7. 기타, 지금까지의 로그는 저 위치에 기록되어 있는 듯... 친절하기도 해라...
    8. 위 수행하고 나면 Tesla 장비는 정상 수행되나, Quadro 장비는 nouveau 가 계속 떠 있어서 충돌 남.
    9. 메뉴얼에 하라는거 다해도 계속 좀비처럼 살아남...
      1. 에이... 강제로 모듈 제거.
      2. rmmod nouveau
      3. 다시 설치... OK 설치 됨.
    10. 설치 후 메시지
  3. CUDA 툴킷으로 GPU Check
    1. 먼저 Tesla M40 장비
    2. 정상 설정 되었음.
    3. 다음은 Quadro K4200 장비
    4. 야도 정상 설정 되었음.
  4. CPU 와 GPU 성능 비교를 위해 사용된 코드
    1. CPU  버전 성능 체크를 위해 사용한 코드
    2. GPU 버전 성능 체크를 위해 사용한 코드
  5. Python Code 로 두 장비에서 CPU vs GPU 성능 비교.
    1. Tesla 장비
      1. CPU 버전 코드 3번 수행 결과
      2. GPU 버전 코드 3번 수행 결과
    2. Quadro 장비
      1.  CPU 버전 코드 3번 수행 결과
      2. GPU 버전 코드 3번 수행 결과
    3. 성능 비교상 기존에 보유하고 있던 1500만원 상당의 Legacy X86 표준 장비와도 성능 비교 해 봄.
      1. GPU는 Support 하지 않으므로 CPU 만 수행하였음.
  6. 종합 결과 (일단, 가격 요소를 제외하고, 성능 부분만 정리하였음.  ps.  Legacy 장비대비 GPU 2개씩 꼳힌 장비들이 약 3배 비쌈.)
이상.

위처럼 GPU 가 CPU 에 비하여 월등한 컴퓨팅 파워들 보여주고 있다. 

ps. 물론 실제 Production 환경에서 저정도 차이가 나거나 하지는 않는데, 모든 연산위 위에서 실험한 GPU 지원 백터 연산만 있는 것은 아니기 때문이다.

2016년 9월 2일 금요일

최신 IT 트랜드(Language on Data Platform 측면)의 "왕좌의 게임"

Data 를 다루는 언어들, 기술들이 최근 하루가 다르게 발전하고, 또 변화하고 있습니다. 특정 기술들은 이쪽 라인에 붙어 있다가, 저 쪽 라인에 붙는가 하면, 잘나가다가 어느새 훅 사라져버리기도 하죠. 주인공들이 픽픽 죽어나가는 것이, 마치 미드 "왕좌의 게임"을 보는 듯 합니다.

어느 한 기술을 고수하다 보면(국지전에 너무 매진하다 보면), 자칫 커다랗게 밀려오는 큰 흐름을 놓치고, 그 흐름을 따라가는데 힘이 겨워 질 수도 있을 것입니다.(곧 다가올 겨울에 대한 대비를 간과하게 될 지도 모릅니다.)

그런 측면에서, 얼마전 사내 BigData 기술 전파를 위한 공지 메일에서 경각심 부각 용으로 작성했던, "최신 IT 트랜드(Language on Data Platform 측면)의 왕좌의 게임 비유"를 블로그에 옮겨 보았습니다.


언어
주요 지원 프레임워크
왕좌의 게임
비고
Java
Spring,
Netty,
MapReduce


Korea 국민 언어 Java.
저도 빅데이타하면서 3~4년전에는 Java Spring Data 위에서 MapReduce 쓰다가 흰 머리가 많이 났었습니다.조금 더 그 좋지 않았던 경험이 반복되었다면, 신생 언어를 만들어 낼뻔 한 순간, 트위터 애들이 먼저 그짓을 마무리 해주었었죠. 잠시나마 cascading 위에서 clojure 랭귀지를 다루거나, Riak 언어를 기웃거리던 계기를 Java가 제공하기도 했었습니다.
그렇게 개발자들에게 무관심하던 Java 는 왕좌의 게임의 라니스터 가문입니다. 천하를 통일했던 옛 명성이 있지만, 요즘은 왠지 좀 불안불안 합니다. 최근 1.8 이 나오면서, 서세이가 다시 녹색 물폭탄을 터트리고, 존재감을 드러내긴 했습니다만… C# 처럼 상위 프레임워크 지향 Legacy 호환성이 있는 것이 아니므로, 여러 Enterprise 기업들은 1.8을 구경하기조차 쉽지 않습니다.
Scala
Play 2,
Spark
Zeppelin Notebook


Play2 가 살짝 다시 각광을 받고 있기도 하지만, Scala.js 가 여기저기 조금씩 보이기도 하지만, 그 무엇보다 Scala 의 성장은 Spark 의 성장과 땔래야 땔 수가 없습니다. Scala 는 비록 한때 아무런 존재감이 없었으나, Spark Dragon 급 존재감에 힘입어, 현재 막강 화력을 자랑하고 있습니다. Spark는 이미 BigData Eco 시스템의 춘추전국 국지전에서 Map/Reduce Cascading, Pig 등을 제치고, 국지전 승리를 거둔바 있습니다. Spark 의 요즘 기세는 하늘을 나는 용과도 흡사합니다.
R
SparkR,
RevolutionR(MS R Server)


R 은 사실 매우 똑똑합니다. 세상의 모든 알고리즘이 다 있는 것 같습니만, 그런데 너무 작습니다. Small Data 밖에 다루지 못하는 것이, 마치 티리온 라니스터 같습니다. 라니스터에서 독립되어 최근 Python에도 밀리는 형국이지만, Spark 가 손을 벌려 SparkR 병렬성을 지원하고 있고, 최근 MS Revolution R 을 인수하고 커뮤니티를 지원하면서, 다시금 조금씩 병렬 R의 시대가 열릴 것 만 같습니다. 여전히 피는 다르지만, 아직 Spark 진영에 붙어 있는 것도 안전해 보이네요.  시즌6에서 용(Spark)과 친근함을 보여주기도 했었죠.
Python
DJango, Flask, 기타 등등..
Jupyter Notebook


Java 의 라니스터 가문만큼이나 오래된, 그러나 항상 변방의 2인자였던, Python은 마치 스타크 가문 같습니다. 더구나, 2010년 전후로는 거의 맛이 갈 정도로 존재감이 하락했던 적이 있습니다. 느려 터지기도 했었구요. 이제 몇 명 남지도 않았어요. 하지만, 그래서 소수의 몇몇은 여전히 매우 Agile 하죠. 더구나 시즌 6 마지막에 북부 연합은 스타크를 위한 대동단결의 결의를 보여 주었습니다. 이는 마치 Python의 개발자 생태계를 보는 듯 합니다. 요즘은 개발자들이 직접 만들어 서로 공개, 공유 하고, 패키지를 주고 받는 pip 모듈 생태계가, 집단지성의 힘으로 재 조명되어, Java C# 의 공룡 프레임워크의 그것을 위협하고 있습니다.
Spring 이나 .NET Framework 같은 공룡 가문은 없지만, 수많은 100만 지방 호족의 힘을 합치면, 라니스터를 쉽게 위협하고도 남습니다.
TensoFlow (Deep Learning Framework By Google),
SyntaxNet On TensorFlow ( for NLU, NLP By Google)
Anaconda ( for Machine Learning & Deep Learning )

Google 이 만들어내는 TensorFlow , SyntaxNet 같은 프레임워크는 GPU도 지원되고, 병렬 분산 컴퓨팅도 지원하며, 엔진 코어가 C/C++ 이라 무지 빠르기 까지 합니다. 그리고, 개발자들은 Python 으로 코딩합니다. Google 이라는 한개 회사가 붙었을 뿐인데도.. 그 존재감은 “존 스노우” 급 입니다. 우리의 알파고도 Lua 언어의 Torch 에서 python TensorFlow 로 갈아 탄바 있습니다. Python 입장에서는 존 스노우 처럼 죽다 살아난 말도 안 되는 존재감의 우군입니다.
Python Anaconda 는 아직은 약하지만, 뒤에 큰 활약이 예감되는 브랜이나 아리아 스타크 같습니다. 아직은 혼자(병렬처리 안됨) 놀지만, GPU 를 달아주면, 그 퍼포먼스가 장난이 아닙니다.