目的
Pytorch、Tensorflowのいくつかのバージョンに対して(NVIDIA)GPUを使うための環境
に関する記事です。
例えば、自力だけで何かをつくる場合には、Tensorflowの2.Xを使うとか、決めることもできるかもしれませんが、github等で示された(示されている)他の方の例を参照する場合など、まだまだ、Tensorflow1.Xを動作させることも多いはず。
同様に、Pytorchのバージョンもいろいろ。
それに対して、NVIDIAのCUDAの対応バージョンが狭い気がする。
しかも、10.0と10.1で違うとか、細かいことを言われると心が折れる。
この記事前提:
- 複数の環境をうまく併設できる方は、この記事は関係ないと思います。
- ここでは、Windowsユーザ向けに記事を書いています。
TensorflowとかPytorchで示されている組合せの推奨
Tensorflow
以下は、source_windowsとなっているとおり、Windowsに関する情報です。
https://www.tensorflow.org/install/source_windows?hl=ja
Pytorch
対策
(あまり、細かいことを気にされない方は、)
Tensorflowにて、1.X⇔2.X は、pip一発ということで許容するとして、
さて、GPU側をどうするかですが、
以下のように併設するでどうでしょう。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
実際に使う側をPATHで優先的にみせる。
対策を整理すると、
- Tensorflowについては、1.X⇔2.X は、pip一発
- GPU(CUDA)は、複数を併設し、Pathでどちらを使うか切り替える。
CUDA_PATHは、手で10.0⇔10.1とか、書き換える必要あり。ただし、
作業内容によっては、CUDA_PATHの影響は、ないのかも。
(すみません、PytorchもTensorflowと同様であることを期待しています。あんまり、経験値なし。。。)
補足
cuDNNのバージョンの調べ方(ベターな方法)
以下の手順で調べられる感じ。
ヘッダファイルを調べる方法がよく示されているが、それでは、有効でないヘッダファイルを調べる可能性もあると思うので。
手順は以下。
- 使おうとしているCUDAのバージョンにあったcupyをインストール
from cupy.cuda import cudnn
cudnn.getVersion()
-
8004
であることがわかる
全然スマートではないが、ベターな気がします。
D:\_qiita>python -m pip install cupy-cuda101
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: cupy-cuda101 in c:\users\XYZZZ\appdata\roaming\python\python37\site-packages (8.0.0)
Requirement already satisfied: fastrlock>=0.3 in c:\program files (x86)\microsoft visual studio\shared\python37_64\lib\site-packages (from cupy-cuda101) (0.5)
Requirement already satisfied: numpy>=1.15 in c:\users\XYZZZ\appdata\roaming\python\python37\site-packages (from cupy-cuda101) (1.17.2)
D:\_qiita>
D:\_qiita>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from cupy.cuda import cudnn
>>> cudnn.getVersion()
8004
>>>
【備忘のための】マイブックマーク
NVIDIA cuDNN 7 のインストール(Windows 上)(金子邦彦研究室)
cuDNNをCUDAのフォルダに上書きする、ちょっと、気持ちの悪い処理を
こんなに丁寧に記載しているページはないのでは?
該当記事の抜粋。
まとめ
自分の備忘のために、もう少し、情報を別途増やすつもりです。