30分ぐらいで raspberry pi にtheanoを入れる
raspberry piと機械学習が気になって、とにかく、できそうなことを、さくっとやってみたメモ。
raspberry pi を手に入れる
アマゾンで検索すれば5000円前後で手に入る。今回は type B である。
手持ちのSDカードにOSを焼く
raspberry pi の推奨OS は raspbian これを以下からダウンロードする。
さらに、手持ちのパソコンに手持ちのSDカードを指して、fedora-arm-installerのツールを使ってOSを焼く。
Fedora ARM Installer - FedoraProject
ちなみに、僕が導入したのは2014-6-20のraspbian。焼き方はこんな感じ。
raspberry pi のsetup
ネットワークにつないでDHCPでIP振り出してもらって、sshで接続すると、デフォルトではpi / raspberry でログインできる。このあと、
$ sudo raspi-config
とたたいて、raspbianのセットアップを行う。
やっておきたいこと:
- Expand Filesystem ... SD cardの拡張
- Overclock ... とりあえず、最初はModestぐらい?
これでreboot。
swap領域を増やす
raspberry pi type B のメモリサイズは512MB。いまどき心もとない(十数年前が懐かしい)のだが、swapのdefaultの設定が100MBしか設定されていないみたい。これを変更する。
いったんswapプロセスをとめて
$ sudo /etc/init.d/dphys-swapfile stop
次に設定ファイル /etc/dphys-swapfile をいじる
CONF_SWAPSIZE=1000
MB単位らしいので1GBぐらいに。swapプロセス再起動。
$ sudo /etc/init.d/dphys-swapfile start
topコマンドでswapが増えているか確認しておく。
関連パッケージの導入
この辺あたりから怪しい。とりあえず、apt-getをupdate
$ sudo apt-get update
theanoの最低必要パッケージ
$ sudo apt-get install python-numpy python-scipy python-nose g++ libatlas-dev libatlas3gf-base git
本当にこいつらで大丈夫なの?と思いつつ、次へ進む。
theanoをgitからsetup.pyする
マニュアルではpipを使っているけれど、こちらのほうが確実っぽい。gitでtheanoのソースを持ってきて
$ git clone git://github.com/Theano/Theano.git
setup.pyする
$ cd Theano
$ python setup.py build
$ sudo python setup.py install --record setup_file.txt
uninstallするときのために、setup_file.txtにコピーしたファイルのレコードをとっておく。さて、importできるかな?
$ python >>> import theano ~ Exception: Compilation failed (return status=1): cc1plus: error: unrecognized command line option ‘-m32’. ~
ありゃりゃ?
どうも以下で修正されているコードが関係しているみたい。
Add ARM architecture check for Raspberry Pi · 70e761e · vdumoulin/Theano · GitHub
というわけで、環境変数を入れる。
$ export THEANO_FLAGS=gcc.cxxflags=-march=armv6j
これで再import
$ python >>> import theano WARNING (theano.gof.cmodule): WARNING: your Theano flags `gcc.cxxflags` specify an `-march=X` flags. It is better to let Theano/g++ find it automatically, but we don't do it now
なにやらwarningがでたがimportはできたみたい。めでたしめでたし。