のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

Chainer version 1.5への対応に苦労する方へ

Sponsored Links

皆さんこんにちは
お元気ですか。私は元気です。

最近、ChainerのVersionが1.5へUpgradeしましたが…
従来までと異なり、GPUへの対応が大変です。

なぜ、大変になったか?

Cythonへの対応

調べた限りだとCythonです。従来まではctypesを使って
行っていたのですが、ctypesはボトルネックとなっていたようです。
このボトルネックをCythonを使って解消したことから、発生している諸々のエラーです。

h5pyへの対応

あっさり解消できますが、外部ライブラリが必要になります。
これは学習済みモデルを保存する為に使われるようです。

基本コンパイルコマンド

apt-get install libhdf5-dev
sudo pip install -U chainer

失敗した人はハマった箇所を見てみましょう。以下に私がハマった箇所を記載していきます。
開発者のunnonouno氏の非公式のインストールTipsが以下にあるのでそちらも参照ください。

qiita.com

実際にハマった箇所

cudaのパスの設定が必要

事象①cupyのパスが必要

インストールするとこんなことになっていました。

>>> dir(chainer.cuda)
['DummyDevice', 'DummyDeviceType', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_resolution_error', 'available', 'check_cuda_available', 'copy', 'cudnn_enabled', 'e', 'elementwise', 'empty', 'empty_like', 'full', 'full_like', 'functools', 'get_array_module', 'get_device', 'init', 'memoize', 'ndarray', 'numpy', 'ones', 'ones_like', 'os', 'reduce', 'to_cpu', 'to_gpu', 'warnings', 'zeros', 'zeros_like'

おわかりでしょうか?cupyがありません。
cuda関連のパス設定に失敗すると発生します。

以前までは、実行時にcudaのパスを指定すれば問題ありませんでした。
しかし、Cython化により、コンパイル時にcudaのパスが必要になります。

事象②pipからログが出てくれない

pipからインストールしようとすると、ログ出力がされません。upgradeしかでないので、
例えば、特定のライブラリがない、などを出力してくれません。

そこで、私はgithubからソースを落とし、コンパイルしました。

解決法

手順としては2つ
①パスを設定する。パスの説明はgithubのREADME.mdに記載があるので、そちらをご覧ください。github.com

また、具体的な内容については僕の過去記事を漁ってもらえると良いと思います。

nonbiri-tereka.hatenablog.com

②①でうまくいかないようであれば、ソースコードからコンパイルする。
ソースコードからだとどこで失敗したか洗い出せるので、それを見て、なんのパスが不足しているか
チェックすると良いでしょう。

h5pyへの対応

解決法

必要なライブラリをインストールすれば解消します。

apt-get install libhdf5-dev

後はchainerのupgradeなりinstallすれば、解消します。