GeForceでは最強のRTX 3090と、NVIDIA RTX A6000とは価格差はかなりありますが(2021年7月12日現在、¥329,220 vs ¥589,850, お値引前の消費税抜き当サイト価格)、性能差はどの程度なのか、8GPU並列までの性能を、tf_cnn_benchmarksを使って比較してみました。
modelは、resnet50, inception3, vgg16, nasnet, resnet152, inception4です。
fp16とfp32の学習速度を計測しました。
rtx3090のbatch sizeはmodel毎に、images/secが最大になるものを選びました。
a6000のbatch sizeはrtx3090と同じsizeと、その2倍、4倍などimages/secが向上したものを掲載しており、括弧内はrtx3090の何倍になっているかを示しています。括弧内の数字が1より大きい程、a6000が速いことを示します。
結論から言いますと、vgg16の8gpuの他は、a6000はrtx3090とそれほど変わらない結果になりました。
tf_cnn_benchmarksと似たような学習が目的で、resnet50, inception3, nasnet, resnet152, inception4に近いネットワークを使うのでしたら、rtx3090は非常にコストパフォーマンスが高いと言えるのではないでしょうか。
使用したハードウェアは HPCDIY-ERMGPU8R4S
CPU: AMD EPYC Rome 7352 DP/UP 24C/48T 2.3G 128M 155W
メモリ: 32GB x 16 = 512GB
SSD: Samsung PM983 7.68TB NVMePCIe3x4 V4TLC 2.5"7mm(1.3 DWPD) x 1
になります。
使用したソフトウェアは、tf_cnn_benchmarks、使用したtensorflowは、nvcr.io/nvidia/tensorflow:20.12-tf1-py3 になります。
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp16 |
resnet50 |
512 |
1205.02 |
2371.21 |
4635.48 |
8756.00 |
a6000 |
fp16 |
resnet50 |
512 |
1242.82(1.031) |
2438.71(1.028) |
4793.78(1.034) |
9425.05(1.076) |
a6000 |
fp16 |
resnet50 |
1024 |
1253.40(1.040) |
2508.13(1.058) |
4944.17(1.067) |
9686.33(1.106) |
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp16 |
inception3 |
256 |
806.46 |
1573.15 |
2979.08 |
5598.28 |
a6000 |
fp16 |
inception3 |
256 |
911.90(1.131) |
1799.25(1.144) |
3465.63(1.163) |
6522.25(1.165) |
a6000 |
fp16 |
inception3 |
512 |
899.23(1.115) |
1758.40(1.118) |
3477.81(1.167) |
6849.92(1.224) |
a6000 |
fp16 |
inception3 |
1024 |
858.57(1.065) |
1648.26(1.048) |
3249.41(1.091) |
6652.44(1.188) |
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp16 |
vgg16 |
512 |
440.25 |
838.75 |
1356.53 |
2171.86 |
a6000 |
fp16 |
vgg16 |
512 |
540.55(1.228) |
1053.56(1.256) |
2040.88(1.504) |
3926.31(1.808) |
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp16 |
nasnet |
256 |
442.83 |
833.64 |
1576.29 |
2943.63 |
a6000 |
fp16 |
nasnet |
256 |
411.98(0.930) |
788.20(0.945) |
1531.37(0.972) |
2822.33(0.959) |
a6000 |
fp16 |
nasnet |
512 |
409.85(0.926) |
761.09(0.913) |
1582.06(1.004) |
3068.16(1.042) |
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp16 |
resnet152 |
256 |
486.5 |
943.83 |
1741.87 |
3157.88 |
a6000 |
fp16 |
resnet152 |
256 |
543.78(1.118) |
1054.73(1.117) |
2035.65(1.169) |
3868.09(1.225) |
a6000 |
fp16 |
resnet152 |
512 |
559.22(1.149) |
1099.23(1.165) |
2052.58(1.178) |
4169.76(1.320) |
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp16 |
inception4 |
256 |
399.16 |
786.27 |
1524.64 |
2975.4 |
a6000 |
fp16 |
inception4 |
256 |
469.59(1.176) |
883.94(1.124) |
1776.91(1.165) |
3393.76(1.141) |
a6000 |
fp16 |
inception4 |
512 |
473.03(1.185) |
930.52(1.183) |
1844.26(1.210) |
3602.49(1.211) |
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp32 |
resnet50 |
256 |
549.28 |
1078.3 |
2095.68 |
3973.04 |
a6000 |
fp32 |
resnet50 |
256 |
520.85(0.948) |
1036.15(0.961) |
2042.98(0.975) |
3980.10(1.002) |
a6000 |
fp32 |
resnet50 |
512 |
517.09(0.941) |
1029.55(0.955) |
2049.59(0.978) |
4043.83(1.018) |
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp32 |
inception3 |
128 |
361.84 |
715.59 |
1362.6 |
2572.47 |
a6000 |
fp32 |
inception3 |
128 |
378.27(1.045) |
742.52(1.038) |
1461.00(1.072) |
2749.77(1.069) |
a6000 |
fp32 |
inception3 |
256 |
390.65(1.080) |
774.44(1.082) |
1503.87(1.104) |
2913.61(1.133) |
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp32 |
vgg16 |
256 |
325.21 |
615.41 |
947.14 |
1330.58 |
a6000 |
fp32 |
vgg16 |
256 |
323.93(0.996) |
638.49(1.038) |
1223.70(1.292) |
2232.47(1.678) |
a6000 |
fp32 |
vgg16 |
512 |
304.09(0.935) |
605.69(0.984) |
1192.28(1.259) |
2290.20(1.721) |
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp32 |
nasnet |
256 |
413.63 |
782.42 |
1493.11 |
2787.66 |
a6000 |
fp32 |
nasnet |
256 |
382.46(0.925) |
740.62(0.947) |
1439.74(0.964) |
2672.53(0.959) |
a6000 |
fp32 |
nasnet |
512 |
384.38(0.929) |
731.87(0.935) |
1477.58(0.990) |
2870.50(1.030) |
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp32 |
resnet152 |
128 |
222.55 |
428.55 |
796.43 |
1447.99 |
a6000 |
fp32 |
resnet152 |
128 |
218.29(0.981) |
430.75(1.005) |
836.49(1.050) |
1574.48(1.087) |
a6000 |
fp32 |
resnet152 |
256 |
227.44(1.022) |
450.95(1.052) |
885.69(1.112) |
1721.80(1.189) |
gpu |
演算精度 |
model |
batch size |
images/sec(1gpu) |
images/sec(2gpu) |
images/sec(4gpu) |
images/sec(8gpu) |
rtx3090 |
fp32 |
inception4 |
128 |
176.45 |
344.66 |
664.47 |
1289.53 |
a6000 |
fp32 |
inception4 |
128 |
186.24(1.055) |
364.38(1.057) |
719.10(1.082) |
1382.76(1.072) |
a6000 |
fp32 |
inception4 |
256 |
186.57(1.057) |
353.50(1.026) |
730.18(1.099) |
1428.19(1.108) |