ディープラーニングの学習と推論の処理にはGPUを用いることが相性が良く、最適です。しかしディープラーニングのソフトウェアライブラリも多数あり、ベンチマーク情報も豊富とは言えません。そこで今回は、Tensorflow を利用したベンチマークとして「tf_cnn_benchmarks」を使用し、GPUごとにスコアを出し比較してみました。
GPU別ディープラーニング性能ベンチマーク
ResNet50(FP32)、VGG16(FP32)、inception-v3(FP32)、ResNet50(FP16)の4つについて、それぞれGPU別にベンチマークを計測しました。GPUについては、1枚の場合、対応する場合に2枚を搭載した場合についても計測を行いました。
ベンチマーク時の設定は、別記の無い場合Batch Sizeは32、パラメーターとして「TF_FORCE_GPU_ALLOW_GROWTH」をtrueに設定しました。スコアは誤差を少なくする為に5回計測した平均値を出しています。単位はimage/secとなり、1秒で何枚の画像を学習処理したかを表し、数値が高い程速く処理が出来るという事になります。
使用した各ソフトウェアのバージョンは以下の通りとなります。
ソフトウェア名 | バージョン |
---|---|
CUDA | 10.1 |
cuDNN | 7.6.5.32 |
Python | 3.6.9 |
TensorFlow | 1.15 |
検証に使用したハードウェア構成は記事末尾に記載しておりますので、別途ご確認ください。
ResNet50(FP32)
まずはResNet50(FP32)でベンチマークをとってみました。
GPUの性能向上に合わせてスコアが順当に上がっています。また、GPUを2枚搭載する場合は処理性能が約1.8倍となりました。
一方でCPU はCore i9-10980XEにてベンチマークの計測を行いましたが、Core i9-10980XE よりも安価なGeForce RTX 2080 Tiの足元にも及びませんでした。だからと言ってCPUの性能は軽視して良い訳ではなく、学習前処理等ではCPUの性能も必要となり、ディープラーニングの学習に必要な全体の工程の一部の時間短縮に貢献します。
VGG16(FP32)
続けてVGG16(FP32)についてベンチマークを計測しました。
概ねResNet50(FP32)と同じ傾向でGPUのグレードに応じて処理性能が向上していますが、GPUのグレードによる差がやや増えたことや、2枚搭載した場合でNV Linkを有効にした場合により高いパフォーマンスを発揮するようになっていました。
inception-v3(FP32)
inception-V3(FP32)のベンチマーク結果となります。
他の結果と同様、GPUのグレードによって性能が上がっていきました。
ResNet50(FP16)
最後にResNet50(FP16)で計測してみました。
Core i9-10980XEは計測不能となりました。
特筆すべきは、GeForce RTX 20シリーズでは最初に測定したResNet50のスコアに比べ処理速度が約2倍になる一方、GeForce GTX 1660 Tiは半分以下まで下がっており、Tensorコアの有無による差が表れていると思われます。
最適なGPUの選び方
これらのベンチマーク結果を踏まえ、実際にディープラーニング用の環境を整える場合どういった点を見て選べば良いかポイントを3点にまとめました。
GPUでは世代、グレードが最重要
性能に直結する部分として世代とグレードがあります。
このベンチマークソフトにおいては、スコアの結果に表れている通り、GPUは上位グレードの方が良いスコアが出ています。
今回検証したグラフィックスチップにおいては、GeForce RTX 2080 Tiは「TU102」、GeForce RTX 2080 Super、GeForce RTX 2080、GeForce RTX 2070 Super、GeForce RTX 2070、GeForce RTX 2060 Superは「TU104」、GeForce RTX 2060は「TU106」、GeForce GTX 1660 Tiは「TU116」のGPUのチップを使用しておりこのチップの差によってスコアの差が大きく表れる形となっています。
つまり、GeForce RTX 2060 Superを使用していて、パフォーマンスを上げたいと思ったら、同じ「TU104」チップを使用しているGeForce RTX 2080 Superではなく上位のグレードのチップ「TU102」を使用するGeForce RTX 2080 Tiを選択したほうがパフォーマンスの向上率が高いことになります。
またFP16への最適化状況もFP16環境を必要とするなら押さえておくべき情報となります。
NVIDIAではVolta世代からディープラーニング向けコアのTensorコアが登場しました。AMDもVEGA世代からFP16にネイティブ対応しており、ディープラーニング向けGPUのRADEON INSTINCTもあるなど、各GPUベンダーによるFP16への対応は進んでいますが、最新であれば最適化されているというものではなく、「TU116」のように敢えてディープラーニング向けの機能を絞っているチップも存在します。
今回のベンチマークではResnet50をFP16で計測した際にGeForce RTX 20シリーズのようにディープラーニング用のTensorコアを搭載しているRTX 2060を選択する方が搭載していないGeForce GTX 1660 Tiよりパフォーマンスを発揮する結果となりました。
対応するライブラリでFP16に特化した環境を構築したい場合などでは、大きなポイントになると思います。
マルチGPUの考慮
さらにソフトウェアライブラリが対応している場合に限りますが、パフォーマンスを追求しGPUを2枚使用する、という選択肢も存在します。
GPU1枚の時のスコアを100%とし、どの程度の割合で増えているのかをグラフにした図です。
今回のベンチマーク結果では、VGG16を除き、約1.8倍ほどの性能向上を得ることができています。さらに、NV Linkブリッジを接続した場合、一様にスコアが伸びており、VGG16では向上率が最も高い結果となっています。
性能の向上率が高いため、中堅クラスのGeForce RTX 2060のGPUを2枚搭載する事によって最上位のGPU1枚の性能を上回る事も可能となりました。パフォーマンスを上げたいと思ったら、同じGPUをもう1枚搭載してみるというのもとても有効な選択肢となります。
ソフトウェアライブラリが対応していれば、3枚、4枚と搭載することも可能ですが、これを行うためには、パソコンのマザーボードに拡張スロットの空きがある必要があり、増加したGPUの排熱がしっかり行えるようエアフローの工夫も必要です。当然GPUが増える毎に電源容量も必要となっていき、大雑把な目安として2枚では800~1000W程度、3枚では1200~1500W程度が必要になってきます。
GeForce RTX 2060 SUPER |
GeForce RTX 2060 SUPER×2 |
GeForce RTX 2080 Ti |
|
---|---|---|---|
アイドル時 | 54W | 97W | 47W |
ベンチマーク時 | 244W | 427W | 320W |
参考として、ベンチマーク計測時の消費電力を測定してみました。消費電力の測定にはワットチェッカーを使用し、システム全体の消費電力の計測を行っています。
スコアでGeForce RTX 2080 Tiを上回ったGeForce RTX 2060 Superの2枚構成ですが、消費電力でも約100W上回ってしまいました。
VRAM容量も大事
次点としてVRAM容量が重要になります。VRAMはGPU専用のメモリとなり、VRAMが不足するとそもそも計算の実行が出来なくなってしまいます。
学習規模によって必要な容量は変わるので、どの程度あれば良いとも言えないのですが、今回使用したベンチマークではVRAMに11GBを持つGeForce RTX 2080 Ti以外、パラメーターを設定しないと、VRAMがマッピング出来ずにエラーで止まってしまいました。
FP16でベンチマークを実行した場合には、VRAM使用量を節約出来るのでVRAM容量が8GのGPUでもパラメーターの設定無しで実行することが出来ました。
VRAMもGPUを2枚使用する事で1枚の時に比べ単純に2倍の容量を使用する事が出来るというメリットも存在します。どの程度VRAMを使用するか分かっていれば良いのですが、初めてフレームワークを動かしてみる場合など慣れない環境を試す場合でも余計な手間を増やさないように、容量は可能な限り大きいほうが良いようです。
最適なGPU選びのために コストパフォーマンス比較
最後に参考として、上記ResNet50(FP32)のベンチマークスコアを参考価格で割った、コストパフォーマンス一覧を作ってみました。
スコア1点につき何円かかるかという表ですので、数値の低い方がコストパフォーマンスが高いという事になります。
価格は2020年2月現在のパソコン工房Webサイトに掲載されている最安値を参考にしました。
Quadro P2200 |
GeForce RTX 2080 Ti×2 (NVLink) |
GeForce RTX 2080 Ti×2 (Non SLI) |
GeForce RTX 2080 Ti |
GeForce RTX 2080 SUPER |
GeForce RTX 2080 |
GeForce RTX 2070 SUPER |
GeForce RTX 2070 SUPER×2 (Non SLI) |
GeForce GTX 1660 Ti |
GeForce RTX 2060 SUPER |
GeForce RTX 2060 |
GeForce RTX 2070 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
スコア | 75 | 516 | 506 | 272 | 211 | 206 | 195 | 339 | 119 | 176 | 144 | 183 |
参考販売価格(税込) | 67,100円 | 275,000円 | 264,000円 | 132,000円 | 83,600円 | 77,000円 | 56,100円 | 90,200円 | 30,800円 | 45,100円 | 36,300円 | 46,200円 |
価格/スコア | 817 | 484 | 474 | 441 | 360 | 340 | 262 | 242 | 235 | 233 | 230 | 229 |
今回計測した中ではGeForce RTX 2070が最もコストパフォーマンスに優れるGPUとなりました。ついでGeForce RTX 2060となりました。いずれも発売開始してから時間がたっており、価格のこなれた製品となるためでしょう。
また、GeForce RTX 2060 Superの2枚構成はGeForce RTX 2080 Tiを超えるコストパフォーマンスを確認できました。
これらの結果を参考に最適なGPUを選びの一助になれば幸いです。
CPU | Core i9-10980XE (3.0-4.8GHz/18コア・36スレッド/キャッシュ24.75MB/TDP165W) |
---|---|
マザーボード | ASUS PRIME X299-AII-SI (X299チップセット) |
メインメモリ | DDR4-2666 16GB (8GB x2) |
ビデオカード | MSI製 GeForce RTX 2080 Ti VENTUS 11G (11GB GDDR6) |
ZOTAC製 GeForce RTX 2080 Super (8GB GDDR6) | |
MSI製 GeForce RTX 2080 VENTUS 8G (8GB GDDR6) | |
GALAX製 GeForce RTX 2070 Super (8GB GDDR6) | |
MSI製 GeForce RTX 2070 AERO 8G (8GB GDDR6) | |
ZOTAC製 GeForce RTX 2060 Super (8GB GDDR6) | |
ZOTAC製 GeForce RTX 2060 (6GB GDDR6) | |
ZOTAC製 GeForce GTX 1660 Ti (6GB GDDR6) | |
ELSA製 Quadro P2200 (5GB GDDR5X) | |
NVLinkブリッジ | ASUS ROG-NVLINK-3 |
ストレージ | Kingstone RBU-SC152DS37/240GH (Kingston SSDNow UV400 SATA 240GB) |
電源 | Seasonic SSR-1000PD (80PLUS PLATINUM、1000W) |
OS | Ubuntu 18.04.3 |
ビデオドライバ | Linux X64 (AMD64/EM64T) DISPLAY DRIVER 440.33.01 |
ロボットアニメ大好きな店頭サポート出身のビジネス、Linux系担当ECスタッフ。空きスロットは意味なく埋めたいタイプ。お客様に寄り添ったパソコン作りをモットーに今日も頑張ります!