AWSのGPU有りインスタンスにChainer 1.5を最も簡単にインストールする

  • 20
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

執筆時点での一番簡単なインストール方法を記したつもりです。
間違い等ありましたらコメントしていただけるとありがたいです。

以下のような方を想定して書いています。

  • EC2インスタンスは建てたことがある(そこまで詳しくある必要は無い)
  • Chainerを使ってみた、あるいは初めて使ってみるがどうせならGPUを使いたい
  • 簡単にやりたい 1

手順の概要

  1. NVIDIAが公開しているCUDA及びGPUドライバインストール済みのAMIを使用してインスタンスを作成
  2. Chainerが必要とする依存ライブラリ郡をインストール
  3. Chainerをインストール

下準備

GPUをフル活用するためにはNVIDIAのライブラリを使う必要があります。
NVIDIAのライブラリはフリーですが、使うには事前に登録する必要があるので先にしましょう(Registeringに多少時間がかかります)。

公式cuDNNページ

詳しい手順は明記しませんが、 Register の ボタンから登録を済ませ、確認用メールにて本登録処理をしておいてください。

手順1. EC2インスタンスの作成

最も一般的と思われるインスタンスの作成はAmazon Linuxを選択して作成する方法だと思いますが、今回はAmazonマーケットプレイスに公開されているNVIDIAのAMIを使います。

この画面左のタブからAWS Marketplaceを選択して

Screenshot from 2016-01-14 02:31:01.png

検索窓で「NVIDIA」と入力して以下のイメージを探します。
Screenshot from 2016-01-14 02:32:43.png

次へ進むと 2xlarge8xlarge が選択できるようになっていますが、 2xlarge しか使ったことがないのでどれほどの性能差があるかはわかりません。
このままあとはいつもどおり作成しましょう。

手順2. Chainer依存ライブラリ群のインストール

cuDNN

NVIDIA公式AMIを使うとCUDAの状態は

  • install directory: /opt/nvidia/cuda
  • version: 6.5

なので(執筆時)、CUDAに依存するパッケージであるcuDNNもこれに対応してインストールします。

下準備で登録したメールアドレスに Congratulations, you are now a member of the Accelerated Computing Developer Program のような内容が届いていれば本登録済みなので次に進みましょう。来てない場合は先に進まずにコーヒーでも淹れるのが吉です(Chainerは 本体より先に 依存ライブラリを入れておくことが推奨されている)。

公式からDownloadをクリック。
CUDA6.5に対応するcuDNNは v2 なので、下の Archived cuDNN Releases クリックして cuDNN v2 Library for Linux をダウンロードし、インスタンスのサーバーにアップロードして展開しておきましょう。2
あとは展開したディレクトリへ移動し、

$ sudo cp lib* /opt/nvidia/cuda/lib64
$ sudo cp cudnn.h /opt/nvidia/cuda/include/

これでおっけーです。3

hdf5

Chainer1.5から依存パッケージに h5py 2.5.0 が仲間入りしました。
これはPythonのライブラリですが hdf5 を前提にされているため、こいつだけ手動でいれてあげましょう。

$ sudo yum-config-manager --enable epel
$ sudo yum install -y hdf5-devel

依存パッケージはこれにて終了です。

Chainerのインストール

1行です。4

$ sudo CUDA_PATH=/opt/nvidia/cuda pip install chainer

一応確認しておきましょう。

$ python
>>> import chainer

エラーが出なければ問題ないでしょう。
お疲れ様でした。

おわりに

長々と書きましたがだいたいは公式に書いてあるとおりやっただけです。
ただ、hdf5の依存でハマったりcuDNNのインストールでハマったり(テキトーに最新版入れとけ→あぼーん)したので、参考になれば幸いです。

以下、参考にさせていただきました。

Amazon EC2のGPUインスタンスにChainer v1.5を3行で入れる
AWS EC2のg2.2xlargeをスポットインスタンスで立てて、chainerを動かしてみる


  1. GPUを使わない場合はもっと簡素にできます。 

  2. ちなみに最新版を使いたい場合など、CUDAを自前で入れる等している場合は対応するcuDNNのバージョンも違います。 

  3. CUDA7.0以上を使いたくてcuDNNもv3以上を用意する場合は、cuDNN解凍後のディレクトリ構造が違うので注意。また、Chainer1.5はcuDNN v3までの対応なので、v4とかはサポート外(執筆時)なのでやめておくことをおすすめします。 

  4. sudoを使うと環境変数を維持できないので公式で書かれてる通りインストーラーに伝える