본문 바로가기

Enginius/Python&TensorFlow

TensorFlow 설치하기

TensorFlow를 사용해볼까 한다. (오늘은 3월 2일)


아직 아무것도 준비된 건 없고, 오늘 처음으로 연구실 새로운 서버 아이디를 만들고 접속을 했다. 

현재 접속 중인 서버의 사양은 

cat /etc/issue

를 치니 나오는데 

Ubuntu 14.04.3 LTS

이다. 

오늘 처음으로 

https://www.tensorflow.org/versions/r0.7/tutorials/index.html

에 들어가서 MNIST For ML Beginners를 볼 예정이다. 

https://www.tensorflow.org/versions/r0.7/tutorials/mnist/beginners/index.html

에 들어왔다. 


일단 설치를 하라고 한다. 

https://www.tensorflow.org/versions/r0.7/get_started/os_setup.html

에 들어왔다. 


텐서 플로우는 Python 2.7과 Python 3.3를 지원한다고 한다. (난 파이썬을 모른다.)

GPU역시 Cuda Toolkit >= 7.0과 cuDNN >= v2 라고 한다. (몬소린지 모른다.)


일단 현재 서버의 GPU를 확인해보자. 

lspci | grep -i vga

를 치면 나온다. 

02:00.0 VGA compatible controller: NVDIA Corporation GM200 [GeForce GTX TITAN X] (rev a1)

82:00.0 VGA compatible controller: NVDIA Corporation GM200 [GeForce GTX TITAN X] (rev a1)

라고 나온다. 

왠지 타이탄이 두 개 있는 것 같다. (아마도)


https://www.tensorflow.org/versions/r0.7/get_started/os_setup.html#optional-install-cuda-gpus-on-linux

를 확인하니 타이탄이 지원이 되는 것 같다. 

위의 홈페이지를 참조하여 CUDA를 설치해보자. 


https://developer.nvidia.com/cuda-downloads

에 들어갔다. 

Linux를 고르니 x86_64ppc64le 중에 하나를 고르라고 한다. 

왠지 x86_64일 것 같은 느낌이 든다. 

그 다음은 Ubuntu

그리고 14.04를 골랐다. 

Installer Type을 고르란다. 왠지 모르게 deb (local)이 좋아보인다. 

1.9GB을 다운로드 하라고 한다. 13분 남았다고한다. 생각보다 인터넷이 빠른다. 


다 받은 뒤에는 아래와 같이 하라고 알려준다. 

Installation Instructions:

    sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb

    sudo apt-get update

    sudo apt-get install cuda

을 하라고 알려준다. 


문제가 생겼다. 연구실 서버에 내 아이디로 들어가서는 sudo를 쓸 수가 없다. 게다가 이미 쿠다는 설치가 되어있다고 한다. 그럼 연구실 아이디로 들어가서 TensorFlow를 설치해보자. 아이디와 비번은 매우 익숙한 그것이다. 

연구실이름 / 이름거꾸로+날짜


먼저 설치되어있는 쿠다의 버젼을 확인해보자. 

nvcc --version

을 하면 

nvcc: NVIDIA (R) Cuda compiler driver

Copyright (c) 2005-2015 NVIDIA Corporation

Built on Tue_Aug_11_14:27:32_CDT_2015

Cuda compilation tools, release 7.5, V7.5.17

위와 같이 나온다. 7.5가 깔려있다. 

텐서플로우 설치에는 총 세 가지 방법이 있는 것 같다. 

Pip install 

Virtualenv install

Docker install

이 중에서 맨 처음 있는 Pip install을 이용해서 해보자. 


Pip는 Python으로 쓰여진 software package를 설치하고 관리하는 시스템이라고 한다. 

먼저 pip (혹은 pip3)를 설치를 해보자. 

sudo apt-get install python-pip python-dev

이것 저것 설치가 되었다. 


이제 텐서플로우를 설치하자. (Ubuntu/Linux 64-bit, GPU enabled)

sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl

복붙이 안되어서 이걸 그대로 쳤다.. 

몬가 많은 일들이 일어난다. 에러가 안나길. 제발. 


이게 끝나고 나면, python3를 설치해야한다. (For python3: 이라고 되어있는데, 잘 모르겠다 사실)

sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.7.1-cp34-none-linux_x86_64.whl

- 엇 이건 안된다. 

tensorflow-0.7.1-cp34-none-linux_x86_64.whl is not a supported wheel on this platform.

Storing debug log for failure in /home/cpslab/.pip/pip.log

위와 같은 에러가 나온다. 잘 모르겠다. 왠지 위에서 pip를 설치해서 그런 것 같다. 

