저번 포스팅에 이어 생성된 구글 클라우드 플랫폼(GCP)에 Cuda 및 사용할 프로그램을 설치해보도록 하겠다
포스팅의 순서는
1. Cuda & Cudnn 설치
2. tensorflow 설치
3. pytouch 설치
4. caffe 설치
본 설치 방법은 ubuntu 16.04 버전에서 진행 되었다
Cuda 설치
Cuda.설치는 GCP 홈페이지 링크 를 타고 가도 잘 설명이 되어 있다
하지만 블로그에 간략하고 간단하게 요점만 포스팅을 한다면
일단 SSH를 통해 GCP에 접속을 한다
접속을 하면
curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
을 통해 Cuda 를 다운로드 받을 수 있다.
다운이 완료 되면
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
를 통해 설치 준비를 하고
sudo apt-get update
를 통해 package를 업데이트 하고
sudo apt-get install cuda-8-0
을 통해 설치를 할 수 있다

을 통해 설치를 마치면
nvidia-smi
를 통해 설치 된것을 확인 할 수 있다

Cuda를 설치 했다면 많은 알고리즘들이 사용하고 있는 cudnn을 설치 해보자
cudnn을 설치하기 위해서는 Nvidia 사이트로 이동을 해서 받으면 된다
cudnn은 드라이버와 다르게 가입을 해야 받을 수 있으니 가입을 해서 받는다
일단 클라우드에서 다운 받는 법을 몰라 다른 운영체제에서 받아서 복사 해보도록 하겠다

가입을 한 후 cudnn을 받는다
앞으로 사용할 cudnn은 7버전으로 cuda-8에서 사용할 버전을 다운받는다 (cudnn 버전은 사용의 목적에 따라 다른버전으로 받아도 된다)

위 블록으로 설정한 3가지 Runtime-library, deb-lib, doc-lib 3가지를 전부 받는다
3가지를 전부 받았다면 scp 명령어로 클라우드로 3가지 파일을 카피 한다
ssh 접속하는 방법과 비슷하다
scp -I ~/.ssh/my-ssh-key [LOCAL_FILE_PATH] [USERNAME]@[IP_ADDRESS]:~
를 통해 파일을 전송 할 수 있다
3가지 파일을 전부 전송 하였다면 cuda 설치와 마찬가지로 설치를 하면된다
sudo dpkg -i libcudnn7_7.0.3.11-1+cuda8.0_amd64.deb
sudo dpkg -I libcudnn7-dev_7.0.3.11-1+cuda8.0_amd64.deb
sudo dpkg -I libcudnn7-doc_7.0.3.11-1+cuda8.0_amd64.deb
위에서 부터 cudnn: runtime lib, dev lib, doc lib 이다
설치가 완료가 되면 설치한 doc 을 통해 설치가 잘 되었는지 확인해 볼수 있다
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
를 통해 설치한 doc의 sample을 home으로 옴겨온 이후
make를 통해 설치를 마친다
그 이후 ./mnistCUDNN 를 통해 실행을 하면 설치가 잘 되었는지 확인 할 수 있다

Test passed!! 가 뜨면 설치에 성공한 것이다
Tensorflow 설치
Tensorflow 설치는 설치 방법이 여러가지가 있다
Tensorflow 의 설치 방법에는
PIP 설치, Virtualenv 설치, Anaconda 설치, Docker 설치 가 있다
먼저 PIP와 virtualenv 설치를 알아 보고 차후 Anaconda와 Docker를 알아보도록 하겠다
- PIP 설치
PIP는 파이썬의 패키지를 관리해주는 프로그램이다
PIP가 설치되어 있지 않다면 우선 PIP를 설치해 주어야 한다
$ sudo apt-get install python-pip python-dev # for Python 2.7
$ sudo apt-get install python3-pip python3-dev # for Python 3.n
를 통해 PIP 설치가 가능하다
PIP3는 python3 버전이다
PIP(PIP3)의 설치가 끝났다면 Tensorflow를 설치 할 수 있다
$ pip install tensorflow # Python 2.7; CPU support (no GPU support)
$ pip3 install tensorflow # Python 3.n; CPU support (no GPU support)
$ pip install tensorflow-gpu # Python 2.7; GPU support
$ pip3 install tensorflow-gpu # Python 3.n; GPU support
현재 필요로 하는 python 버전에 맞는 tensorflow를 골라서 설치하면 된다
GPU를 가지고 있기 때문에 GPU버전으로 설치를 한다
설치가 끝난다면
$ python3
>>> import tensorflow
로 설치를 확인한다

