Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

TensorFlow, Caffe, Chainer と Deep Learning大御所を一気に source code build で GPU向けに setupしてみた

More than 3 years have passed since last update.

Overview

TensorFlow, Caffe, Chainer と Deep Learningの大御所を、Ubuntu 16.04 + CUDA-8.0RC + cuDNN5.0 で 一気にsetupしてみた。

(現時点では、tensorflow with CUDA on Ubuntu 16.04だとbuild breakするので、patchを作って対処していますので、お役に立てば幸いです. )

下準備

GTX-1080 など GeForce を Ubuntu 16.04 LTS で CUDA-8.0RC と共に使う を参考に、Ubuntu 16.04LTSで、CUDA-8.0RCを、お手持ちのGeForce (GTX-1080, 1070, 750Tiなど、CUDA Computing Capability 3.0以上のGPUで.)

TensorFlow

CUDA-8.0は、source code buildしないとサポートされていませんので、source codeを取得してbuildしていくという手順です。

pip環境準備 (optional)

$ sudo apt-get install python-pip python-dev -y
$ sudo pip install --upgrade pip

TensorFlowをbuildするのに必要なもののinstall

Bazel の install

$ wget https://github.com/bazelbuild/bazel/releases/download/0.3.0/bazel-0.3.0-installer-linux-x86_64.sh
$ chmod +x bazel-0.3.0-installer-linux-x86_64.sh
$ ./bazel-0.3.0-installer-linux-x86_64.sh --user

~/.bashrc に以下を追加

source /home/hidenorly/.bazel/bin/bazel-complete.bash
export PATH=$PATH:/home/hidenorly/.bazel/bin
$ source ~/.bashrc

依存componentのinstall

$ sudo apt-get install python-numpy swig python-dev python-wheel

cuDNN5.0のinstall

CUDA-8.0とともに使えるのは、まだcuDNN5.0のみです。
(今後cuDNN5.1が利用可能になるようですが未確認です)

cuDNNは nVIDIA cuDNNからdownloadしてください(要登録)

$ cd ~/work/cuda
$ tar zxvf cudnn-8.0-linux-x64-v5.0-ga.tgz
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

TensorFlowのdownload

$ git clone https://github.com/tensorflow/tensorflow

TensorFlowのBuild

~/work/tensorflow$ ./configure 

まず全部defaultでOkです。

で、masterは、Ubuntu 16.04とCUDAの組み合わせではbuildが通りませんので、以下のpatchを当てます. masterだけでなく、v0.9 tagでも同様でした。

diff --git a/third_party/gpus/crosstool/CROSSTOOL b/third_party/gpus/crosstool/CROSSTOOL
index 8db81a9..61250bc 100644
--- a/third_party/gpus/crosstool/CROSSTOOL
+++ b/third_party/gpus/crosstool/CROSSTOOL
@@ -52,6 +52,8 @@ toolchain {
   cxx_flag: "-std=c++11"
   linker_flag: "-lstdc++"
   linker_flag: "-B/usr/bin/"
+  linker_flag: "-lrt"
+  linker_flag: "-lm"
~/work/tensorflow$ bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
$ sudo pip install /tmp/tensorflow_pkg/tensorflow-X.X.X-py2-none-any.whl

最後の数字はX.X.Xは、その時によるので、補完したりしてみてください。

あとは、tensorflow/exampleの中を動かしてみたりして、動作中に、

$ nvidia-smi

して、pythonが利用していれば、ちゃんとGPU使われています。

Caffe

依存するcomponentのinstall

$ sudo apt-get install -y build-essential cmake git pkg-config
$ sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
$ sudo apt-get install -y libatlas-base-dev 
$ sudo apt-get install -y --no-install-recommends libboost-all-dev
$ sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev

$ sudo apt-get install -y python-pip python-dev python-numpy python-scipy

$ sudo apt-get install -y libopencv-dev

python2で使う人向け

$ sudo apt-get install --assume-yes libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

python3で使う人向け

$ sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

Caffeのdownload

$ git clone https://github.com/BVLC/caffe.git
$ cd caffe
$ cp Makefile.config.example Makefile.config

makefileの編集

Makefile.config
# cuDNN acceleration switch (uncomment to build with cuDNN).
-# USE_CUDNN := 1
+USE_CUDNN := 1

依存コンポーネントの処理

$ find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \;
$ cd /usr/lib/x86_64-linux-gnu
$ sudo ln -s libhdf5_serial.so libhdf5.so
$ sudo ln -s libhdf5_serial_hl.so libhdf5_hl.so
$ cd ~/work/caffe/python
$ sudo su
# for req in $(cat requirements.txt); do pip install $req; done

build

$ cd ~/work/caffe
$ make all
$ make test
$ make runtest
$ make distribute

Chainer

.bashrcの設定

~/.bashrc
    export CUDA_PATH=$CUDA_HOME
$ source ~/.bashrc

依存コンポーネントのinstall (skip可能. Caffeでinstall済みのはず)

$ sudo apt-get install libhdf5-dev
$ pip intall h5py

source code取得

$ git clone https://github.com/pfnet/chainer.git

build

$ cd chainer
$ sudo CUDA_PATH=/usr/local/cuda python setup.py develop

ちなみに、動作確認

~/work/chainer/examples/word2vec$ python ../ptb/download.py
~/work/chainer/examples/word2vec$ python train_word2vec.py --gpu 0

別のconsoleで、

$ nvidia-smi

です。

あんまりGPUに負荷かけられていないので、chainerは、tensorflowに比べると速度の面ではいまいちかもですが、--gpu 0を入れない状態で、GTX750Tiでも、i7-870 CPUの10倍高速でした。

なお、GTX-1080はGTX-750Tiの6倍速いです。
( 価格は今10倍ぐらいですけど :-) )

hidenorly
All tweets are my personal opinions and do not represent those of my employer.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away