##PytorchをCUDAで動かす
###日経ソフトウェア21/01の記事の後半部
日経ソフトウェアの21年1月号にpytorch
でのCNNを動かす特集記事があります。わかりやすい記事で良かったです。この記事の後半部にGPUでPytroch
を動かす方法がのっています。そこで、CUDAを入れてみたのですが、動かすまでに時間がかかりましたので、自分がはまったポイントを覚えのために書いておきます。
(※10/04 5のパスについて追記しました)
###4つの条件が合わないといけない
まず4つのドライバーやライブラリーは以下の4つです。
このバージョンが合わないと動かない。
・NvideaのGPUドライバー
・CUDA toolkit
・cuDNN
・Pytorch
まずPytorch
の公式サイトを見ます。
INSTALL PYTORCHのところを見ると
今は、CUDAのv10かv11のようです。
ここの指定は、V11.1ですが、私は最新(21/03/14)のv11.2を入れてしまいました。
CUDAの入れ方は基本的には、この方のHPで良いと思いました。でも、この方のHPはtensorflow
ですので、最後でPytorch
を入れないといけません。
TensorFlow (v2.2.0)でGPUを使う方法 (Windows)
0.GPUドライバーを最新にする。
1.Visual Studio のインストール
たぶん、これは、途中でCUDAが動いているかどうかの確認をするために必要なのだけだと思う。この確認を省くならば、いらないと思う。私は、以前入れていたVisual studia2017を使用することにした。
2.CUDA Toolkitのインストール
私は、最新のV11.2をインストールした。結論としては、V11.1でなくてもV11.2で動いた。
3.CUDA Toolkit が正常に入ったか確認
これを省くかどうかはやる人任せですね。私はVisual studia2017が入っていたので、bandwidthTest_vs2017.slnをビルドして実行して、確認した。ここでCUDA自体が動いているのが確認できた。
4.cuDNN のダウンロードおよび解凍
まず、CUDAでGPUを動かすためには、cuDNNがいる。これをダウンロードして解凍すると、CUDAというフォルダーができます。他のHPには、これを3でできたCUDAのフォルダーの中に入れてしまうというのもあるが、このHPのように、別で置いておいた方が、何かあった時によさそうだと思ったので、C:\tools\cuda
においた。
5.Pathを通す(10/04追記)
CUDAtoolkitのPATHで自動で入るものもありますが、このHPTensorFlow (v2.2.0)でGPUを使う方法 (Windows)で書いてあるすべてのPATHは自動で入らない。私の場合は、2つ目と3つ目は自動では入っていなかった。後、cuDnnは自分でPATHを通さないといけない。
そういうわけなので、とりあえず、この4つ5つのPATHが通るように、windowsのシステムのプロパティから環境変数の設定に入って、自分で設定します。
5つのパスはこれです。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvp
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\CUPTI\lib64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include
C:\tools\cuda\bin
このHPTensorFlow (v2.2.0)でGPUを使う方法 (Windows)から一つ増えていますが、どれが必要でどれがいらないのか、よくわかっていません。
ここまでで、CUDAの設定は終了。
基本はTensorFlow (v2.2.0)でGPUを使う方法 (Windows)で良いのですが、ここからがPytorch
用で異なります。
6.CUDAのバージョンに合うPytorch
を入れる。
Pytorch
の公式サイトで、自分のCUDAに合うPytorchのpipコマンドを作る。条件を選択すると、Run this Command:
のところにインストールコマンドが出てきます。
私の場合は、stable版+windows+pip+CUDA11です。
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio===0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
このコマンドをコピペして、pip
インストールする。
これでCUDAとPytorch
のインストールは完了です。
CUDAが有効かどうか?は
import torch
print(torch.cuda.is_available())
#True
こで、True
がでれば、成功です。
はまったポイント
・そもそもcuDNNがいるとは思っていなかった。CUDAToolkitのみで動くと思っていた(笑)
・PATHを通すのが自動で入るもの以外にもいるみたい(検証していませんが)
・CUDAに合うPytorch
がいることも知らなかった。
知らないということは恐ろしい。(苦笑)