IT系バンドマンの日常

備忘録やライフログなど

EC2+cuDNN+Chainerでディープラーニング用爆速計算環境を手に入れる

みなさーん!DeepLearning、楽しんでますかぁーーー!

みなさん「.........(^ω^#)ビキビキ」

え、GPU搭載の計算環境がなくて全然楽しめてない?

そんなときはAWSでEC2インスタンスを立ち上げて爆速計算環境を手に入れよう!!!!

ということで今回はAWSでEC2の立ち上げからChainerのインストールまでの作業手順をまとめてみたいと思います

EC2インスタンスの立ち上げ

EC2インスタンス立ち上げの前にregionを選択します。

regionによってだいぶ値段が違うので、現在どのくらいの値段なのか気になる方は、料金 - Amazon EC2 | AWSの「オンデマンドインスタンス価格」の欄を見ると参考になります。

値段をそんなに気にしない方はTokyoリージョン、少しでも安いのがいい人はOregonリージョンで行きましょう。僕はOregonリージョンにしました。

次にインスタンスの立ち上げです。Services(左上) > EC2 > Launch Instance > AWS Marketplace > 検索欄で「NVIDIA」と検索 > 「Amazon Linux AMI with NVIDIA GRID GPU Driver」を選択 > Typeは「g2.2xlarge」を選択 > Launchをクリック!

LaunchをクリックするとKey pairを選択する画面が出現しますので、「Create a new key pair」を選択してKey pairを新規作成します。Key pairとはAWSで作成したインスタンスにアクセスするために必要なドアの鍵のようなものです。ドアの鍵をなくしたらドアは絶対に開けれません。ダウンロードしたキーはなくさないようにしましょう。$HOME/.ssh配下においておくのがおすすめです。

うまくいけばそれでインスタンスが立ち上がるはずです!

なんか2時間待てとか言われる

AWSアカウントを作成したばかりだと2時間くらいはEC2インスタンスが立ち上げられないことがあるそうです。オッケーされるまで待ちましょう。

インスタンスの利用上限枠が0なのでインスタンスを立ち上げられませんと言われる

Services(左上) > EC2 > Limitsよりg2.2xlargeの Current Limitが0になってる方は、右隣のRequest limit increaseより上限を1つか2つ上げてもらうようお願いしましょう。多分ですが、日本語でも聞いてもらえると思います。

インスタンスの立ち上げが終わった方は下記のコマンドでアクセスしてみましょう

ssh -i [ダウンロードしてきた.pemファイル] ec2-user@[EC2インスタンスのIPアドレス]

うまく接続できればEC2インスタンスの立ち上げは終了です

cuDNNのインストール

cuDNNとは、めちゃくちゃざっくり言うとDeepLearningの計算スピードをあげてくれるライブラリのことです。

NVIDIA cuDNN | NVIDIA Developerより、ユーザ登録をしたあと、CUDAのVersionにあったcuDNNをローカルのPCにダウンロードしてきます(先程立ち上げたインスタンスには既にCUDAがインストールされています。/opt/nvidia/cuda/version.txtを見ればCUDAのバージョンが分かります)。

ダウンロードが終わったら、下記コマンドでEC2インスタンスにアップロードしましょう。

scp -i [ダウンロードしてきた.pemファイル] アップロードしたいファイル ec2-user@[EC2インスタンスのIPアドレス]:~/

cuDNNのインストール手順は以下のとおりです

gzip -dc [filename] | tar xvf -

sudo cp -P ~/cuda/include/cudnn.h /opt/nvidia/cuda/include/

sudo cp -P ~/cuda/lib64/libcudnn* /opt/nvidia/cuda/lib64/

sudo chmod a+r /opt/nvidia/cuda/lib64/libcudnn*
which nvcc

してエラーがでなければcuDNNのインストールは完了です。

参考:nvidia - How can I install CuDNN on Ubuntu 16.04? - Ask Ubuntu

Chainerのインストール

sudo pip install chainer

サンプルコードをダウンロード&実行

wget https://github.com/pfnet/chainer/archive/v1.15.0.1.tar.gz
tar xzf v1.15.0.1.tar.gz
python chainer-1.15.0.1/examples/mnist/train_mnist.py --gpu 0

エラーがでずに2~3分で計算が終われば環境設定は終了です。

使い終わったら忘れずインスタンスを消しましょう

EC2 > Instances > Actions >Instance state > Stop

さいごに注意点

  • AWSは従量課金制です。EC2インスタンスをつけっぱなしにすると1日で2000円くらいの損失がでてしまいます。また、EC2で利用するストレージや通信料など、さまざまな課金対象がありますので心配な方は今回作成したインスタンスをTerminate(削除)しておくのが一番安全です。

  • 僕はまだ計算に利用しますので、ひとまずEC2をStopして保持してみることにしました。おそらく利用しなくても月数百円のコストがかかっていくと思います。

  • また、今回紹介した方法は僕の作業ログなので自分で作業する際は自己責任でお願いします

  • やってみたいけど不安で怖い!って方は僕がどんどん手伝いますので質問等ありましたらガンガン連絡ください!

それではみなさま良いDeepLearningライフを!