Surface Book にディープラーニング環境を構築しようと数ヶ月前からエッサホイサヨイヤッサしてた。
Chainer を入れて、サンプルを学習させるところまでは行けたんだけど、せっかくの GPU をふんだんに使った学習が未だにうまくいかず。
CuPy is not correctly installed.
が出ちゃうんだよなあ。
環境
- Windows 10
- Python 3.5.2 + Anaconda 4.1.1
- CUDA 7.5
- cuDNN v5
- Chainer 1.16.0
- Microsoft Visual Studio Community 2013, 2015
mnist の学習
(C:\Program Files\Anaconda3) C:\Windows\Temp\chainer-master\examples\mnist>python ./train_mnist.py --gpu 0 GPU: 0 # unit: 1000 # Minibatch-size: 100 # epoch: 20 Traceback (most recent call last): File "./train_mnist.py", line 107, in <module> main() File "./train_mnist.py", line 56, in main chainer.cuda.get_device(args.gpu).use() # Make a specified GPU current File "C:\Program Files\Anaconda3\lib\site-packages\chainer\cuda.py", line 167, in get_device check_cuda_available() File "C:\Program Files\Anaconda3\lib\site-packages\chainer\cuda.py", line 85, in check_cuda_available raise RuntimeError(msg) RuntimeError: CUDA environment is not correctly set up (see https://github.com/pfnet/chainer#installation).CuPy is not correctly installed. Please check your environment, uninstall Chainer and reinstall it with `pip install chainer --no-cache-dir -vvvv`.
考えられること
pip uninstall chainer
->pip install chainer --no-cache -vvvv
をしたけど、だめ。- nvcc へのパスは通ってる。
- やっぱり
import cupy
でしくじっているなあ。CuPy が入っていないのは確実っぽい。本来であれば Chainer と一緒にインストールされるはずなのだが。
(C:\Program Files\Anaconda3) C:\Windows\Temp\chainer-master\examples\mnist>python -c "import cupy" Traceback (most recent call last): File "C:\Program Files\Anaconda3\lib\site-packages\cupy\__init__.py", line 8, in <module> from cupy import core File "C:\Program Files\Anaconda3\lib\site-packages\cupy\core\__init__.py", line 1, in <module> from cupy.core import core ImportError: cannot import name 'core' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Program Files\Anaconda3\lib\site-packages\cupy\__init__.py", line 16, in <module> raise six.reraise(RuntimeError, RuntimeError(msg), sys.exc_info()[2]) File "C:\Program Files\Anaconda3\lib\site-packages\six.py", line 685, in reraise raise value.with_traceback(tb) File "C:\Program Files\Anaconda3\lib\site-packages\cupy\__init__.py", line 8, in <module> from cupy import core File "C:\Program Files\Anaconda3\lib\site-packages\cupy\core\__init__.py", line 1, in <module> from cupy.core import core RuntimeError: CuPy is not correctly installed. Please check your environment, uninstall Chainer and reinstall it with `pip install chainer --no-cache-dir -vvvv`.
どれだけググっても、「pip uninstall chainer
-> pip install chainer
しろ」 という記述ばかり。
突破口が見えず、これで長い間やる気が削がれていた。
CuPy を強制的にインストール
ある日ふと思いついて、無理やり CuPy を入れてみた。
(C:\Program Files\Anaconda3) C:\Windows\Temp\chainer-master\examples\mnist>pip install cupy Collecting cupy Using cached cupy-1.0.0.tar.gz Complete output from command python setup.py egg_info: running egg_info creating pip-egg-info\cupy.egg-info writing dependency_links to pip-egg-info\cupy.egg-info\dependency_links.txt writing top-level names to pip-egg-info\cupy.egg-info\top_level.txt writing pip-egg-info\cupy.egg-info\PKG-INFO writing requirements to pip-egg-info\cupy.egg-info\requires.txt writing manifest file 'pip-egg-info\cupy.egg-info\SOURCES.txt' warning: manifest_maker: standard file '-c' not found error: Unable to find vcvarsall.bat Executing cythonize Options: {'profile': False, 'linetrace': False, 'annotate': False, 'no_cuda': False} Include directories: ['C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v7.5\\include'] Library directories: ['C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v7.5\\bin', 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v7.5\\lib\\x64']
error: Unable to find vcvarsall.bat
!!! なんかこれ見たことあるぞ。調べてみると、Visual C++ のバージョンに起因するエラーとのこと。
早速 VC++ 2015 のビルドツールをダウンロードして、インストール。
カスタムインストールにして、インストールするSDKの選択。デフォルトではWin8 SDKにチェックが入っていたけど、念のためWin10のSDKもチェック。
インストール後再起動し、pip install cupy
したところ、無事インストールに成功! GPU による学習もうまくいった。
振り返り
- まずいちばん最初のエラーメッセージ
CuPy is not correctly installed.
が出る原因だけど、pip install chainer
が実は失敗していたと推測。インストールするとぶわーっとメッセージが出るからおそらく失敗した旨を見落としてしまっていたのだろう。 - ではなぜ Chainer のインストールに失敗したのか。多分、Visual Studio Community 2015 をインストールする際に必要なビルドツールを選択し忘れたのだと思う。
- C++ Build Tools を入れたら CuPy のビルドに成功したので。
おまけ: CPU と GPU でどれだけ学習速度に差が出たか?
mnist 学習中の画面から適当に引っ張ってきた数字。
- CPU: 22.03 iters/sec.
- GPU: 76.31 iters/sec.
速度向上分はまさかのたった3~4倍程度ww
巷では20倍とか、30倍とか言われているから期待しちゃったのに。
Surface Book のGPUの遅さは噂に聞いていたが、これほどまでとは。
おまけその2: おすすめのディープラーニング本
今月出たばっかりのこの本、実にわかりやすい。ページ数も多くないので、頑張れる。何より、読んでいて楽しい。そんなに数式が出てこないからかなぁ(あー理系なのに)
薄いとはいえ、深層学習の基礎がしっかりと凝縮されている。
受験時代の名著「物理のエッセンス」を彷彿とさせる完成度(伝わらない