de[v|b]log

ShellScript, Coffee, iOS/OSX Dev
Origin: Himajinworks.
About.

前からかなり話題になっているディープラーニングライブラリの実装の一種のChainerをインストールしたメモ。

Goal

  • Debian環境でOpenBLASによりCPU演算の並列化を有効にしたChainer環境の導入
  • pyenvでのPythonのインストール

Environment, Requirements

  • OS / Distribution
    • Debian (8, jessie)
  • Python
    • pyenv (20160303-52-g916d0ea)
    • Python (2.7.11)
  • Library
    • pip (8.1.0)
    • chainer (1.7.0)
    • OpenBLAS (0.2.12-1)

Install

Pythonのインストール

  • Ubuntuにpyenvを用いてpythn環境を構築しました。 | たくのこ Webを参考にし、Ubuntuと同じようにpyenvを導入。
  • 同参考ページ内のパスの設定及びinitの設定をシェルの設定ファイル(自分の場合.zshrc.zshenv)に追記。
  • source ~/.zshenvsource ~/.zshrcの後、pyenv install 2.7.11でPythonをインストール。
  • インストール終了次第、pyenv global 2.7.11でpyenvでインストールしたPythonを利用するよう向ける。

pipの更新

  • 上記ステップの時点でpip(パッケージ管理システム)がインストールされているため、更新のみ行う。
  • 【Python】pipの使い方 - TASK NOTESを参考にし、pip install -U pipとしてpipを更新する。

OpenBLASのインストール

  • OpenBLASはパッケージ管理システムaptを通じて、ubuntu 14.04でBLASを使う - kashiの日記を参考にしインストールする。
    • sudo apt-get install libopenblas-base libopenblas-dev
  • 同ページを参考にし、使用するBLASライブラリをsudo update-alternatives --config libblas.so.3として変更する。
    • 詳細は参考ページを参照。
  • 注意 : numpyのインストール前にこの作業を完了しておく必要がある。

Chainerのインストール

実行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
GPU: -1
# unit: 1000
# Minibatch-size: 100
# epoch: 20
Network type: simple

load MNIST dataset
epoch 1
graph generated
train mean loss=0.189545913829, accuracy=0.942616669952
test  mean loss=0.0879325823917, accuracy=0.971500009298
epoch 2
train mean loss=0.0741767749741, accuracy=0.976766676108
test  mean loss=0.0847054929615, accuracy=0.972700004578
epoch 3
train mean loss=0.0500486893133, accuracy=0.984016677241
test  mean loss=0.0690041840497, accuracy=0.977600008845
epoch 4
train mean loss=0.0349525115728, accuracy=0.988383342822
test  mean loss=0.0734123309187, accuracy=0.979600007534
epoch 5
train mean loss=0.0279633348443, accuracy=0.991150007844
test  mean loss=0.0847506415532, accuracy=0.976700007319

...

epoch 19
train mean loss=0.00922673324395, accuracy=0.997100002766
test  mean loss=0.103175222487, accuracy=0.982200006843
epoch 20
train mean loss=0.00748516210531, accuracy=0.997733335495
test  mean loss=0.0943004926731, accuracy=0.983100004792
save the model
save the optimizer

まとめ

  • Debian (8, jessie)にpyenvを利用してPythonをインストールする流れをまとめた。
  • 初期状態でインストールされているBLAS(確認を忘れてしまったがおそらくreference BLAS)よりも並列化等の恩恵で高速に処理を行えるOpenBLASを導入する方法をまとめた。
  • pipを利用してChainerを導入する流れをまとめた。
  • Chainerの例として提供されているMNISTデータベースに対する学習と識別の動作の流れ、及びネットワーク構造の見方をまとめた。

参考ページ