最終セットアップ一覧(2020年4月時点)
- セットアップマシン:azure vm NV6
- OS: Win10
- python: 3.7.7
- virtualenv + pipインストール環境
- torch: 1.4.0
- torchvision: 0.5.0
- CUDA: 10.2.89
cudaセットアップ
- 結論:すんなり公式サイトからダウンロードしてインストールすればうまくいく。
python version
- 結論:64bitを選んで、現時点pythonは3.7を選ぼう。
- cuda10は32bitがサポートしていないので、pythonは86_64の64ビットを使わないといけない。
- python3.8はまだいろいろ試されていなくて、下記エラーが結構出る。
なので3.7が最新の実行できる環境。
RuntimeError: error in LoadLibraryA
- リリース予定のtorch1.5で解決しそう。
いつ出るか。
pytorchのインストール方法
- 結論:思い込みのpipインストールが行かず、公式サイトで環境通りにセットアップする。
- 実行コマンド:
pip install torch===1.4.0 torchvision===0.5.0 -f https://download.pytorch.org/whl/torch_stable.html
cudaはwindowsでのマルチスレッドサポートしないケースがあるので要注意!
- pythonのmultiprocessingのPoolなど使って、モデルのクラスをラップしたりして実行すると、
RuntimeError: cuda runtime error (801) : operation not supported
が発生する。 - 文字通りに使用できない。ここが公式サイトの説明
- でもなぜかazure vm NV6では実行ができてしまう。他の環境では高い確率で失敗するからできれば避けましょう。
THCudaCheck FAIL file=C:\w\1\s\windows\pytorch\torch/csrc/generic/StorageSharing.cpp line=245 error=801 : operation not supported Traceback (most recent call last): File "C:\python-venv\****.py", line 97, in <module> main(args) File "C:\python-venv\****.py", line 87, in main p.map(prcess_img_wrapper, values) File "c:\users\your\appdata\local\programs\python\python37\lib\multiprocessing\pool.py", line 268, in map return self._map_async(func, iterable, mapstar, chunksize).get() File "c:\users\your\appdata\local\programs\python\python37\lib\multiprocessing\pool.py", line 657, in get raise self._value File "c:\users\your\appdata\local\programs\python\python37\lib\multiprocessing\pool.py", line 431, in _handle_tasks put(task) File "c:\users\your\appdata\local\programs\python\python37\lib\multiprocessing\connection.py", line 206, in send self._send_bytes(_ForkingPickler.dumps(obj)) File "c:\users\your\appdata\local\programs\python\python37\lib\multiprocessing\reduction.py", line 51, in dumps cls(buf, protocol).dump(obj) File "C:\python-venv\lib\site-packages\torch\multiprocessing\reductions.py", line 242, in reduce_tensor event_sync_required) = storage._share_cuda_() RuntimeError: cuda runtime error (801) : operation not supported