はじめに
ゲーミングPCを購入したので、GPUを使って深層学習をしてみたくなりました。
そこで、TensorflowとかPytorchにGPUを認識させるまでに僕が行ったことを残したいと思います。
今回僕が環境構築したPCはOSがWindows 10、搭載されているGPUがGeForce RTX 3080です。
(以下の記事では上記以外のGPUでも環境構築の仕方がわかるような内容になっているように書いたつもりです。)
大まかにやるべきことを列挙すると
- NVIDIAドライバーの導入
- CUDAの導入
- cuDNNの導入
- Tensorflow/Pytorchの導入(+Visual Studio)
となります。
では、早速1から順に始めましょう。
1. NVIDIAドライバーの導入
ここでお使いのPCのGPUに対応するNVIDIAドライバーのバージョン確認を行います。
下のように表示されるのでお使いのPCのスペックを選んで検索を押しましょう。
次にこんなページに飛びます。赤線部分の数字がお使いのGPUに対応するドライバーのバージョンです。こちらを覚えてダウンロード、インストールしましょう。
(購入されたPCがゲーミング用であればすでに導入済みかと思いますが、、、)
1つ目終了です。次に行きます
2. CUDAの導入
ここのtable.3に記載されているNVIDIAドライバーに対応するCUDAを確認します。
僕の場合はWindows用のドライバーでバージョンが471.68だったのでCUDA 11.4 Update 1を入れることにしました。
もちろんこの書き方だとほかのバージョンのCUDAも動くと思われます。
※追記
現状pytorchのcudaへの対応が11.1となっているのでCUDAを入れるときは11.1を入れたほうがいいかもしれないです。。。
CUDAはこちらから目的のものを探して、ダウンロードしましょう。
上で確認したバージョンのリンクをクリックしてプラットフォームを選択します。
ダウンロードしたらインストールして次です。
3. cuDNNの導入
ここで2で導入したCUDAに対応するcuDNNを確認しましょう。
確認し終わったらここでcuDNNをダウンロードしましょう。
ダウンロードする際は、NVIDIAのアカウントを作らなきゃいけないみたいなので、作りましょう。
次に、ダウンロードしたcuDNNを解凍すると、cudaという名前のフォルダが出てきますので、中身を見ると以下のようになっていると思います。
ここに入っているbin、include、libを2で導入したcudaのフォルダに入っているbin、include、libと入れ替えます。
おそらくオリジナルのCUDAのbin、include、libは C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\バージョン名 のフォルダに入っているはずです。
4. Tensorflow/Pytorchの導入
以降、pythonの開発環境がそろっている前提で話が進みます。
僕なりの環境構築の仕方をここに置いています。よろしければ。
Tensorflow
ここの下のほうにテスト済みのビルド構成が書いてあるのでそこを参考に、tensorflowを導入しましょう。
ちなみに、僕の構成はここに乗っていなかったので適当に現時点で一番新しいtensorflow(2.6.0)を導入したら動きました。。。
ここまで触れてこなかったんですが、CUDAはC++で書かれているようで、コンパイラが必要とのことです。
コンパイラ欄に書かれているMSVCをここからダウンロードしましょう。
インストール中以下のような画面が出てきたら、C++によるデスクトップ開発にチェックを入れるようです。僕はチェックを入れ忘れていたんですが、なぜか動いてました。。。
チェックを入れ忘れた方はコントロールのプログラムと機能でMSVC installerを右クリック、変更を選択するとこの画面に入れます。
Pytorch
ここで下のように構成を入力すると、pipのコマンドが出てくるのでこれをターミナルに打ち込んで導入しましょう。
これで導入作業は終了です。
おわりに
試しに下記のコードを動かしてみましょう。
import tensorflow as tf
import torch
print(tf.__version__)
print(torch.__version__)
print(len(tf.config.experimental.list_physical_devices('GPU')))
print(torch.cuda.is_available())
以下のようになれば成功です。
3行目の1はGPUのデバイス数なので0じゃなきゃ大丈夫だと思われます。
2.6.0
1.9.0+cu111
1
True
お疲れさまでした。