深層学習の発展を支えているGPU。普段は、バックエンドで何気なく利用していますが、実は個人のパソコンにもGPUを挿して、設定をする事で数値計算にも利用する事ができるのです。しかも、通常の計算の100倍の速度を出すことも出来るため、ちょっとしたスーパーコンピューターを自宅に構築する事も可能です。
また、最近はAWS(Amazon Web Service)などのパブリッククラウドを利用する事でGPUが搭載されたサーバーを手軽にレンタルすることもできます。自宅にデスクトップのパソコンが無いという方でもGPUを利用する事はできます。これからますます、GPUに触れる機会は増えるでしょう。しかし、どのGPUがいいのか分からないという方も多いのではないでしょうか?
そこで、この記事ではGPUとはそもそも何なのか、またGPUを選ぶ上で重要な性能の見方について紹介します。
GPUとは
GPUとはGPU(Graphics Processing Unit)の略で元々はその名の通り3次元 CG 描画を行うグラフィックスボードのプロセッサーとして開発されていました。もちろん、今でもゲームのグラフィック用途でGPUを買われる方も多いです。
その後、GPUがCPUみたいな計算に使えるぞという事が分かりました。、しかも、その演算能力がCPUよりもかなり高いという事が分かり、一般的な計算(数値計算、画像処理や機械学習など)に応用されています。こういう一般的な用途でGPUを使う為の技術の事をGPGPU(General Purpose GPU)と言います。
どれくらい速いのか?
それではGPUはCPUと比べてどれくらい速いのでしょうか?ここに1つの実験の結果を示します。
この実験では配列のサイズを変えながら、全ての配列要素に1を足すという単純な演算をした時の、実行時間[単位:ms]を比較したものです。(*実行はGoogle Colab上で行っておりTesla K80を使用)
CPU側ではNumpyによるベクトル演算を行っていますので、1コアで実行する中では相当速い部類です。実際、Numpyアレーの要素数が106までではGPUとCPUの実行速度にほとんど差はありません。しかし、計算が大規模(要素数107 以上)になると20~100倍以上程度速くなっていますね。つまり、大規模な計算や計算負荷のとても大きい計算ではGPUを利用する事で非常に大きな高速化を見込めるわけです。そんなGPUですが、どういう基準で選べばよいのでしょうか?
GPUを選ぶ際に見るポイント
CUDAコア数/FLOPS
CUDAコア数やFLOPSはGPUの演算速度にそのまま直結する指標です。CUDAコア数は1つのGPUに搭載されているコア(*計算をする部分)の数の事です。当然、CUDAコアの数が多ければ計算速度は速くなります。例えば、GeForce RTX2080 TiというGPUの場合、4352CUDAコアを搭載しています。
そして、このCUDAコアによって並列計算を行った場合の演算速度を表すのがFLOPS(FLoating point number Operations Per Second)です。日本語では単精度浮動小数点数演算性能という長い名前が付いています。簡単に言うと、1秒間に何回計算できますか?という事ですね。GPUの場合、単位はT(テラ)(*テラは1012)で表され、12[TFLOPS]のような形で書かれます。GeForce RTX2080 Tiの場合, 13.4[TFLOPS]ですので、1秒当たり13.4兆回計算ができるということですね。CPUの場合、このFLOPSが4コアなどのマルチコアの場合に0.2 ~ 0.3[TFLOPS]くらいです。この為、CPUよりGPUの方が計算が速いわけですね。
メモリ
CUDAコア/FLOPSと同じくらい重要なのがメモリです。GPUで計算をするにはGPUのメモリに変数を乗せてあげる必要があり、乗り切らない場合、通常のやり方では計算できません。つまり、大規模な計算では死活問題です。GPUのメモリはそんなに多くなく、例えば、GeForce RTX2080 Tiでは11[GB]程度です。この為、多少FLOPSを犠牲にしてもメモリが多い方がGPUを選ぶ上では重要だと思います。
個人で買う事は無いと思いますが、私のおススメはQuadro RTX 8000です。日本だと約80万円、アメリカのAmazonでも55万円くらいします。しかし、メモリは48GBとその辺のGPUの中ではメモリ量がダントツです。しかも、FLOPSも16.3[FLOPS]ありますので、文句無しです。会社の固定資産枠で購入できるなら是非、購入をお勧めします。私は会社の計算用PCにこれが挿さっています
ただ、何度も言いますが、個人では80万円はなかなか払えない金額かと思いますので、RTX2080Ti(10万円前後)をおススメします。
消費電力
意外と侮れないのが消費電力(TDPとも言います)です。最近のGPUはほとんどが250[W]程度と結構な電力を食います。この為、自宅でガリガリGPUを使って計算し続けると電気代も無視できません。1GPUであれば、デスクトップPCで動かすのに問題になることは少ないですが、2GPU以上になると500[W]になるので、電力が小さなPCでは電力が足りなくなる可能性があります。気を付けましょう。
物理的大きさ
AWSなどのクラウドサーバーを借りる場合はあまり関係の無い事ですが、ご自宅のデスクトップPCにGPUを取り付ける場合、無視できないのがこの物理的な大きさです。デスクトップPCによってはケースの中の物理的なスペースにほとんど余裕が無い場合もあります。一方で、最近のGPUはファンが3つ付いて、物理的なサイズはどんどん大きくなっています。この為、買ったがPCケースの蓋が閉まらない!?という事態もあります(実際、DELLのデスクトップの時に、ありました。)。これでは目も当てられませんので、もし余裕が無い場合、同じGPUでもスリムなものを選ぶようにしましょう。
番外編1:外付けGPU
デスクトップPCを持っていなくても最近であれば、ノートPCに外付けGPUを利用する事も出来ます。私が実際に使った事のある外付けGPUは次のGPUです。
*一点、注意点 最近のMacは外付けGPUに対応していない為、購入するのであれば、WindowsでUSB-Cポートが付いているものを購入しましょう。
外付けGPUを使う事でノートPCでもGPUを利用した並列計算を行うことが出来ます。また、電力は外付けGPUのケースから供給する為、電力が足りないという問題もありません。通常、外付けGPUはケースのみの為、中に挿すGPUは別途用意する必要があります。
番外編2: AWSやGoogle ColabにはどんなGPUが搭載されている?
AWSやGoogle ColabなどパブリッククラウドにもGPUサーバーはあります。AWSではp2インスタンスやp3インスタンスと呼ばれるサーバーを借りればGPUを利用できます。p2はTesla K80, p3はTesla V100という最近のGPUを搭載しています(*余談ですが、Tesla V100は買うと130万円近くします)。
Google ColabはなんとGPUを無料で利用することが出来ます(連続使用時間は12時間まで)。Google ColabではTesla K80かTesla T4のどちらかが利用できます。Google Colabの使い方については別途記事を作成したいと思います。
最新記事 by t-tetsuya (全て見る)
- 【GPyOpt】Python x ベイズ最適化の基本をマスターしよう - 2020年12月29日
- Python print関数の基本の使い方 - 2020年12月10日
- Python関数の書き方の基本 - 2020年12月1日
・GPUの性能の見方
について理解することができます。