ローカルPC環境にGPUを使用した機械学習環境を作成する

# はじめに
GPUを搭載しているPC環境にローカル上で機械学習が行える環境を整えるための記事になります。
Windowsベースで話を進めて行きますのでLinux環境の方は適宜読み替えてください。

**対象者**
・PythonやPCに関しての知識が少しでもある方
・機械学習を始めてみたい人
・LLMや画像生成サービスなどを使用してみたい人

今回はTensorflowがGPUを認識するところまで行きます。

## 環境
・Windows11
・Python3.10.6
・GPU NVIDIA RTX3090
・Tensorflow-gpu2.10
# 構築の流れ
大前提としてまずは自分の所有しているPCに**NVIDIAのGPU**が搭載されていることを確認してください。
Windowsの場合はタスクマネージャーを開き、GPUのメニューから型番などを確認しましょう。
型番は**覚えておいてください。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/0eb4b142-77aa-42dc-b95a-2a47cec79b5c.png)
## NVIDIAドライバーインストール
自身が搭載しているGPUに対応したドライバーをインストールします。
BTOやゲーミングPCを購入した方はデフォルトで入っていることがありますが、windwosのコマンドプロンプトからもドライバーのインストール状況を確認できます。

```cmd:書き方
nvidia-smi
```
画像の表示になればインストールされています。
![スクリーンショット 2025-05-29 170240.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/9a282856-ed35-43c1-a544-19e1650b2f9f.png)
もしドライバが無い方は下記のリンクからインストールします。

https://www.nvidia.com/ja-jp/drivers/

ページから自身のGPUの型番からドライバーを検索します。
![スクリーンショット 2025-05-29 171233.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/a866d6a1-8586-4cf0-b902-c8583897b3d1.png)

ドライバーには2種類ありますが、どちらを選択しても構いません。
私の環境ではGame Readyドライバーが入っていますのでGame Readyドライバーで進めていきます。
ドライバーをダウンロードする際に**ドライバーバージョンを必ず覚えてください。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/a75ecda7-4ba4-4513-b214-b3981ba6c2ff.png)
インストール完了後はサイドnvidia-smiで確認してください。

:::note info
補足
NVIDIAドライバーはこれまで出たすべてのCUDAに対応しているので、NVIDIAドライバーバージョンは基本的に最新版をダウンロードしていただいて問題ありません。
心配な方は対応表などを見て合わせて行くのでもいいと思います。
:::

# CUDA、cuDNNのインストール
ドライバーインストール完了後、CUDA及びcuDNNのインストールを行います。
２つともGPUをAI用途に使用できるようするためのものです。
### CUDA
まずはCUDAの対応表を見て自身が使いたいCUDAに対応しているNVIDIAドライバーのバージョンをダウンロードします。

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/ffdb7508-6cae-4e30-83d9-ddb7ff81b481.png)

https://developer.nvidia.com/cuda-toolkit

上記からCUDAToolkitをダウンロードします。
古いCUDAToolkitを使用したい方は下記から
**最新版ドライバーはたまに不具合などある場合があります**
そういったのが怖い方は古いバージョンのドライバーを使うようにしましょう。
https://developer.nvidia.com/cuda-toolkit-archive

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/d23c47ba-8085-4c14-8cfc-2516952df42c.png)

**localかnetworkかはどちらでも構いません。**

インストーラーがダウンロードされますのでインストールしていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/310becf4-0c03-4830-a5ea-a18ed9062644.png)
基本的にはデフォルトのまま進めて問題ありません。
**不要なものが同時に入るのが嫌な方はカスタムから必要なもののみインストールしましょう。**

### 環境変数の確認
インストール完了後、環境変数にCUDAのPATHが通っているかを確認します。
環境変数の編集からシステム環境変数を確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/a4eac321-4f14-460c-b4f3-04e0ef2b713b.png)

