Ubuntu 16.04에서 Tensorflow GPU 지원 버전 설치하기

삽질 기록 2018.05.01 10:13 Posted by 아는 개발자 아는 개발자

Ubuntu 16.04에서 GPU 가속화를 지원하는 Tensorflow를 설치하는 방법

이 포스트는 Tensorflow 공식 가이드 페이지를 읽고 글쓴이의 컴퓨터에 설치한 과정을 정리한 것이다. PC 환경에 따라 차이가 있을 수 있으므로 포스트를 읽고 설치하기 전에 개인 PC환경이 글쓴이와 어떤점이 차이가 나는지 먼저 확인해두길 바란다. 똑같은 instruction을 사용해도 어떤 PC는 되고 어떤 거는 안되는 경우가 많다. 글쓴이의 PC 환경은 다음과 같다.

CPU: Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz, Quad Core

GPU: GEFORCE GTX1060 (그래픽 드라이버 설치 완료)

RAM: 8GB

Kernel: 4.4.0-122-generic


* 혹시 우분투 커널 버전을 업데이트 했다면 중요한 자료들을 미리 백업해두길 바란다. 글쓴이는 처음에 4.9로 업데이트한 커널로 설치해봤는데 재부팅하니 갑자기 컴퓨터가 안켜지는 문제가 있었다. 아무리 찾아도 해결책을 찾을 수 없어 별 수 없이 커널을 밀고 재설치를 했었다.


1. CUDA Toolkit 다운로드 및 설치

Nvidia 홈페이지에서 tensorflow를 지원하는 cuda 설치 패키지를 다운 받는다. 현재 tensorflow는 cuda 9.0만 지원하고 있으니 이에 유의하도록 하자. 만약 현재 사용중인 NVIDIA driver가 cuda 9.0가 호환하지 않으면 삭제하고 재설치해야 하는 경우도 있다. 이런 경우에는 runfile을 받으면 호환되는 그래픽 카드 드라이버도 같이 받을 수 있다.

* CUDA는 GPGPU에서 사용하는 병렬 처리 알고리즘 기술을 C언어를 비롯한 여러가지 언어에서 사용할 수 있도록 지원하는 기술이다. GPGPU를 사용하기 위한 인터페이스로 볼 수 있다.




2. cuDNN 설치

이것 또한 Nvidia 홈페이지에서 자신의 PC 환경에 맞는 CUDA를 설치해야한다. 그런데 CUDA와 달리 cuDNN 부터는 따로 계정을 생성해야 한다. 가입하고 난 뒤에는 cuDNN 7.0.5 버전을 받도록 한다.

* cuDNN은 CUDA를 딥러닝에 사용할 수 있도록 만든 API다.


설치 가능한 목록에서 자신의 환경을 꼼꼼히 확인하고 다운 받아야 한다. Ubuntu 16.04에서는 Runtime Library와 Developer Library가 있는데 나는 Runtime을 선택해서 설치했다.


3. 그래픽 드라이버 설치

본인이 갖고 있는 그래픽 카드에 맞는 그래픽 드라이버를 설치한다. NVIDIA 홈페이지에서 그래픽 카드 드라이버를 받을 수 있다. 미리 설치 했으면 할 필요 없다. 설치 방법이 apt-get 처럼 단순하지 않다. 설치 방법은 추후 별도의 포스트로 올리겠다.


4. Tensorflow 설치 

Tensorflow 홈페이지에서는 총 네가지 방법(Virutalenv, native, Docker, anaconda)을 지원하는데 이중에서 가상 환경을 만들어서 사용하는 방법(Virtualenv)을 권장하고 있다. Virtualenv는 특정 폴더에 python 환경을 독립적으로 꾸릴 수 있는 환경을 제공하는데 이곳에 tensorflow를 설치하면 다른 파이선 프로그램의 디펜던시가 걸릴 우려가 없어 관리하기가 편하다. 글쓴이는 virtualenv를 이용해서 설치했다.

  1. 먼저 python 패키지 관리 시스템과 virtual env를 apt-get으로 설치한다.

    $ sudo apt-get install python-pip python-dev python-virtualenv # for Python 2.7
    $ sudo apt-get install python3-pip python3-dev python-virtualenv # for Python 3.n

    파이썬 2.7과 3.n 버전이 엄격히 구분되니, 앞으로 사용할 파이선 버전에 따라서 명령어를 잘 선택한다.

  2. python 환경을 독립적으로 꾸릴 폴더에 가상 환경을 설정한다.

    $ virtualenv --system-site-packages targetDirectory # for Python 2.7
    $ virtualenv --system-site-packages -p python3 targetDirectory # for Python 3.n
  3. 다음 명령어중 하나로 Virtualenv 환경을 활성화 한다.
    세가지 명령어를 다 시도하면 virtualenv 환경에서 튕기니까 주의한다.

    $ source ~/{targetDirectory}/bin/activate # bash, sh, ksh, or zsh $ source ~/{targetDirectory}/bin/activate.csh # csh or tcsh $ . ~/{targetDirectory}/bin/activate.fish # fish

  4. 정상적으로 됐으면 아래와 같이 활성화된 창이 뜬다.

    (targetDirectory)$

  5. Virtualenv 환경 내에서 pip가 설치 됐는지 확인해본다.

    (targetDirectory)$ easy_install -U pip
  6. pip 버전에 따라서 tensorflow를 설치한다

    (targetDirectory)$ pip install --upgrade tensorflow-gpu  # for Python 2.7 and GPU
    (targetDirectory)$ pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU
    

5. 설치 완료 메시지 확인

아래와같은 메시지가 나오면 정상적으로 tensorflow가 설치된 것이다


  1. CB 2018.08.01 22:49  댓글주소  수정/삭제  댓글쓰기

    안녕하세요,
    runtime library 와 developer library 간의 차이를 알 수 있을까요?
    검색 해본다고 해봤는데 잘 모르겠습니다.

    • 아는 개발자 아는 개발자 2018.08.01 23:09 신고  댓글주소  수정/삭제

      Runtime Library: cnDNN을 돌릴 때 필요한 기본적인 API를 설치합니다. Window에서 일반 프로그램 설치 옵션중 하나인 '기본 설치'와 비슷하다고 보시면 됩니다. 이것만 설치해도 Tensorflow를 실행하는데 전혀 지장 없습니다.

      Developer Library: 헤더파일과 일부 코드만 제공하고 나머지는 개발자가 직접 빌드해야 합니다. Tensorflow에서 cuDNN을 사용하는 코드를 변경해서 돌려보고 싶은 경우에 사용하는 라이브러리입니다.

      요약: tensorflow를 API만 사용하는 경우에는 Runtime Library를, 직접 코드를 수정하는 경우에는 Developer Library를 사용하시면 됩니다.

      출처: https://stackoverflow.com/questions/48784645/which-nvidia-cudnn-release-type-for-tensorflow-on-ubuntu-16-04