Roofline model 评估深度学习模型在GPU上运行的性能
本文使用Roofline model方式评估GeForce RTX 2060和TITAN V两款GPU上分别运行AlexNet以及VGGnet的性能。
- GPU性能参数
根据NVDIA官网数据,GeForce RTX 2060 的峰值算力是7.5 TFLOPS,存储器带宽是336GB/s,TITAN V的峰值算力是7.0 TFLOPS,存储器带宽是652.8GB/s。
图1 GPU算力数据(来自NVDIA官网)
图2 GeForce RTX 2060 访存性能(来自NVDIA官网)
图3 TITAN V 访存性能(来自NVDIA官网) - GPU的Roofline模型
图4和图5分别是GeForce RTX 2060和TITAN V的Roofline Model。
对于GeForce RTX 2060,当模型的计算密度小于22.27FLOP/BYTE时,模型的性能受GPU的带宽限制,当模型的计算密度大于22.27FLOP/BYTE时,模型的性能受GPU的峰值浮点运算速度限制。
对于TITAN V,当模型的计算密度小于10.755FLOP/BYTE时,模型的性能受GPU的带宽限制,当模型的计算密度大于10.755FLOP/BYTE时,模型的性能受GPU的峰值浮点运算速度限制。
图4 GeForce RTX 2060的Roofline Model
图5 TITAN V的Roofline - 深度学习模型的选择
a) AlexNet
AlexNet有5个卷积层和3个全连接层
图6 AlexNet网络结构
C1:96×11×11×3 (卷积核个数/宽/高/深度) 34848个
C2:256×5×5×48(卷积核个数/宽/高/深度) 307200个
C3:384×3×3×256(卷积核个数/宽/高/深度) 884736个
C4:384×3×3×192(卷积核个数/宽/高/深度) 663552个
C5:256×3×3×192(卷积核个数/宽/高/深度) 442368个
R1:4096×6×6×256(卷积核个数/宽/高/深度) 37748736个
R2:4096×4096 16777216个
R3:4096×1000 4096000个
共6000万个参数
AlexNet 训练一次总共需要的浮点计算数为720M。访存量为59.968M*4B=
239.872MB计算密度为720M/239.872M = 3FLOP/BYTE
图7 AlexNet模型每层每秒浮点运算次数及参数数量
b) VGG16
图8 VGG16 结构图
图9 VGG16 的参数数量及运算量
VGG16的浮点计算量约为15GFLOPS,总访存量约为600MB,计算密度约为 25FLOP/BYTE - 模型性能分析
a) 在GeForce RTX 2060上运行的性能分析
可以看到VGG16的计算密度已经超过图中两条线的临界点,其性能主要受GPU的峰值浮点运算性能限制,理论上可以达到的运算速度为7.5TFLOP/S。而ALEXNET由于计算密度只有3FLOP/BYTE,故性能瓶颈主要受带宽限制,理论上能达到的最大运算速度为1.008TFLOP/S.
图10 ALEXNET和VGG16在GeForce RTX 2060上运行的性能分析
b) 在 TITAN V上运行的性能分析
可以看到VGG16的计算密度已经超过图中两条线的临界点,其性能主要受GPU的峰值浮点运算性能限制,理论上可以达到的运算速度为7TFLOP/S。而ALEXNET由于计算密度只有3FLOP/BYTE,故性能瓶颈主要受带宽限制,理论上能达到的最大运算速度为1.96TFLOP/S.
图11 ALEXNET和VGG16在TITAN V上运行的性能分析 - 总结
通过对两款GPU和两种深度学习模型进行Roofline分析之后,我们可以得出结论,由于GeForce RTX 2060峰值运算速度更高,所以VGG16在GeForce RTX 2060上可以得到更好的表现,而TITAN V的访存速度更快,所以ALEXNET在TITAN V上的表现更好。