CUDA_PATHで自身がインストールしたCUDAが通っていれば問題ありません。
最後にコマンドプロンプトから
```cmd:コマンドプロンプト
nvcc -V
```
でCUDAの情報が出てくれば完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/af585192-5c3c-4f41-854f-d5ca6ed9dcee.png)

### cuDNN

#### 前準備

**・C:\Program Files\NVIDIA GPU Computing Toolkitの直下に/cuDNNフォルダを作成**

cuDNNはCUDAとの互換を取る必要があるので下記リンクから確認しましょう。

https://docs.nvidia.com/deeplearning/cudnn/backend/latest/reference/support-matrix.html

今回はTensorflow-gpu2.10を使用するのでcuDNN8.1.1を使用します。
公式から素直にダウンロードしようとすると最新版のcuDNNしか出てこないので、過去のバージョンが公開されているページからダウンロードします。

https://developer.nvidia.com/rdp/cudnn-archive

**ダウンロードにはアカウントの作成が必要です**

ダウンロードした後、ファイルを解凍し、中身一式(bin, include, lib, LICENSE) を先程作成した 
C:\Program Files\NVIDIA GPU Computing Toolkit\cuDNNへコピーして下さい。

### 環境変数の登録
設定 > システム > バージョン情報 > システム詳細設定 > [環境変数] をクリック
[システム環境変数] の新規(New)から
環境変数名:CUDNN_PATH
値:C:\Program Files\NVIDIA GPU Computing Toolkit\cuDNN

環境変数名:Path
値：C:\Program Files\NVIDIA GPU Computing Toolkit\cuDNN\bin

の２つを登録 **(PCに複数のCUDAが入っていると値が少し変わりますが、一つのみの場合はこの方法で問題ありません。)**

環境変数登録後、コマンドプロンプトから
```cmd:コマンドプロンプト
where cudnn64_8.dll
```
を入力し、画像のようになればOKです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/14c46633-2441-465e-bf11-f4ac46f1e18e.png)

## Tensorflowe

前準備が必要になります。下記参照

https://www.kkaneko.jp/tools/win/tensorflow2.html

下記ページにTensorflowのインストール方法と対応バージョンが記載されています。

https://www.tensorflow.org/install/source_windows?hl=ja#gpu

次にPythonの仮想環境を作成し、そこにTensorflowをインストールして行きます。

```Python:Terminal
python -m venv tf-env
.\tf-env\Scripts\activate 

pip install --upgrade pip
pip install tensorflow-gpu==2.10 #自身の使用したいバージョンに合わせて適宜変更
```

ここまでで自分と同じバージョンを入れている方は同じ進め方で問題ありません。

:::note warn
補足
tensrolflowをインストールする際に、様々な依存関係があるライブラリが同時にインストールされますが、numpy<2移行のバージョンでライブラリ同士の競合により動作しないため、先にnumpy<1をインストールすることを強く推奨します。
:::

無事インストールが完了したら、TensorflowがGPUを認識しているかの確認を行います。

```Python:GPU_Recognition.py
import tensorflow as tf

print("TensorFlow version:", tf.__version__)
print("Num GPUs Available:", len(tf.config.list_physical_devices('GPU')))
print("GPU Devices:", tf.config.list_physical_devices('GPU'))
```

```Python:実行結果
TensorFlow version: 2.10.0
Num GPUs Available: 1
GPU Devices: [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
```
自身のインストールしたTensorflowのバージョン及びGPUs Availableが1になればOKです。
これでGPUを使用してTensorflowでの機械学習をする環境が整いました！

# おわりに
技術記事の初投稿でなかなか読みにくい部分などあるかと思いますが、AIを触りたい方などが増えていると思うので一助になればと思います。
また機会があれば
・PyTorch+YOLOによる物体検知AIの作成
・Stable Diffusionでの画像生成
・Tensorflow-gpuのmnistを使用した画像分類
などの記事をかければいいなと思います。

うまくいかないなどあればコメントで教えて下さい。

# 株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】
ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。

https://onewedge.co.jp/