MacbookにPylearn2をインストールする

最終更新 2014/07/23

この記事では、Deep Learningの実装の一つ、Pylearn2を、Macbookにインストールする手順を、インストールガイドに書かれていない詳細も含めて解説します。

ライブラリの特徴

Theano
http://deeplearning.net/software/theano/
Pylearn2
http://deeplearning.net/software/pylearn2/

Theanoの長所

  • Pythonの算術ライブラリ
  • 文字式構築 + 数値演算
  • テンソル利用可能 (ニューラルネットの記述に有効)
  • 自動微分機能 (ニューラルネットのアルゴリズム上、微分計算は重要)
  • 数値演算の自動GPU並列化 (数十倍の実行速度)
  • 数式 / 計算木 / 計算順序の自動最適化 特に計算誤差の防止
  • numpyとの親和性が高い

Pylearn2の長所

    • Python+Theano上で記述された、Deep Learningのライブラリ
    • Deep Learningのアルゴリズム”maxout”が完全な形で実装されている

(maxoutは2013年時点の画像認識state of the artの一つ)

共通の長所

  • 公開コードである
  • 開発コミュニティが非常に活発であり、forumでのサポートも見込める

共通の短所

  • 開発版としての性格が強く、コードがやや不安定 (特にPylearn2)
  • 内部コードの解読はそれなりにハードルが高い

なお、TheanoとPylearn2は、どちらもDeep Learningの第一人者であるBengioの研究室を中心に開発されています。

インストールの前に

もし使えるならば、Linuxサーバ上で動かした方が簡単です。
また、多くのMacbookはGPUを搭載していないため、実行できないサンプルコードもあります。

インストール方法

1. インストール
2. データセットの準備
3. 環境変数の設定

1. インストール

「Pylearn2のMaxout Networkを、手元のMacbookで動かす」ことを目標に、解説します。
(LinuxとWindowsは、この記事の対象外です。)

 

1.1 インストール手順

・ TheanoとPylearn2の依存パッケージをインストール

Pythonは2.7を使ってください。
これは、主にPylearn2、PILとの相性問題によります。

先に、Theanoが内部的に使うライブラリパッケージを、Homebrewやpipでインストールします。
(Homebrewやpipの解説は割愛します)
下記URLのRequirementsに従います。

Theano 0.6 documentation > Installing Theano

OSXの場合BLASは元々入っているので、スキップして大丈夫です。
また、GPUを積んでいないマシンでは、一部GPU関連のライブラリがインストールできない可能性があります。
その場合でも、Pylearn2やTheanoのGPUに依存しない部分は動きます。

なお、ここが非常に大切かつ気づきにくいのですが、
OSXプリインストールの/usr/bin/gccは、CUDAと相性が悪いです。

このファイルは、名前がgccなのに、中身がapple製コンパイラのclangになっています。
(–versionするとわかります)
CUDAはgccしか使えず、clangだとオプションの食い違いなどでエラーを起こしてしまいます。

環境に応じた適切な方法で、GCC 4.8をインストールして、利用優先度を上げてください。
例えば私の場合、


brew install gcc48
ln -s /usr/local/bin/gcc-4.8 /usr/local/bin/gcc

のようにして、gccをclangより優先して使うようにしました。
次に、Pylearn2側の依存パッケージもインストールします。

Pylearn2 dev documentation > Dependencies
になどに従って、以下の4つ

  • PIL
  • PyYAML
  • IPython
  • Cython

をインストールしてください。
(Cythonは明記されていませんが、一部モジュールの利用に必要となります)

例えばPyYAMLをpip経由でインストールする場合、

pip install PyYAML

となります。

1.2 bleeding-edge versionのTheanoをインストール

ここまでくれば、恐らく問題なくTheanoをインストールできると思います。
Bleeding-edge install instructionsを参考に、インストールしましょう。


pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git

1.3 Pylearn2をインストール

Download and installation
の通りですが、例えば


