エモいと言わないために

多くの場合、私の思考は言葉に結びつかないので、もやもやしたままだ。 それは曖昧でおかしな形を描いて、呑み込まれていく。 そしてたちまち私はそれを忘れてしまう。 『嘔吐』より

Windows10 に Chainer をインストール

どうも、わたしです

先日GPUマシンを組んだので、DeepLearning環境を構築しました。
マイニングしようとしたりしていたので、順番がぐちゃぐちゃだったりしますが一通りできたのでメモとして残しておきます。

今回は、構築時のハマりどころのメモとしてこの記事を残しています。

日時

2018年 2月10日

PCの構成

OS:Windows 10 Pro
GPU :GTX1080 Ti
cuda:9.1.85

参考記事

Chainer 4.0.0b1 on Windows10 with CUDA 9.0

qiita.com 非常に助かりました。ありがとうございます。

Anaconda

python3.6 版を選択
PATHが通ってなかったので通す
(通した記憶があるけどVisual Stdio2017入れたりした関係かその形跡が消えていた)

C++ コンパイラ

landinghub.visualstudio.com こちらをインストールし、pathを通す

path

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

CUDA Toolkit

たしかこれを入れた
CUDA Toolkit 9.1 Download | NVIDIA Developer こちらもpath を通す

path

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt

cuDNN

NVIDIA cuDNN | NVIDIA Developer
ダウンロード後、以下フォルダに追加

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1
開発者アカウントが必要なので作りましょう

cupy

cupyのインストールでハマりました。

pip install --no-cache-dir cupy==4.0.0b1 
Collecting cupy==4.0.0b1
  Downloading cupy-4.0.0b1.tar.gz (1.9MB)
    100% |████████████████████████████████| 1.9MB 12.6MB/s
Exception:
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str
    return s.decode(sys.__stdout__.encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\commands\install.py", line 324, in run
    requirement_set.prepare_files(finder)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_set.py", line 380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_set.py", line 634, in _prepare_file
    abstract_dist.prep_for_dist()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_set.py", line 129, in prep_for_dist
    self.req_to_install.run_egg_info()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_install.py", line 439, in run_egg_info
    command_desc='python setup.py egg_info')
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\__init__.py", line 676, in call_subprocess
    line = console_to_str(proc.stdout.readline())
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\compat\__init__.py", line 75, in console_to_str
    return s.decode('utf_8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\basecommand.py", line 215, in main
    status = self.run(options, args)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\commands\install.py", line 385, in run
    requirement_set.cleanup_files()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\build.py", line 38, in __exit__
    self.cleanup()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\build.py", line 42, in cleanup
    rmtree(self.name)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 49, in wrapped_f
    return Retrying(*dargs, **dkw).call(f, *args, **kw)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 212, in call
    raise attempt.get()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 247, in get
    six.reraise(self.value[0], self.value[1], self.value[2])
  File "C:\ProgramData\Anaconda3\lib\site-packages\six.py", line 693, in reraise
    raise value
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\retrying.py", line 200, in call
    attempt = Attempt(fn(*args, **kwargs), attempt_number, False)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\__init__.py", line 102, in rmtree
    onerror=rmtree_errorhandler)
  File "C:\ProgramData\Anaconda3\lib\shutil.py", line 494, in rmtree
    return _rmtree_unsafe(path, onerror)
  File "C:\ProgramData\Anaconda3\lib\shutil.py", line 384, in _rmtree_unsafe
    _rmtree_unsafe(fullname, onerror)
  File "C:\ProgramData\Anaconda3\lib\shutil.py", line 393, in _rmtree_unsafe
    onerror(os.rmdir, path, sys.exc_info())
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\__init__.py", line 114, in rmtree_errorhandler
    func(path)
PermissionError: [WinError 32] プロセスはファイルにアクセスできません。別のプロセスが使用中です。: 'C:\\Users\\root\\AppData\\Local\\Temp\\pip-build-cumhw_mz\\cupy'

コマンドプロンプト文字コードをこちらの記事の手順に合わせて修正 qiita.com

再度実行するもインストールに失敗

コマンドプロンプトを使用せずにインストールする方法を考え、Jupyter notebook 上でインストールを試みました。

jupyter notebook 起動

jupyter notebook

Jupyter notebook 上でpip コマンドをたたく場合は先頭に!をつければ良いので

!pip install --no-cache-dir cupy=4.0.0b1
無事インストールに成功しました。 f:id:rgbten084:20180210183947p:plain

chainer

pip intall chainer

chainerは問題なくインストールできていました。

まとめ

文字コードが原因ならコマンドプロンプトを使わなければいいじゃない‼
パワープレーでなんとかなりました。

git 周りの整備がまだなので、一通り落ち着いたら正しく動くかを検証します。
追記等あれば記載します。