StatsFragments

Python, R, Rust, 統計, 機械学習とか

Amazon EC2 上に Pylearn2 環境を構築する

最近 pylearn2theano を使って Deep Learning を少しずつ勉強しているのだが、いろいろと試す場合には処理時間が結構ネックになる。とくに画像処理をしたい場合には GPU 計算ができないとちょっと現実的でない。

とはいえ、そこそこの PC + GPU を買おうと思うとけっこういいお値段するし、PC を自分で維持・メンテするのもめんどくさい。少し考えた結果、EC2 上に環境を構築することにした。何度かやってみてうまくいくようになったので、手順をまとめておく。

補足 善意の方がつくった pylearn2 プリインストール済みの AMI もいくつか公開されているので、 気にならない方はそっち使ったほうが早い。

Amazon EC2 インスタンスの作成

以下のリンクに スクリーンショット付きでインスタンス作成 / theano のインストール方法が記載されている。前提知識としてこちらをざっと読んでおくのがよいと思う。

インスタンス作成用のイメージ (AMI) としては Amazon Linux AMI を利用する。

補足 CUDA は後述のスクリプトで半自動インストールできるはずだが、インストール時にいくつかダイアログがでてきてうっとおしい。めんどくさければ、NVIDIA が配布している Amazon Linux AMI with NVIDIA GRID GPU Driver を使う。

EC2 のウェブコンソールから インスタンス作成する際には以下のとおり設定する。

  1. Choose AMI: Amazon Linux AMI を選ぶ。NVIDIA 作成の AMI を利用する場合は、"AWS Marketplace" を "NVIDIA" で検索し "Amazon Linux AMI with NVIDIA GRID GPU Driver" を選ぶ。
  2. Choose Instance Type: g2.2xlarge
  3. Configure Instance: そのまま。
  4. Add Storage: General Purpose (SSD)。CUDA がサイズ大きいため増やしたほうがよい。自分は 15 GB くらいにしてる。
  5. Tag Instance: 適当に名前つける。
  6. Configure Security Group: Selct an existing security group を適当に。インバウンドの接続を許可しておくこと。

EC2 インスタンスへの SSL 接続

初回だけ、証明書のパーミッションを変更しておく。

$ chmod 400 default.pem

自分は Elastic IP アドレスは使っていないので、適宜 IP 確認して接続してる。

$ ssh -i default.pem ec2-user@XX.XX.XX.XX

インスタンス上での環境構築

自分が使っているシェルスクリプトを gist においた。利用する場合は自己責任で。EC2 にログインして以下のとおり実行すれば、環境構築からテストまで自動でやってくれる。素の Amazon Linux でも NVIDIA のものでも 両方いけるはず。

$ wget https://gist.github.com/sinhrks/ba9876e7aa2a18a601f8/raw/environment_setup.sh
$ chmod +x environment_setup.sh
$ ./environment_setup.sh 

正しく環境構築されていれば、最後に実行された nosetests が OK で終わる。

が、たまに nosetests では 必要な環境変数が読めるが、 pylearn2 からは読めないことがあるっぽい。その場合は

$ source .bashrc

スクリプトでやっていることと、参考サイト

自分がよく使う環境とあわせて作っているので、いらないものがあれば 適当にコメントアウトを。

Pylearn2 Quick Start Example の実行

Quick-start example — Pylearn2 dev documentation

について、データはすでにダウンロードされているため、以下のような感じで実行できる。他の Example もひととおり実行はできるはず。

$ cd pylearn2/pylearn2/scripts/tutorials/grbm_smd
$ python make_dataset.py
$ ../../train.py cifar_grbm_smd.yaml 

まとめ

環境構築まわり、自分でも試行錯誤中なのでまた更新したい。もう少し固まってきたら AMI か Docker にしようかと。

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)