mkdir ~/git
cd ~/git
git clone git://github.com/lisa-lab/pylearn2.git
python setup.py develop

のようにするとよいでしょう。

1.4 既知の問題

環境によっては、


xcode-select --install

によって、システム標準のコマンドラインツールを入れる必要があるかもしれません。(未検証)

pipでパッケージのコンパイルが失敗する場合、一度uninstallすると動く場合があります。
また、–upgradeが効くこともあります。


pip uninstall <package-name>
pip install --upgrade <package-name>

matplotlibがpipでinstall出来ない場合、brew経由だと成功する場合もあります。(要tap)

brew search matplotlib
brew tap homebrew/python
brew install matplotlib

筆者の環境では、なぜかscipyがコンパイルできなかったので、

pip install -e 'git+https://github.com/scipy/scipy#egg=scipy-dev'

を使いました。

2. データセットの準備

画像識別データセットのMNISTとCIFAR10をダウンロードします。

 

2.1 データ置き場の準備

データ置き場として利用するフォルダを1つ、好きな場所に作成します。
ここでは、仮に”~/pylearn2_data” としておきます。
さらに、”mnist”フォルダと”cifar10″フォルダを作ります。

mkdir ~/pylearn2_data
cd ~/pylearn2_data
mkdir mnist cifar10

2.2 MNISTの準備

MNISTは、手書き数字認識のデータセットです。
THE MNIST DATABASE of handwritten digits
より、

  • train-images-idx3-ubyte.gz: training set images (9912422 bytes)
  • train-labels-idx1-ubyte.gz: training set labels (28881 bytes)
  • t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)
  • t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)

の4つ全てをダウンロードしてください。
ダウンロードしたデータを展開し、 “~/pylearn2_data/mnist” に入れて下さい。

 

2.3 CIFAR10の準備

CIFAR10は、カラー写真認識のデータセットです。
The CIFAR-10 dataset
より、
CIFAR-10 python version
をダウンロードしてください。
同じくダウンロードしたデータを展開し、”~/pylearn2_data/cifar10″ に入れて下さい。

最終的に

~/pylearn2_data/mnist/t10k-images-idx3-ubyte
~/pylearn2_data/cifar10/cifar-10-batches-py/data_batch_1

が出来てればOKです。

 

3. 環境変数の設定

Pylearn2とシステムをつなぐため、環境変数を設定します。
一般的には.bashrcなどに書き込むことになります。設定方法の詳細は割愛します。

 

3.1 データセットフォルダの指定

Pylearn2に、2.で作ったデータフォルダの場所を教えます。
cf.) Pylearn2 dev documentation > Data path


export PYLEARN2_DATA_PATH=~/pylearn2_data

3.2 画像閲覧用プログラムの設定

一部スクリプトで使われる、画像閲覧用プログラムを設定します。
Macでは、openコマンドを通してPreviewを起動するのが良いでしょう。

export PYLEARN2_VIEWER_COMMAND="open -Wn"

 

3.3 パスを通す

Pylearn2に含まれる、学習実行スクリプトにパスを通します。
スクリプトは全て、 “pylearn2/pylearn2/scripts” フォルダに入っています。
Pylearn2のチュートリアルページは、ここにパスが通っていることが前提で書かれています。
仮に “~/pylearn2/pylearn2/scripts” にフォルダがあったとすると、

export PATH=~/pylearn2/pylearn2/scripts:$PATH

としておくのが最も簡単だと思います。
ここまでで環境構築は完了です。

4. インストール完了

この後は、実際にDeep Learningのアルゴリズムを動かしてみることになります。

第6回AIツール入門講座資料
を参考に進めるのがよいと思われます。
(この記事で行ったのは、講座資料でいう「環境構築」の部分にあたります)

また、DeepLearningのアルゴリズムをより深く理解したい場合、
Deep Learning Tutorialsでは、
Deep Learningのアルゴリズムの基礎が、Theanoで実装されています。
実装の詳細を追う場合は、はじめに読むと理解が早いです。