그럼 이제 제대로 설치가 되었나 확인해보자. 
https://www.tensorflow.org/versions/r0.7/get_started/os_setup.html#test-the-tensorflow-installation
를 참고하자. 

그전에 추가로 할 일이 있다. 
If you installed the GPU version of TensorFlow, you must also install the Cuda Toolkit 7.0 and cuDNN v2. Please see Cuda installation. 
You also need to set the LD_LIBRARY_PATH and CUDA_HOME environment variables. Consider adding the commands below to your ~/.bash_profile
These assume your CUDA installation is in /usr/local/cuda:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64" 
export CUDA_HOME=/usr/local/cuda
이미 되어있다. 외쳐 갓건호
혹시나 나중에 할 일이 있을 수도 있으니 적어놓자면 .bash_profile은 
cd /home/cpslab
에 있다. 물론 여기서 cpslab은 현재 접속 아이디를 의미한다. 여기서
gedit .bash_profile
을 하면 에디터가 열리고 수정하고 저장하면 된다. 

그럼 이제 진짜 텐서플로우를 돌려보자. 

커맨드 라인에서 돌려보기
$ python 
... 
>>> import tensorflow as tf 
>>> hello = tf.constant('Hello, TensorFlow!') 
>>> sess = tf.Session() 
>>> print(sess.run(hello)) 
Hello, TensorFlow! 
>>> a = tf.constant(10) 
>>> b = tf.constant(32) 
>>> print(sess.run(a + b)) 
42 
>>>


에러가 난다!!!

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally

I tensorflow/stream_executor/dso_loader.cc:99] Couldn't open CUDA library libcudnn.so. LD_LIBRARY_PATH: /usr/local/cuda-7.5/lib64

I tensorflow/stream_executor/cuda/cuda_dnn.cc:1407] Unable to load cuDNN DSO

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally


아마 여기서 문제가 되는게 libcudnn.so를 열수 없어서 그런 것 같다. 이 파일이 LD_LIBRARY_PATH에 없다. 

CUDA 7.5가 Ubuntu 14.04에서 pip install과 충돌이 일어난다는 설이 있다.
출처: https://github.com/tensorflow/tensorflow/issues/20

좀 더 구글링을 해보자... 


일단 cudnn을 다시 설치하는 방향으로 가본다. 

https://developer.nvidia.com/cudnn

에 들어간다. 

아이디가 필요하지만, 건호걸 사용한다. 

cuDNN v4 Library for Linux

를 일단 받는다. 


cudnn 설치 방법

LINUX

   cd <installpath>

   export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH


   Add <installpath> to your build and link process by adding -I<installpath> to your compile

   line and -L<installpath> -lcudnn to your link line.

이게 무슨 소리냐.. 

사실 위에 있는게 무슨 소리인지는 모르겠고, cudnn을 받은 다음에 /usr/local/cuda-7.5에 해당 폴더에 붙여넣기를 했다. 리눅스에서 그냥 복붙을 하면 안되고, 

sudo chmod 777 -R /해당폴더

를 해줘야한다. 귀찮다. 


이제 아래 써 있는 것들이 된다. 

python 
... 
>>> import tensorflow as tf 
>>> hello = tf.constant('Hello, TensorFlow!') 
>>> sess = tf.Session() 
>>> print(sess.run(hello)) 
Hello, TensorFlow! 
>>> a = tf.constant(10) 
>>> b = tf.constant(32) 
>>> print(sess.run(a + b)) 
42 
>>>



이제 데모를 돌려보자. 

cd /usr/local/lib/python2.7/dist-packages/tensorflow

로 가자. 

python -c 'import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))'

치자. 

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally

위와 같이 나온다. 제대로 되는 건가..?

진짜 데모를 돌려보자. 아래와 같이 치자. 
python -m tensorflow.models.image.mnist.convolutional

이러면 몬가 막 된다.. 다운도 받는다. 

...

Minibatch error: 0.0%

Validation error: 0.9%

Test error: 0.7%

이런 결과가 나온다. 99.3% 정확성을 갖는 CNN이 학습이 된 것 같다. 




'Enginius > Python&TensorFlow' 카테고리의 다른 글

JupyterHub on AWS EC2  (0) 2016.04.08
딥러닝 강의 1주차 + VirtualBox에 Ubuntu + Anaconda  (4) 2016.04.08
AWS EC2 Ubuntu 사용하기 + Jupyterhub 써보기  (0) 2016.04.07
Basic Python Usage  (0) 2016.04.06
TensorFlow 맛보기  (2) 2016.03.02