Machine Learning 서버 구축


학계의 수 십년간의 연구와 세미나보다 알파고의 5번의 대국이 Machine Learning(기계학습) 이란 전문용어를 초등학교 학생들 사이에서도 회자되게 하였으니...그 동안 발전된 기계학습의 기술도 대단하지만 기업의 마케팅과 메스미디어의 영향이 얼마나 큰지 보여주는 일면이기도 하다.

그 동안 Deep Neural Network은 Non-linear Activation 문제, Label되어 있는 Data의 부재, Overfitting과 Back-propagation의 한계, Local minima의 문제 등으로 한계에 도달했었으나 최근에 ReLU, Big Data, Dropout, GPGPU의 활용 등으로 그 활용가능성을 충분히 보여주고 있다. 
또한 Caffe, Touch, Theano에 이어 구글이 최근 오픈한 Tensorflow 등의 Deep Learning 프레임워크는 Machine Learning을 만개하는 촉매역할을 충분히 하고 있다.

그럼 Tensorflow와 일반 PC를 이용한 Machine Learning 서버를 구축해보자.

하드웨어는
   - CPU : Intel Core i7
   - Main Memory : 16 GB
   - Graphic Card : GeForce GT 620
CPU는 일반 PC에서 사용하는 8 Core i7 정도면 되지만 RAM은 8~16 GB 정도지만 다다익선이고, 그래픽 카드는 Nvidia 980이상을 추천한다. (타이탄 X면 더욱 좋지만 비싸니 집에 돌아 다니는 GT 620도 그런데로...^^)

OS는 CUDA 설치를 위하여 최신의 LTS버전인 Ubuntu 16.04 보다는 14.04.4 버전을 설치한다.

우분투는 http://www.ubuntu.com/download/alternative-downloads 에서 64 bit로 다운로드를 받아 부팅이 가능한 CD나 USB로 Burning하여 설치한다.
우분투 설치는 오래전 스랙웨어와 비교하면 너무나 쉽다. (그냥 엔터 몇번...^^)
우분투 설치 후, 혹시 한글 입력이 필요하면 dasom을 설치한다.
$sudo apt-get update
$sudo apt-get install dasom dasom-jeongeum dasom-gtk dasom-qt
System Setting의 Language Support에서 Keyboard Input Method를 "dasom"으로 변경하면 OK. ^^

우분투에는 Python이 기본 설치되어 있어 콘솔로 프로그램이 가능하지만 작성의 편의를 위하여 Jupyter의 설치를 권장한다.
주피터는 다중 Kernel를 이용한 다른 언어의 사용과 파이썬의 버전 3와 2을 동시에 사용할 수 있어 편리하다.
$sudo jupyter kernelspec install-self
/usr/local/share/jupyter/kernels 아래에 python2 또는 python3 커널 설정 디렉토리가 생기는데 이를 ~/.local/share/jupyter 로 옮기고 kernel.json 파일을 수정하면 된다.

다음은 https://developer.nvidia.com/cuda-downloads 에서 Ubuntu 14.04/64 bit 용CUDA 7.5 버전을 다운로드받아 설치한다.
$sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
$sudo apt-get update
$sudo apt-get install cuda

CUDA설치가 되면 cuDNN V4를 다운로드하여 /usr/local/cuda에 복사한다.
(cuDNN는 등록된 사용자만이 다운로드 가능) 

설치된 CUDA를 사용하기 위해서는 ~/.bashrc에 환경을 설정한다.
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda

이제 환경설정이 되었으니 Tensorflow를 설치해보자.
https://github.com/tensorflow 에 Pip를 이용하는 방법이외에 Virtualenv, Anaconda, Docker 등이 있으니 사용하는 서버의 환경에 맞는 것을 선택하면 된다.
서버를 Machine Learning 단독이 아닌 다른 용도로도 사용할 목적이라면 Virtualenv나 Docker의 사용도 고려할만 하지만 단독인 경우에는 Pip로 설치하는 것도...
$sudo apt-get install python-pip python-dev
$sudo pip install --upgraded https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
와 같이 GPU버전을 설치한다.

이제 설치가 완료되었으니 테스트를 위하여 Terminal을 열고
$jupyter notebook
을 실행하면 Jupyter 웹브라우져가 열린다.
Python 2를 선택하여 새로운 페이지를 열어 Tensorflow 코딩을 한다.
In [1] import tensorflow as tf
In [2] hello = tf.constant("Hello World")
In [3] sess = tf.Session()
In [4] sess.run(hello)

Terminal 창에 CUDA와 연결되었다는 메시지가 나오고 Jupyter의 실행결과로 "Hello World"가 나타나면 설치 OK.
(Jupyter는 명령어를 실행할때 Shift-Enter를 쓰는 센스...^^)

다음 포스팅은 Tensorflow를 이용한 Machine Learning을...

by 윤석용

댓글

이 블로그의 인기 게시물

맥에서 여러 버전의 R을 사용하기

오즈와 오즈비, 왜 사용하지?

Raspberry PI에 R을 설치하여 빅데이터 분석