Open7

[草稿]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が基本的に割り当てられるらしい。

参考資料

-M:CPPブログ

簡単な性能表

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

https://ja.wikipedia.org/wiki/NVIDIA_Tesla

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の仕組み
↓すごくわかりやすい

https://tech-blog.optim.co.jp/entry/2019/08/15/163000
用語 意味
ホスト 呼び出し側
デバイス GPU側
カーネル デバイス側で実行される処理。ホストのソースコード上で定義される
スレッド カーネルを実行する最小単位のプロセスのこと
ブロック スレッドの束
グリッド ブロックの束
ストリーム

GPUについて

GPUの基礎知識

性能の見方

研究室で使えるGPU

CUDAについて

CUDAの基礎知識

ログインするとコメントできます