studylog/北の雲

chainer/python/nlp

chainerメモ7 AttributeError: 'module' object has no attribute 'cupy’

ここ一週間ぐらいcupyが無くて先に進めないという声がチラホラ。



chainerは1.2.0まではPyCUDAを使ってたけど、9月頭に出る1.3.0からはCuPyという自前のものに置き換える。
そんで、現在のmasterリポジトリは既にCuPy版がマージされてる。

ここの会話が参考になるのでリンク先を。エラー出た人と中の人の会話。

ことね on Twitter: "@unnonouno 最新版のChainerでMNISTのExampleをGPUマシンで動かそうとしていたのですがAttributeError: 'module' object has no attribute 'cupy’と出てしまいます、これは既知のバグでしょうか。"

CuPyが無いわけじゃなくて、CUDA環境が適切に整ってなくて失敗した時になぜか「cupyが無いよ」ってエラーが出ちゃってる模様。このエラー文は不親切すぎるということで対応中なので1.3.0の頃には解決してるかも。github.com


推測だけど上記のエラーが出てる人達はPyCUDA版をすっ飛ばして、最近いきなりCuPy版を使い出した人達っぽい。普通のpipインストールだとPyCUDA版の1.2.0が入るけど、彼らはGitHubから最新のリポジトリを入れてCuPy版を使ってるということ。もし1.2.0以前からGPUで動かしてたらその時点でもっと詳細なCUDA環境の不備エラー文が出てくれてたはず。

とりあえず現時点での解決法としては二通り。

1.最新のリポジトリを入れるのではなくて1.2.0を入れる(簡単)

そうするとまだPyCUDA版なのでCUDA環境が適切じゃない場合にはもっと詳細なエラーが出てくれるので、修正しやすい。

2.気合いでちゃんとCUDA環境を整える(どこがおかしいのか分かり辛いので面倒かも)

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

このあたりのパスがきちんと設定されていない可能性、あるいは必要な.soファイルが適切なディレクトリに無い可能性が考えられる。