性能検証
NVIDIA GPUをMIGで分割するとパフォーマンスはどう変わる? 性能試験やってみた!
2021.06.08

NTTPC GPUエンジニア

「NVIDIA マルチインスタンス GPU (MIG)」 機能を適用すると、1枚のGPUカードを複数のインスタンスに分割することができるようになります。分割後のインスタンスそれぞれにGPUメモリを割り当てることができるため、例えば複数の人が異なるAI学習モデルを実行する場合にも、MIGで分割することで、インスタンスを用途ごとに割り当てて活用することができます。
MIGの機能やインスタンスの分割方法など、詳細については過去記事もご覧ください。
とても便利な機能ですが、1枚のGPUカードをMIGで分割すると性能はどのように変わるのでしょうか?分割数を増やせば増やすほど、1インスタンスあたりのGPUメモリが減りますが、AIトレーニングをスムーズに実行するためには何GBくらい必要になるのでしょうか? 気になりますよね。
今回は、当社Innovation LABパートナーである株式会社ハイレゾさまのIaaS型GPUクラウド「GPU SOROBAN」環境をお借りして、NVIDIA A100 Tensor Core GPUをMIGで分割した場合の性能を検証してみました!
検証環境
今回はGPU SOROBAN環境のほか、比較対象としてオンプレミスサーバを2台準備しました。スペックは表1の通りです。
表1
OS | NVIDIADriver | CUDA | TensorFlow | Python | Ngcコンテナイメージ | |
---|---|---|---|---|---|---|
Supermicroサーバ (40GB A100搭載) |
Ubuntu18.04.5 | 455.32.00 | 11.1.0 | 2.3.1 | 3.6.9 | nvcr.io/nvidia/tensorflow:20.10-tf2-py3 |
NVIDIA DGX™ A100 (40GB A100搭載) |
Ubuntu18.04.1 | 450.51.06 | 11.0.3 | 2.2.0 | 3.6.9 | nvcr.io/nvidia/tensorflow:20.08-tf2-py3 |
MIG | Ubuntu18.04.5 | 455.23.05 | 11.0.221 | 2.4.1 | 3.6.12 |
また、ベンチマークソフトは次のWebサイトで公開されているものを使用しました。過去に当サイトのコラムで利用したベンチマークソフトと同じものです。
https://github.com/tensorflow/benchmarks/tree/master/scripts/tf_cnn_benchmarks
参考:過去のベンチマーク結果
RTX 2080tiの性能ベンチマーク
MIGでインスタンスを分割する際は、設定によって1インスタンスあたりのメモリ容量を選択することが可能です。今回は次の4パターンに分割した場合を例にとって検証しました。
- 40GB
- 20GB
- 10GB
- 5GB
検証結果
それではさっそく検証結果を見ていきましょう。図1~2はresnet50とresnet152をバッチサイズ32・64で実行したスコアです。残念ながら、5GBモデルと10GBモデルはメモリ不足ですべてのベンチマークを回すことができませんでした。
それぞれの結果によってばらつきがあるものの、例えばresnet50 ( 32 ) の40GB ( グレー ) と20GB ( 黄 ) のグラフにご注目ください。赤枠で示した箇所です。
40GBを100%とすると、20GBは64%程度の性能になっていることがわかります。メモリ容量が1/2になっても、性能は必ずしも1/2になるわけではないようです。

図1 resnet50 MIGベンチマーク

図2 resnet152 MIGベンチマーク
他のベンチマークモデルの実行結果も見ていきます。図3~7が各モデルの実行結果です。
※5GB、10GBはメモリ不足で実行できなかったため空欄にしています。
これまで見てきた内容と同じく、MIG分割しない場合(=メモリ40GB)を100%とすると、20GBは平均64%程度の性能になっていることがわかります。また、20GB⇒10GBは平均64%、10GB⇒5GBは平均60%程度の減少率となっています。

図3 inception3 MIGベンチマーク

図4 vgg16 MIGベンチマーク

図5 trivial MIGベンチマーク

図6 alexnet MIGベンチマーク
また、MIGでメモリを40GBに分割した場合と、オンプレミスサーバであるDGX A100 ( 40GB GPU搭載 ) の差分も確認しましょう。
図7~8の通り、メモリはどちらも40GBであるにもかかわらず、MIGで分割したインスタンスは少し性能が落ちる結果となりました。

図7 resnet50 DGX A100との比較

図8 resnet152 DGX A100との比較
次に、resnet以外のベンチマークソフトでも
オレンジ:MIGでメモリを40GBに分割
グレー:DGX A100 ( 40GB GPU搭載 )
の差分も確認しておきたいと思います。
ほとんど差がないものや、DGX A100のほうがかなり良い結果が出ているものなどばらつきがありますが、平均するとMIGで40GBメモリに分割したインスタンスは、DGX A100の79%程度の性能を発揮しました。

図9 vgg16 DGX A100との比較

図10 inception3 DGX A100との比較

図11 alexnet DGX A100との比較

図12 trivial DGX A100との比較
まとめ
6種類のベンチマークソフトを利用し、MIGで分割したインスタンスの性能を検証しました。結果として、複数のインスタンスに分割した場合でも、大きなパフォーマンスの低下なく利用することができました。ただし、GPUメモリが5GB以下になると複数のベンチマークソフトがメモリ不足によるエラーを吐くようになったため、使われる用途や要求動作性能にもよりますが、10GB以上に設定しておくのが良いでしょう。
また、DGX A100 ( 40GB GPU搭載モデル ) とメモリ40GBで分割したMIGを比較すると20%ほどの性能差がありました。これはMIG処理時にボトルネックがあるのではないかと推測しています。さらに検証を深めたいと考えています。
本コラムがMIGの利用を迷われている方の参考になればと思います。
NVIDIA製品のご導入・検証は、NVIDIA Elite Partnerの当社へぜひお問い合わせください。