[草稿]GPUに関して
深層学習とgpu
深層学習においてはNVIDIAのものが用いられることが多い。中でもTensorコアを備えるものが深層学習に向いているらしい。GPUのメモリが多いと大規模なnnの学習が可能。
機械学習に用いられる代表的なGPU
-
Tesla
本格的な計算環境の整備に採用される。どちらかと言えばtoB向け -
GeForce
Teslaに対してこちらはtoC向け、グレードとしては「GTX >GT >GTS >GS >G >無印」2000番台からリアルタイムレイトレーシングに対応したさらに上位のRTXが生まれた。(光の反射や屈折などの演算がうまくできるらしい) -
Quadro
GeForceのハイエンド版 -
Radeon(AMD)
NVIDIAじゃないけどコスパ良し
Google colabで使えるgpu
以下コマンドで確認できる
!nvidia-smi
Wed Dec 1 07:27:34 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 495.44 Driver Version: 460.32.03 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| 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 Tesla K80 Off | 00000000:00:04.0 Off | 0 |
| N/A 38C P8 25W / 149W | 0MiB / 11441MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
無料版だと基本的にTesla K80(12mb)が割り当てられるっぽい
ProはTesla P100、 Pro+はTesla V100が基本的に割り当てられるらしい。
参考資料
簡単な性能表
Tesla
GPU名 | 発売日 | メモリ容量 | CUDAコアプロセッサ数 | 備考 |
---|---|---|---|---|
Tesla K80 | 2014/11 | 12GB*2 | 2496*2 | Colab |
Tesla P100-PCIE-16GB | 2016/6 | 16GB | 3584 | Colab Pro |
Tesla P4 | 2016/9 | 8GB | 2560 | |
Tesla V100 | 2018/3 | 16GB | 5120 | Colab Pro+ |
GeForce
GPU名 | 発売日 | メモリ容量 | CUDAコアプロセッサ数 | 備考 |
---|---|---|---|---|
RTX 2080 Ti | 2018/8 | 11GB | 4352 | |
RTX 2070 SUPER | 2019/7 | 8GB | 2560 |
ABCI
GPU名 | 発売日 | メモリ容量 | CUDAコアプロセッサ数 | 備考 |
---|---|---|---|---|
Tesla K80 | 2014/11 | 12GB*2 | 2496*2 | Colab |
Tesla P100-PCIE-16GB | 2016/6 | 16GB | 3584 | Colab Pro |
Tesla P4 | 2016/9 | 8GB | 2560 | |
Tesla V100 | 2018/3 | 16GB | 5120 | Colab Pro+ |
GPUのメーカー
NVIDIA、AMD
GPUの性能
- TFLOPSの数値
不動小数点の計算を1s間に何兆回できるか - メモリの数値
メモリの容量
容量が大きいほど柔軟にシステムが組みやすくなります。 - メモリの帯域幅
GPUでのデータのやり取りの速度、RNNでのモデルを扱いたいときは特に重視
GPUメモリ(グローバルメモリ)からデータを読み出す処理は、様々な演算処理と比べてかなり遅いほうで、ボトルネックとなりやすいので、処理速度に直結する箇所といえる - コアの種類
NVIDIA社のGPUならTensor Coreがあるものが機械学習用途としては性能が良い - アーキテクチャ
Maxwell < Pascal < Volta < Turing
アーキテクチャはGPUのシリーズ(RTX 2xxx、GTX 1xxx、GTX 9xx、など)が変わるのにあわせて名称や特性が変わる。
それぞれ、32bit整数演算が得意だったり、単精度浮動小数点の演算が得意だったり、スケジューリングが違う。 - CUDAコア数
処理性能に影響する。コア数が多いほど当然並列度が上がるので処理も早い
しかし、コア数は減ったが全体の性能は上がったというアーキテクチャもあるらしい。。。 - 定格クロック
クロックが早いほど処理速度が早くなる。逐次的な処理ほど影響を受けやすい
迷ったら新しくて大きな番号のもの
おすすめのGPU
学習のための機械学習を行う場合:GTX 1660、RTX 2060、RTX 2070など
本格的な機械学習を行う場合:RTX 2080Ti、RTX 3060Ti、RTX 3090など
参考記事
cudaとは
cudaとはなんだろう?wikipediaによると
CUDA(Compute Unified Device Architecture:クーダ)とは、NVIDIAが開発・提供している、GPU向けの汎用並列コンピューティングプラットフォーム(並列コンピューティングアーキテクチャ)およびプログラミングモデルである
要はただハードウェアをつなげても命令を送るプラットフォームがなければGPUはただの文鎮と化す、その命令を送るためのプラットフォームがCUDA
また、機械学習用のライブラリで用いるにはcuDNNというCUDAを用いた機械学習用のライブラリが必要
AMDのGPUでは動かないらしい
CUDAの欠点
- 逐次的な処理は高速化しずらい
- コーディングの仕方による速度さが大きい
- 可読性が低い
- cpuよりもコーディングが大変
- 実際どこまで早くなるかわからない
参考記事
CUDAの仕組み
↓すごくわかりやすい
用語 | 意味 |
---|---|
ホスト | 呼び出し側 |
デバイス | GPU側 |
カーネル | デバイス側で実行される処理。ホストのソースコード上で定義される |
スレッド | カーネルを実行する最小単位のプロセスのこと |
ブロック | スレッドの束 |
グリッド | ブロックの束 |
ストリーム |