chainerをいじってみたいという興味は以前からあったのだが
CENT-OSに入れようとしてドはまりしたことと、
GPUがないと使い物にならないよ~と脅されたこともあって
ほったらかしにしていた。

ひょんなことからロープロファイルのグラボを譲ってもらうことになり、
いい機会だからとchainerの環境を作ってみたので、そのメモ。

マシン環境:

本体:HP Compaq dc5800 SF
CPU:Intel Core2Duo E8500 @ 3.16GHz
メモリ:8GB
HDD:1TB
グラボ:msi GEFORTH GTX 1050Ti (4GB) ロープロファイル
OS:ubuntu 16.02LTS 日本語Remix

ubuntuのインストール:

もともとubuntを動かしているマシンなのでインストール作業はなし。
セキュアブートを止めるためにUEFIに入って…というような記事が多い中
このマシンはレガシーなBIOS設定画面なので関係ないと思われ。

グラボの装着とドライバーの設定:

このマシンはグラボ用のスロットが1つ用意されていて、
グラボを刺すと、オンボードのVGAが使えなくなるみたい。
画面はオンボードのを使って、グラボはGPUとしてだけ
使いたかったのだが、まあ仕方がない。

GUIで立ち上がらなかったらCUIで設定するかなーと
試しに立ち上げてみたら、ちゃんとX-windowが動いた。(すげ~)

とりあえずターミナルを立ち上げ、

sudo add-apt-repository ppa:graphics-drivers/ppa

で、PPAを導入。
(2017/03/03時点でnoubeauドライバーは
1050Tiに対応していないので、プロプライエタリなドライバを
入れるために必要)

設定⇒ソフトウエアとアップデートで追加のドライバータブを選ぶと
「利用可能なドライバーを検索しています」と表示される。
しばらく待っているとプロプライエタリなドライバが表示されるので
ラジオボタンで「NVIDIA binary driver- version 375.39」を選ぶ。

適用を押してインストールが終わったら再起動する。

おまじないと必要なパッケージの導入:

sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt-get install git
sudo apt-get install python-pip

CUDAを入れる(ユーザー登録が必要):

sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

cuDDNを入れる:

https://developer.nvidia.com/rdp/cudnn-downloadから
cuDNN v5.1 Library for Linuxを選んでダウンロード

tar -zxf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

PATHを通すために.bashrcに以下を追加

# CUDA Toolkit
export CUDA_ROOT=/usr/local/cuda
export PATH=/usr/local/cuda/bin:${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CPATH=/usr/local/cuda/include:$CPATH
# cuDNN
export LIBRARY_PATH=/usr/local/cuda/lib64:$LIBRARY_PATH

変更を反映

source .bashrc

GPUの動作確認:

nvidia-smi
nvcc -V

結果が表示されればOK

chainerを入れる:

pip install chainer

簡単!

chainerの動作確認:

wget https://github.com/pfnet/chainer/archive/v1.21.0.tar.gz
tar xzf v1.21.0.tar.gz

#CPUモード
python chainer-1.21.0/examples/mnist/train_mnist.py

#GPUモード
python chainer-1.21.0/examples/mnist/train_mnist.py -g=0

 

わたしの環境ではCPUでは約20分、GPUだと58秒でした。
GPUすごい。