人工知能技術戦略会議等主催 第1回AIチャレンジコンテスト[1][2]で入賞賞品としていただいたNVIDIA GTX-1060 Founders Editionを活用しようと, 「低火力コンピューティング」のPCを組み立てた.
前回までで, Intel HD GraphicsやNVIDIA Driverなどの不具合対策は一応完了した.
今回は, 深層学習の環境構築(CUDA, cuDNN, Tensorflow, Keras等)について紹介する.
関連記事:
- 深層学習用に低火力PCを組み立てた(1)
- 深層学習用に低火力PCを組み立てた(2)
- 深層学習用に低火力PCを組み立てた(3)
- 深層学習用に低火力PCを組み立てた(4)
5. 深層学習の環境構築
深層学習の環境構築に関しては多くの記事があるので, 簡単に紹介するにとどめる.
5.1 CUDAインストール
CUDA Toolkit Download[3]から, Ubuntu16.04用のインストーラをダウンロード.
NVIDIAのドライバインストールの際に, "--no-opengl-files"オプションを指定してインストールを行ったので, CUDAは以下のようなオプションでインストールした.
$ chmod a+x cuda_8*.run $ sudo ./cuda_8.0.61_375.26_linux.run --silent --no-opengl-libs --toolkit $ sudo ./cuda_8.0.61.2_linux.run $ echo 'export PATH="/usr/local/cuda/bin:$PATH"' >> ~/.bashrc $ echo 'export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"' >> ~/.bashrc $ source ~/.bashrc
5.2 cuDNNインストール
深層学習でGPUを使用する場合には, cuDNNが必要となる.
cuDNNをダウンロードするには, 事前にメンバー登録が必要なので要注意.
また, cuDNNはCUDAやTensorflowなどとバージョンを合わせる必要があるので, こちらも要注意.
Tensorflow(r1.2.1)でGPUを使用する場合, CUDA Toolkit 8.0, cuDNN v5.1が必要なので, 対応したファイルをダウンロードする.
$ tar zxvf cudnn-8.0-linux-x64-v5.1.tgz $ sudo cp -a cuda/lib64/* /usr/local/cuda/lib64/ $ sudo cp -a cuda/include/* /usr/local/cuda/include/ $ sudo ldconfig
5.3 Tensorflow & Kerasインストール
Installing TensorFlow on Ubuntu[5]には, 幾通りかインストール方法が記載されているが, 私の場合はpyenv+Anacondaを使ってインストールした.
$ conda create -n tensorflow python=3.6 $ source activate tensorflow (tensorflow)$ tfBinaryURL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.1-cp36-cp36m-linux_x86_64.whl (tensorflow)$ pip install --ignore-installed --upgrade tfBinaryURL (tensorflow)$ conda install keras
(※) "conda install tensorflow-gpu"ででもインストールできるが, CUDA 7.5/cuDNN v5.1なのでNG.
6. 低火力コンピューティングの効果確認
最後に, GPUの効果を確認してみる.
比較には, kerasのサンプルの1つであるmnist_cnn.pyを用いた.
6.1 GPUなし
poch 11/12 60000/60000 [==============================] - 68s - loss: 0.0403 - acc: 0.9882 - val_loss: 0.0283 - val_acc: 0.9911 Epoch 12/12 60000/60000 [==============================] - 68s - loss: 0.0399 - acc: 0.9884 - val_loss: 0.0270 - val_acc: 0.9909 Test loss: 0.0269925357029 Test accuracy: 0.9909 real 13m56.274s user 101m3.712s sys 2m54.828s
6.2 GPUあり
Epoch 11/12 60000/60000 [==============================] - 7s - loss: 0.0389 - acc: 0.9880 - val_loss: 0.0267 - val_acc: 0.9908 Epoch 12/12 60000/60000 [==============================] - 7s - loss: 0.0368 - acc: 0.9889 - val_loss: 0.0255 - val_acc: 0.9900 Test loss: 0.0255203519034 Test accuracy: 0.99 real 1m31.293s user 1m34.936s sys 0m12.196s
GPUありの場合の方が, realの時間で比較すると10倍程度速いようだ.
低火力コンピューティングなので, こんなものかな!?
これまで, Deep Learningによる画像分類を主に試してきたが, このPCとYOLO v2[5]を使ってリアルタイムのオブジェクト検出などもやってみたい.
----
参照URL:
[1] SIGNATE - Data Science Competition
[2] 第1回AIチャレンジコンテスト(料理分類部門)に挑戦してみた!! (3) - みらいテックラボ
[3] CUDA Toolkit 9.2 Download | NVIDIA Developer
[4] NVIDIA cuDNN | NVIDIA Developer
[5] YOLO: Real-Time Object Detection
CUDA C プロフェッショナル プログラミング (impress top gear)
| 並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング
| はじめてのCUDAプログラミング―驚異の開発環境[GPU+CUDA]を使いこなす! (I・O BOOKS)
| CUDAプログラミング実践講座 ? 超並列プロセッサにおけるプログラミング手法
|