【備忘録】PyTorchでよく使う動作確認Code

# はじめに

ちょいちょいDockerコンテナからGPUカードを利用する機会があるのだが、、、動作確認Codeを都度調べて実行しています。
が、Google先生で都度調べるのが面倒になってきたので、備忘録として本記事を投稿します。

## 本稿で紹介すること

以下、手元PC環境（Windows11）に施してゆきます。
- PyTorchでよく使う動作確認Code

:::note info
筆者は、Windows 11のホスト上でWSL2／Ubuntuを起動しています。
更に、UbuntuでDockerコンテナを起動しています。
一応、GPUカード（NVIDIA GeForce GTX 1660 SUPER）が搭載されています。
:::

- Windows 11 Ver.22H2 (Build. 23424.1000)
- WSL 1.2.5.0
- Ubuntu 20.04.5 LTS
- NVIDIA グラフィックスドライバー v532.03

# PyTorchでよく使う動作確認Code

過去の記事でも利用しましたが、<b><font color="#ff0000">NGC CATALOG</font></b>のコンテナイメージ[^1][^2]を利用します。
具体的なリポジトリ：タグだと、<b><font color="#ff0000">nvcr.io/nvidia/pytorch:22.12-py3</font></b>です。

## GPUドライバのVer.確認、および、GPU使用率の確認

```shell:
$ nvidia-smi
Sun Jun 11 08:03:02 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.51.01              Driver Version: 532.03       CUDA Version: 12.1     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                  Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf            Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce GTX 1660 S...    On | 00000000:01:00.0  On |                  N/A |
| 46%   47C    P0               37W / 125W|    377MiB /  6144MiB |      1%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A        22      G   /Xwayland                                 N/A      |
+---------------------------------------------------------------------------------------+
```

## GPUドライバのVer.確認、および、GPU使用率の確認（1秒間隔でモニタリングする場合）

```shell:
$ watch -n 1 nvidia-smi
```

## CUDA ToolkitのVer.確認

```shell:
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0
```

## PyTorchのVer.確認

```shell:
$ torch.__version__
'1.14.0a0+410ce96'
```

## PyTorchから見たCUDA ToolkitのVer.確認

```shell:
$ torch.version.cuda
'11.8'
```

## PyTorchからGPU利用可否の確認

```shell:
$ torch.cuda.is_available()
True
```

## PyTorchから利用可能なGPUカード数の確認

```shell:
$ torch.cuda.device_count()
1
```

## PyTorchから利用可能なデフォルトGPUカード番号の確認

```shell:
$ torch.cuda.current_device()
0
```

## PyTorchから利用可能なGPUカード型番の確認

```shell:
$ torch.cuda.get_device_name()
'NVIDIA GeForce GTX 1660 SUPER'
```

以下でも同じ結果を得られます。

```shell:
$ torch.cuda.get_device_name(0)
$ torch.cuda.get_device_name(torch.device('cuda:0'))
$ torch.cuda.get_device_name('cuda:0')
```

## PyTorchからGPUカードのCompute Capability確認

```shell:
$ torch.cuda.get_device_capability()
(7, 5)
```

## PyTorchからGPUカードで扱えるGPU命令セット確認

```shell:
$ torch.cuda.get_arch_list()
['sm_52', 'sm_60', 'sm_61', 'sm_70', 'sm_75', 'sm_80', 'sm_86', 'sm_90', 'compute_90']
```

# まとめ

自身の備忘を兼ねて、本稿ではPyTorchでよく使う動作確認Codeを紹介しました。

[^1]: PyTorch | NVIDIA NGC | https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch
[^2]: PyTorch Release 22.12 - NVIDIA Docs | https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel-22-12.html