前置き
- Chainer…東大発日本ベンチャー企業 Preferred Networks が開発するオープンソースのディープラーニング フレームワーク。
- cupy…Python の標準数値計算ライブラリ numpy の GPU 移植版。
- CUDA Toolkit…NVIDIA 製の GPU で GPGPU をするのに必要なライブラリ。
- cuDNN…CUDA を用いてディープラーニングをする際に必要なライブラリ。
- Anaconda…科学計算に必要なパッケージ一式が入った python 環境。
- conda…python のパッケージ管理システム + 環境分離システム。
- pip…conda より昔からあるパッケージ管理システム。
Chainer 5.2.0 インストール
2019年2月1日時点で、 chainer の最新のバージョンである 5.2.0 及び GPU で実行するための cupy 5.2.0 をクリーンインストールする手順をメモしておきます。
chainer 5.2.0 は以下の外部ソフトウェアに依存しています。 (バージョンは一例、できるだけ現時点で最新のもの)
- CUDA Toolkit 10.0 (最新)
- cuDNN 7.4.2 (最新)
- Python 3.7.2 (最新)
インストール手順
- Anaconda のインストール
Anaconda 公式サイトから自分のOSにあったインストーラーをダウンロードして実行する。- システム全体にインストールするか、ユーザーごとにインストールするかはどちらでもよい。
conda でインストールする場合
conda でインストールする場合は、 CUDA Toolkit 及び cuDNN をすでにシステムにインストールしていたとしても、 依存パッケージとして CUDA Toolkit と cuDNN がもれなくついてくるので、システムに CUDA Toolkit, cuDNN をインストールしておく必要はない。 (インストールしていたとしても conda でインストールしたものが優先されるので問題はない。)
ターミナルで以下を実行する。
conda install cupy chainer
- 依存パッケージでついてくる CUDA Toolkit と cudnn は少し古いバージョンになる。(CUDA Toolkit 9.2.0, cuDNN 7.3.1)
chainer は pip と conda のいずれかのパッケージマネージャでインストールできる。
pip でインストールする場合
pip でインストールする場合は、手動で CUDA Toolkit と cuDNN をインストールする必要がある。
-
CUDA Toolkit のインストール
NVIDIA CUDA Toolkit 公式サイト から OS にあったインストーラーをダウンロードして実行。- Windows の場合は exe 形式のインストーラ。
- Linux の場合は run 形式のシェルスクリプト。
- インストール後、以下を確認してください。
- 環境変数 CUDA_PATH に CUDA Toolkit をインストールしたディレクトリが指定されていること。
- 環境変数 PATH に (CUDA Toolkit をインストールしたディレクトリ)/bin が指定されていること。またターミナルで
nvcc
コマンドが実行できること。
-
cuDNN のインストール
インストールと銘打ってあるが、 CUDA Toolkit をインストールしたフォルダにいくつかのファイルをコピーするだけ。
NVIDIA cuDNN 公式サイト から OS にあったもの (cuDNN Library for XXX) をダウンロードして、含まれる以下の CUDA Toolkit をインストールしたディレクトリ内の対応するディレクトリにコピーする。 cuDNN は CUDA Toolkit のバージョンに対応するバージョンをインストールする必要がある。- include/cudnn.h
- lib64/libcudnn.so*
- lib64/libcudnn_static.a
-
cupy と chainer のインストール
pip install cupy chainer
- cupy をインストールするとき、ソースコードからビルドが行われ、インストールされている CUDA Toolkit と cuDNN 用の cupy がインストールされる。そのため、 CUDA Toolkit や cuDNN をアップグレードした場合は、 cupy を再インストールする必要がある。
- cupy をインストールするときに、上記の CUDA Toolkit あるいは cuDNN のインストールが正しく行われていない場合、エラーが発生する
備考: conda と pip のどちらでインストールすべきか
- conda
- CUDA Toolkit, cuDNN がついてくるので、別途インストールしなくてもいいため、より簡単。
- CUDA 絡みのエラーが出にくい(気がする)
- pip
- 公式サポート。
- 最新バージョンが提供されている。 (執筆時点で pip は chainer 5.2.0, conda は 5.1.0 が最新)
- 最新の CUDA Toolkit, cuDNN を使えるためパフォーマンスが良い(正直違いは分からない)
個人的な意見ですが、 pip で試みて問題が発生したら conda でインストールするのが良いかと思われます。
conda でインストールする際は仮想環境を作れば失敗しても簡単にリカバリーできます。