サイトデザインを新しくしました!

【Deep Learning】Chainerをインストールし、GPUを使ってMNISTサンプルを動かす 【Ubuntu18.04 LTS + Chainer 5.1.0】

はじめに

この記事では、以下内容を記載しています。

  1. Ubuntu 18.04 LTSに、最新のChainer 5.1.0(2019/1/21 執筆時点)をインストールする
  2. GPUを設定する
  3. MNISTサンプルを実行する

私のデスクトップPCのスペックは以下の通りです。

  • マザーボード:ASRock Z370M-ITX
  • CPU:Intel Core i5 8400 BOX
  • GPU:NVIDIA GeForce GTX 1060 6GB (*1)
  • メモリ:DDR4-17000 8GB
  • SSD:M.2 256GB
  • 電源:SILVERSTONE SST-SX600-G
  • CPUクーラー:白虎 775-1366
  • ケース:RAIJINTEK METIS PLUS

このデスクトップPCは、Deep Learningを勉強するために、2018年3月に購入しました。それぞれ安い部品をネットや実店舗で探して購入しました。パーツ代は合計で約10万円ちょいだったと記憶しています。

(*1) 当時、マイニングが流行っており、GPUがとても高価でした!今は当時と比べると1万円ほど安くなってました。。。

普段はノートPCからSSHでアクセスして動かしていますが、今回はデスクトップPC上で操作しています。

最新のChainerをインストールする

ターミナルを開き、以下コマンドを順番に入力してください。

コンソール
sudo apt-get install python-pip
sudo pip install --upgrade pip
sudo pip install chainer

これで最新のChainer がインストールされます。
もし5.1.0をインストールしたい方は、以下のようにコマンドを入力してください。

コンソール
sudo pip install chainer==5.1.0

GPUを設定する

次にGPUをセットアップしていきます。
NVIDIAが提供しているCUDAというライブラリと、それに対応したGPUを利用することで、Chainerの学習時間を劇的に短縮できます。

学習内容や使用するGPUにもよると思いますが、私の場合、約5倍ほど早くなっています。もしGPUをお持ちでしたら、設定することをおすすめします。

CUDAのインストール

以下ホームページにアクセスしてください。

参考 cuda-toolkitNvidia

まず、”Downloard Now” をクリックします。

次に、環境に合わせて選択していきます。私は以下のように選択しました。

  • Operation System: Linux
  • Architecture: x86_64
  • Distribution: Ubuntu
  • Version: 18.04
  • Installer Type: deb(network)

Installer Typeを選択すると、下にDownloadのリンク先が”にょきん”と出てきますので、Downloadをクリックします。2.9KBしかないので、一瞬で終わります。

ダウンロードが終わったら、今度はそいつを展開し、インストールしていきます。デフォルトではダウンロードディレクトリにあるはずです。

今回はひとまずホームディレクトリに移動し、CUDAをインストールします。再びターミナルを開き、以下コマンドを順番に入力してください。

コンソール
cp ダウンロード/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb ./
sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

私はこの手順でやったところ、何故かエラーが発生し、インストールできませんでした。このコマンドを打って再インストールしたところ、無事にCUDAがインストールできました。

コンソール
sudo apt-get install cuda --fix-missing

インストール後は、PCを再起動してください。

再起動後、ターミナルを開き、以下コマンドを入力してみてください。

コンソール
nvidia-smi -l

以下のような表示がされれば、インストール成功です。
この表示をやめる場合は、Ctrl + c を入力してください。

コンソール
Mon Jan 21 15:19:03 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.79       Driver Version: 410.79       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 106...  Off  | 00000000:01:00.0  On |                  N/A |
|  0%   45C    P0    23W / 120W |    232MiB /  6075MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0       930      G   /usr/lib/xorg/Xorg                           110MiB |
|    0      1130      G   /usr/bin/gnome-shell                         119MiB |
+-----------------------------------------------------------------------------+

cuDNNのインストール

cuDNNはNVIDIAが公開しているディープラーニング用のライブラリです。

以下ホームページにアクセスしてください。

参考 cuDNNNvidia

Download cuDNNをクリックします。

するとメンバーシップ登録の画面が出てきます。初めての方はJoinをクリックし、メンバーシップ登録してください。私は過去にダウンロードしたことがあり、メンバーシップになっているのでLoginをクリックしました。

自身のアカウントでログインすると、以下画面が開きます。

