ゲーミングPCのGPUを使って深層学習がしたい

# はじめに

ゲーミングPCを購入したので、GPUを使って深層学習をしてみたくなりました。
そこで、TensorflowとかPytorchにGPUを認識させるまでに僕が行ったことを残したいと思います。

今回僕が環境構築したPCはOSがWindows 10、搭載されているGPUがGeForce RTX 3080です。
（以下の記事では上記以外のGPUでも環境構築の仕方がわかるような内容になっているように書いたつもりです。）

大まかにやるべきことを列挙すると

1. NVIDIAドライバーの導入
2. CUDAの導入
3. cuDNNの導入
4. Tensorflow/Pytorchの導入（+Visual Studio）

となります。

では、早速1から順に始めましょう。

# 1. NVIDIAドライバーの導入

[ここ](https://www.nvidia.co.jp/Download/index.aspx?lang=jp)でお使いのPCのGPUに対応するNVIDIAドライバーのバージョン確認を行います。

下のように表示されるのでお使いのPCのスペックを選んで検索を押しましょう。

![スクリーンショット 2021-08-19 222706.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454070/0931d263-5ba4-fb93-c6ae-c085de7851dd.png)

次にこんなページに飛びます。赤線部分の数字がお使いのGPUに対応するドライバーのバージョンです。こちらを覚えてダウンロード、インストールしましょう。
（購入されたPCがゲーミング用であればすでに導入済みかと思いますが、、、）

![Inkedスクリーンショット 2021-08-19 223226_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454070/e6372380-7bb0-838c-d56e-5c8810ce97a5.jpeg)

1つ目終了です。次に行きます

# 2. CUDAの導入

[ここ](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html)のtable.3に記載されているNVIDIAドライバーに対応するCUDAを確認します。

僕の場合はWindows用のドライバーでバージョンが471.68だったのでCUDA 11.4 Update 1を入れることにしました。
もちろんこの書き方だとほかのバージョンのCUDAも動くと思われます。


**※追記**
**現状pytorchのcudaへの対応が11.1となっているのでCUDAを入れるときは11.1を入れたほうがいいかもしれないです。。。**


![Inkedスクリーンショット 2021-08-19 225112_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454070/6a1fd3ad-5205-9a13-b9f9-556efceb6e12.jpeg)

CUDAは[こちら](https://developer.nvidia.com/cuda-toolkit-archive)から目的のものを探して、ダウンロードしましょう。

上で確認したバージョンのリンクをクリックしてプラットフォームを選択します。

![スクリーンショット 2021-08-19 230023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454070/5fb917e7-b0f2-fe8f-4a8c-0ea6c395921c.png)

ダウンロードしたらインストールして次です。

# 3. cuDNNの導入

[ここ](https://docs.nvidia.com/deeplearning/cudnn/support-matrix/index.html)で2で導入したCUDAに対応するcuDNNを確認しましょう。

確認し終わったら[ここ](https://developer.nvidia.com/rdp/cudnn-archive)でcuDNNをダウンロードしましょう。
ダウンロードする際は、NVIDIAのアカウントを作らなきゃいけないみたいなので、作りましょう。

次に、ダウンロードしたcuDNNを解凍すると、cudaという名前のフォルダが出てきますので、中身を見ると以下のようになっていると思います。

![スクリーンショット 2021-08-22 160706.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454070/066cedce-b078-0c88-110a-38c503d28ab8.png)

ここに入っているbin、include、libを2で導入したcudaのフォルダに入っているbin、include、libと入れ替えます。

![スクリーンショット 2021-08-22 173809.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454070/cb74bf97-f686-ae15-edd9-14f0b0de3817.png)


おそらくオリジナルのCUDAのbin、include、libは C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\バージョン名 のフォルダに入っているはずです。


# 4. Tensorflow/Pytorchの導入

以降、pythonの開発環境がそろっている前提で話が進みます。
僕なりの環境構築の仕方を[ここ](https://qiita.com/APRILSIXTEEN/items/9d8ba8b6e8eb3ee3fb43)に置いています。よろしければ。

## Tensorflow

[ここ](https://www.tensorflow.org/install/source_windows)の下のほうにテスト済みのビルド構成が書いてあるのでそこを参考に、tensorflowを導入しましょう。

![スクリーンショット 2021-08-22 182821.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454070/b9365699-c67c-ac6b-0887-df1bc583e6a2.png)


ちなみに、僕の構成はここに乗っていなかったので適当に現時点で一番新しいtensorflow(2.6.0)を導入したら動きました。。。

ここまで触れてこなかったんですが、CUDAはC++で書かれているようで、コンパイラが必要とのことです。

コンパイラ欄に書かれているMSVCを[ここ](https://visualstudio.microsoft.com/ja/downloads/)からダウンロードしましょう。
インストール中以下のような画面が出てきたら、C++によるデスクトップ開発にチェックを入れるようです。僕はチェックを入れ忘れていたんですが、なぜか動いてました。。。
チェックを入れ忘れた方はコントロールのプログラムと機能でMSVC installerを右クリック、変更を選択するとこの画面に入れます。

![スクリーンショット 2021-08-22 183455.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454070/38936490-dfd7-c32b-b116-a856fef71ad4.png)

## Pytorch

[ここ](https://pytorch.org/get-started/locally/)で下のように構成を入力すると、pipのコマンドが出てくるのでこれをターミナルに打ち込んで導入しましょう。

![Inkedスクリーンショット 2021-08-22 185317_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454070/d3515688-f9b5-662e-681c-873b4e111e76.jpeg)

これで導入作業は終了です。

# おわりに

試しに下記のコードを動かしてみましょう。

```python
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じゃなきゃ大丈夫だと思われます。

```terminal
2.6.0
1.9.0+cu111
1
True
```

お疲れさまでした。