딥러닝 테스트용 PC 설치 및 설정

3 분 소요

최근 사내프로젝트의 일환으로 이미지 분석 및 처리를 위한 딥러닝 테스트 PC를 구매하였다. 이 글에서는 딥러닝 테스트용으로 구매한 PC의 기본적인 설정을 했던 내 경험에 대해 기술하고자 한다.

이번에 구매한 PC의 주요한 하드웨어 스펙은 다음과 같다. 구매한 부품 중 가장 중요하게 생각해야 할 부품은 그래픽 카드, 파워, 케이스이다.

PC 하드웨어 스펙

OS 설치

우선 OS는 Linux 계열 중 CentOS 7을 설치하기로 했다.(이 중 mininal 버젼 설치) 별 다른 이유는 없었고 Windows는 개발용으로 적합하지 않았고, 다른 개발 서버와 서버 계열을 맞추는게 여러모로 편했기 때문이다.

win32diskimagek를 이용하여 부팅디스크를 만들었고, BIOS 설정에서 시동디스크를 변경하여 설치를 시작했다. 설치가 잘 되는 듯 하다가 모니터가 갑자기 먹통이 된다…. 정신이 아득하다….. 검색해보니, 구매한 gtx 1080의 Driver가 설치가 되지 않아 모니터가 IO를 받을 수 없는 문제라 한다. 해결책은 원격 접속을 통해 Driver를 설치하란다..(저기 뭐 OS가 설치완료되어야 원격 접속을 하지요…)

정신을 차려보자.

일단, OS 설치를 완료하고 그래픽 카드 Driver를 설치하면 되겠지라는 마음으로 다음과 같이 진행을 했다.

  1. 그래픽 카드 DVI에 연결되어 있는 모니터 케이블을 메인보드 DVI에 연결
  2. BIOS에서 GPU 선택 옵션을 AUTO로 변경

설치를 다시 시작한다. 설치가 잘된다. 네트워크, 계정 정보 등 여러가지 옵션들을 내가 원하는대로 정한 후, 설치를 완료하도록 하자.

기본 설정

CentOS 7을 설치하고 나서, 기본적인 기능을 위해 다음과 같은 스크립트를 실행시켰다.

#!/bin/bash                                                                     

sudo yum update                                                                 
sudo yum install net-tools                                                      
sudo yum install vim-enhanced                                                   
sudo yum install git                                                            
sudo yum install wget       

vim을 사용하지 않는 사용자라면 vim-enhanced를 설치하지 않아도 된다.

그래픽 드라이버 설치

그래픽 드라이버 설치는 그래픽 드라이버 설치 블로그를 참고하여 설치하였다. 설치를 위해 필요한 전처리를 해주고 NVIDIA 드라이버 공식 홈페이지를 가서, 자신의 OS와 GPU에 맞는 옵션을 선택하여 드라이버를 다운로드한다. (다운로드 링크가 직접적으로 제공되지 않아, 직접 다운로드 받은 후 파일을 scp로 이동시켰다.)

다운로드 받은 run 파일을 다음과 같이 실행시키고 안내에 따라 설치를 완료하면 된다.

bash NVIDIA-Linux-x86-64-375.26.run

cuda 및 cudnn 설치

cuda는 GPU에서 수행하는 일련의 알고리즘을 여러 표준 언어를 사용해서 작성할 수 있도록 하는 기술이다. 우리가 비싼 돈을 들여 GPU를 구매한 이유도 바로 이 기술 때문인데, 이 기술이 딥러닝에 필요한 엄청난 양의 연산을 GPU에서 병렬 연산처리할 수 있도록 지원해주기 때문이다. cuda 설치 안내 홈페이지에서 안내하는대로 설치를 진행하면 cuda 설치를 완료할 수 있다. cuda 설치파일을 받는 방법은 다양한 방법이 존재하는데, cuda 다운로드 공식 홈페이지에서 자신의 옵션에 맞게 선택하여 진행하면 된다.

cuda 설치가 완료되면 cudnn을 설치하도록 한다. cudnn은 딥러닝을 위해 고안된 GPU 특화 라이브러리로써, 대다수의 딥러닝 관련 프레임워크(Caffe, Tensorflow, Theano 등)들은 cudnn을 지원한다. cudnn은 cudnn 다운로드 공식 홈페이지 에서 다운로드 받을 수 있는데, 꽤 많은 정보를 입력해야 한다.

다운로드 받은 후, 압축을 풀고 아래와 같이 관련 파일을 cuda 설치 path에 복사한다.

cd cuda
sudo cp lib64/* /usr/local/cuda/lib64/
sudo cp include/* /usr/local/cuda/include/

pyenv 설치

pyenv는 다양한 버젼, 환경의 python을 쉽게 설치할 수 있고, virtualenv과 같이 사용하여 프로그램 실행에 필요한 실행 환경을 시스템 의존성과 관계없이 구축할 수 있다는 장점이 있다.

이를 위해 아래와 같이 pyenv를 설치했다.

#!/bin/bash                                                                        
                                                                                   
sudo yum install -y  gcc gcc-c++ make git patch openssl-devel zlib-devel readline-devel sqlite-devel bzip2-devel
                                                                                   
git clone https://github.com/yyuu/pyenv.git ~/.pyenv                               
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
                                                                                   
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile                         
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile                      
                                                                                   
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile                                   
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile                        
                                                                                   
exec $SHELL                                                                        
                                                                                   
source ~/.bash_profile   

tensorflow 설치

tensorflow는 구글에서 만든 오픈소스 프로젝트로써, data flow graph를 이용하여 수치 계산을 용이하게 해주는 라이브러리이다. 일반적으로, 인공지능 분야에서 많이 사용하고 있으며, 파이썬을 API 형태로 제공된다.

tensorflow는 파이썬 패키지 매니저인 pip를 이용하여 설치할 수 있으나, 최신 버젼 등록이 안되어있을 수도 있기 때문에, virtualenv를 이용한 tensorflow 설치를 따라 직접 설치를 진행했다.

tensorflow cuda 연동 확인

위의 과정들을 거치면 GPU를 활용하여 tensorflow를 이용할 준비가 되었다고 할 수 있다.

tensorflow에서 cuda, cudnn을 잘 열수 있는지 확인하기 위해서는 아래의 명령어를 입력해보면 된다.

python -c "import tensorflow"

필자의 경우, 아래와 같은 메시지가 출력되었는데 이는 tensorflow에서 cuda, cudnn을 정상적으로 이용할 수 없다는 것이다.

I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.so.7.0 locally
I tensorflow/stream_executor/dso_loader.cc:102] Couldn't open CUDA library libcuda.so.1. LD_LIBRARY_PATH:...

이를 해결하기 위해서는, 아래의 커맨드를 입력해서 cuda의 설치경로를 잡아준다.

echo 'export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}' >> ~/.bash_profile
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bash_profile

수정 후, 다시 tensorflow를 실행하면 아래와 같은 처리메시지가 나올 것이다.

I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally

다음 글에서는 keras를 이용하여, 이미지 카테고리를 분류하는 작업을 진행하고자 한다.