chainerメモ7 AttributeError: 'module' object has no attribute 'cupy’
ここ一週間ぐらいcupyが無くて先に進めないという声がチラホラ。
cupyが無いって怒られるんだけどどうすればいいんだろ
— ちゃんまつ氏 (@japapapapam) 2015, 8月 26
chainer君。gpuを使おうとすると動作しないね。cuda.cupyがないとか言われても、dependencyの導入をしくじったのか環境変数をしくじったのかそおそもwindowsで動かないのかわからないよ。
— 49@終戦 (@49_suehara) 2015, 8月 26
っていうかcuda.cupyってないじゃん
— ことね (@kotone_nyt) 2015, 8月 29
chainerは1.2.0まではPyCUDAを使ってたけど、9月頭に出る1.3.0からはCuPyという自前のものに置き換える。
そんで、現在のmasterリポジトリは既に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ファイルが適切なディレクトリに無い可能性が考えられる。