Posted at

MacのGPUでKerasを使う(デュアルブートUbuntu16.04)

More than 1 year has passed since last update.

所有するMacのグラフィックボードがNVIDIA製だったので、Tensorflowの実行に使えないか試してみました。

対象機種は【爆速なるか!?】OSXでTensorflowのGPU版を使うためのセットアップ - Qiita こちらにまとめてあるので、ご自分のMacの「このMacについて」で確認してみてください。

(設定に関しましては自己責任にてお願い致します)


デュアルブートUbuntu16.04

macOSでTensorflowをGPUで動かすことが出来たのですが、通常に起動するだけでもGPUメモリをかなり消費してしまうので、Ubuntuで試してみることにしました。

OS X El CapitanとUbuntu 16.04 LTSのデュアルブート環境を構築する - OTTAN.XYZ

こちらの手順が詳しいので、最新のmacOS Sierra(10.12.3)でも上手く動作させることが出来ました。

Macのハードディスクをパーテーションで区切り、USBに入れたUbuntu16.04のイメージから、rEFIndというブートローダーを使って起動させることでデュアルブートすることが出来ます。

Ubuntu16.04のイメージは北陸先端科学技術大学院大学リリースのイメージを使わせてもらいました。

無事インストール出来れば起動時に「option(alt)」キー押下でパーテーションで分割したHDDが選択出来るようになります。

ブートローダー「rEFInd」を使ってUbuntuを起動します。

無事Ubuntuが使えるようになりました。


CUDAインストール

下記の記事の手順に沿って行ったら上手くインストール出来ました。(ありがとうございます)

Ubuntu 16.04へのCUDAインストール方法 - Qiita

全くそのままの手順を転記するだけですが、スクリーンショットで補足しておきます。

CUDA 8.0 Downloads

こちらのページからダウンロード、展開します。

$ sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

$ sudo apt-get update
$ sudo apt-get install cuda

/usr/local/cuda-8.0にファイルが展開されていることを確認したのち、

~/.bashrcに以下を追記し、パスを通します。

export PATH="/usr/local/cuda-8.0/bin:$PATH"

export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH"


cuDNN 5.1 のインストール

「cuDNN」という深層学習用のライブラリが必要になり、NVIDIAのアカウントを取得する必要があります。

cuDNN Download

Download cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0にある

cuDNN v5.1 Library for Linuxを選択します。

上述の記事を転記させて頂きます。

tar xzf cudnn-8.0-linux-x64-v5.1.tgz

sudo cp -a cuda/lib64/* /usr/local/lib/
sudo cp -a cuda/include/* /usr/local/include/
sudo ldconfig

rm -R -f cuda cudnn-8.0-linux-x64-v5.1.tgz

パスの通し方が上手くいかずハマったのですが、 -aを付けるとシンボリックリンクとしてコピー出来るんですね。

/usr/local/lib/以下にcuDNNのライブラリがコピーされました。

同じく/usr/local/include/にコピーされました。


PythonとTensorflowのインストール

Python3系のインストールは、今回はpnevanacondaなどを使わずsudo apt-getを使いそのまま入れました。

(この後OpenCV3.1とffmpegをインストールする為、依存関係をできる限り簡単にしたかったので...)

Download and Setup - Twnsorflow

Tensorflowの公式ページに沿ってインストールします。GPUを利用する際は$ pip install tensorflow-gpuで簡単にインストール出来る様になったみたいですね。

$ sudo apt-get install python3-pip python3-dev

$ pip3 install tensorflow-gpu

HelloWorldを試してみます。

無事利用できるようになりました。GPU(GeForce GT 750M)のメモリは1GBなのですが、実際使えるのは650~750MB程です。

あまり階層の深い深層学習では使えないみたいですね。

Tensorflowは/user/local/lib/python3.5/dist-packagesにインストールされています。

Python2.7を併用するには同じ要領で/user/local/lib/python2.7/dist-packagesにインストールします。


Kerasのインストール

Kerasのインストールは以下の通り。

$ pip3 install keras

でインストール出来ます。

依存関係のあるライブラリは、できる限りpipを使わずsudo apt-get installでインストールしました。

サンプルのCNNを利用したMNISTを実行してみます。

体感速度でいうと、CPUの3倍程度でしょうか。


まとめ

今回はUbuntuをデュアルブートしましたが、仮想環境の構築に慣れている方はそちらの方が良いかもしれません。

CPU環境では実行が難しかったRNN(seq2seq)は簡単なモデルのものならGPUメモリ1GB程度で実行出来るようなので、今度試してみたいと思います。

では。