cuDNN Software License Agreementにチェックします。
すると”にょきっと”選択画面が出てくるので、cuDNN v7.4.2 をクリックします。

するとさらに、”にょきっと”選択画面が出てくるので、以下の3つをクリックし、それぞれインストールします。

  • cuDNN Runtime Library for Ubuntu18.04 (Deb)
  • cuDNN Developer Library for Ubuntu18.04 (Deb)
  • cuDNN Code Samples and User Guide for Ubuntu18.04 (Deb)

ダウンロードが終わったら、今度はそいつらを展開し、インストールしていきます。デフォルトではダウンロードディレクトリにあるはずです。

今回はひとまずホームディレクトリに移動し、cuDNNをインストールします。再びターミナルを開き、以下コマンドを順番に入力してください。

コンソール
cp ダウンロード/libcudnn7* ./
sudo dpkg -i libcudnn7_7.4.2.24-1+cuda10.0_amd64.deb 
sudo dpkg -i libcudnn7-dev_7.4.2.24-1+cuda10.0_amd64.deb 
sudo dpkg -i libcudnn7-doc_7.4.2.24-1+cuda10.0_amd64.deb

CuPyのインストール

最後にCuPyをインストールします。
CuPyは、行列計算をするためのモジュールです。

Pythonで行列計算を行う場合、通常はNumpyを使うと思いますが、これはCPUでしか計算できません。このCuPyはGPUで計算することが可能です。

再びターミナルを開き、以下コマンドを入力してください。

コンソール
sudo pip install cupy

これだけです。

以上でGPUの設定が完了しました。

MNISTサンプルを実行する

最後に動作確認も兼ねて、Chainerが用意してくれている、MNISTサンプルを実行してみます。
MNISTとは、手書きの数字画像とテスト画像を集めた画像データのセットです。

再びターミナルを開き、以下コマンドを順番に入力してください。

コンソール
wget https://github.com/chainer/chainer/archive/v5.1.0.tar.gz
tar xzf v5.1.0.tar.gz

これでMNISTサンプルのダウンロード&展開が完了です。

次にこのサンプルを実行していきます。
まずはCPUを使って学習させてみましょう。以下コマンドを入力してください。

コンソール
python chainer-5.1.0/examples/mnist/train_mnist.py

するとこんな画面が出てきます。

コンソール
GPU: -1
# unit: 1000
# Minibatch-size: 100
# epoch: 20

epoch       main/loss   validation/main/loss  main/accuracy  validation/main/accuracy  elapsed_time
1           0.191886    0.093085              0.941967       0.9701                    12.8619       
2           0.0738503   0.075877              0.97785        0.9771

次にGPUを使って学習させてみます。以下コマンドを入力してください。

コンソール
python chainer-5.1.0/examples/mnist/train_mnist.py -g 

-gの後の数字について記載しておきます。
この数字には、GPU番号を指定します。

あなたのGPU番号は以下コマンドで確認できます。

コンソール
nvidia-smi

このコマンドを打つと、以下画面が表示されます。
ここのGPUという箇所を見てください。この例の場合は0なので、GPU番号は0です。

コンソール
Mon Jan 21 15:19:03 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.79       Driver Version: 410.79       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 106...  Off  | 00000000:01:00.0  On |                  N/A |
|  0%   45C    P0    23W / 120W |    232MiB /  6075MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

コマンドを入力すると、以下のような画面が出てきます。

コンソール
GPU: 0
# unit: 1000
# Minibatch-size: 100
# epoch: 20

epoch       main/loss   validation/main/loss  main/accuracy  validation/main/accuracy  elapsed_time
1           0.189431    0.0994691             0.943033       0.9684                    3.50064       
2           0.0730531   0.076455              0.97685        0.9766                    5.82319       
3           0.0481019   0.0699556             0.984416       0.9803                    7.97603       
4           0.0369616   0.0822392             0.987499       0.9752                    10.1695       
5           0.0280137   0.0743043             0.990632       0.9794                    12.3395       
6           0.0217921   0.0677478             0.992648       0.9821                    14.5431

elapsed_timeが実行時間です。CPUの実行時間と比較すると、GPUの方が3.5倍ほど早いことがわかります。

それぞれのパラメータについては、今回のスコープからは外れるので、また別の機会とさせてください。

これらがきちんと実行されれば、Chainerのインストール及び、GPUの設定はうまくいっています。おつかれさまでした。

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です