만약 삭제를 하고 싶다면
$ sudo pip uninstall tensorflow # for Python 2.7
$ sudo pip3 uninstall tensorflow # for Python 3.n
로 삭제해버리면 된다
설치가 안되거나 import tensorflow가 안되는 경우 아래에 따로 정리를 해두겠습니다
- Virtualenv 설치
위에서 python(or python3가 설치되어진 상태로 진행합니다)
PIP혹인 PIP3가 설치되어 있다면
sudo apt-get install python-virtualenv
을 이용해 Virtualenv를 설치 합니다

설치가 완료 되면
$ virtualenv --system-site-packages targetDirectory # for Python 2.7
$ virtualenv --system-site-packages -p python3 targetDirectory # for Python 3.n
로 가상 디렉토리(?) 를 생성합니다
targetDirectory에는 생성될 virtualenv의 이름으로 보면 편하게 생각할 수 있습니다
만약 생성될 디렉토리의 이름을 tensor-vir 라고 한다면
virtualenv --system-site-packages tensor-vir 또는 virtualenv --system-site-packages -p python3 virtualenv 로 하면 됩니다

생성하면 디렉토리 목록에 virtualenv가 생성된 것을 확인할 수 있습니다
디렉토리가 생성된 것을 확인했다면
$ source ~/[DirectoryName]/bin/activate # bash, sh, ksh, or zsh
$ source ~/[DirectoryName]/bin/activate.csh # csh or tcsh
둘 중 사용할 방법으로 virtualenv 를 activate해줍니다

activate가 된다면 다음과 같이 폴더명이 현재 위치 앞에 괄호로 표시되게 됩니다
(tensorflow)$ easy_install -U pip
을 이용해서 virtualenv 상에 pip을 설치 하고
PIP 에서 설치한 것과 마찬가지로
(DirectoryName)$ pip install --upgrade tensorflow # for Python 2.7
(DirectoryName)$ pip3 install --upgrade tensorflow # for Python 3.n
(DirectoryName)$ pip install --upgrade tensorflow-gpu # for Python 2.7 and GPU
(DirectoryName)$ pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU
를 이용하여 설치를 해줍니다
설치를 확인하는 방법은 마찬가지로
python(또는 python3)를 실행한 후 import tensorflow를 해보면 됩니다

만약 작업이 다 끝났다면
(DirectoryName)$ deactivate
를 통해 원래 작업하던 위치로 돌아올 수 있습니다
만약 만들어 뒀던 virtualenv 를 지우고 싶다면
$ rm -r [DirectoryName]
을 통해 삭제하면 됩니다
만약 위 설치데로 하면 libcudnn.so.6 이라는 파일이 없다는 에러가 발생할 수 있다

저렇게 나오는 이유는 현재 tensorflow와 연결된 cudnn이 버전 6이어서 그렇다
일단 python의 tensorflow의 파일을 건드려 연결된 cudnn의 버전을 7 로 만드는법도 있다고는 하지만 가장 편한 방법은 심볼릭 링크를 바꿔주는 것이다
우선 설치된 libcudnn.so.X(버전)의 위치를 찾아 보자

을 통해 파일의 위치를 파악한 후

sudo ln -s [SourceFile] [DestinationFile] 를 통해 심볼릭 링크를 만들어서 사용하면 된다
다음 포스팅은 이어서 pytouch와 caffe 설치를 해보도록 하겠다