tensorflow benchmark 基准测试
精选
原创
©著作权归作者所有:来自51CTO博客作者qinshixu的原创作品,请联系作者获取转载授权,否则将追究法律责任
一.模型介绍
1.resnet 深度残差网络,主要模型有resnet18,resnet34,resnet50,resnet101,resnet152,
ResNet可以提供18、34、50、101、152甚至更多层的网络,同时获得更好的精度,ResNet已经被广泛运用于各种特征提取应用中,
当深度学习网络层数越深时,理论上表达能力会更强,但是CNN网络达到一定的深度后,再加深,分类性能不会提高,而是会导致网络收敛更缓慢,
准确率也随着降低,即使把数据集增大,解决过拟合的问题,分类性能和准确度也不会提高
2.VGG 是由 Simonyan 和 Zisserman 在论文 “Very Deep Convolutional Networks for Large Scale Image Recognition” 中提出卷积神经网络模型,其名称来源于作者所在的牛津大学视觉几何组 (Visual Geometry Group) 的缩写。VGG 中根据卷积核大小和卷积层数目的不同,可分为 A、A-LRN、B、C、D、E 共6个配置 (ConvNet Configuration),其中以 D 和 E 两种配置较为常用,分别称为 VGG16 和 VGG19
3.GoogleNet GoogLeNet是由谷歌公司研究出来的深度学习网络结构,其最大的创新就是提出了Inception模块,
所以2014年提出的GoogLeNet网络又称为Inception V1,后来谷歌公司又不断对其进行改进,先后又提出了V2、V3以及V4的改进版。
Inception V1凭借其独有的Inception结构在控制参数量的同时又扩展了网络的深度,Inception V1网络的深度有22层,
但是参数量却只有500万个,大大少于VGGNet的1亿3000万和AlexNet的6000万的参数量
4.AlexNet 今天人们不会在采用或借鉴 AlexNet 来设计网络来,不过无疑是 AlexNet 出现,在次掀起神经网络的热度。
AlexNet 是 2012年 ImageNet竞赛冠军获得者 Hinton 和他的学生 Alex Krizhevsky 设计的。
5.Inception v3 主要提出了分解卷积,把大卷积因式分解成小卷积和非对称卷积,通过大量使用 Inception 模块的降维和并行结构实现的,
允许减轻结构变化对附近组件的影响
二. 混合精度
深度神经网络(DNN)在许多领域都取得了突破,包括图像处理和理解,语言建模,语言翻译,语音处理,游戏策略以及许多其他领域。 为了获得这些卓越结果,DNN的复杂性一直在增加,这反过来又增加了训练这些网络所需的计算资源。
混合精度训练通过使用低精度算术降低了所需的资源,具有以下好处。
减少所需的内存量。 半精度浮点格式(FP16)使用16位,而单精度(FP32)使用32位。 降低所需的内存可以训练更大的模型或训练时使用更大的batch size。
缩短训练或推理时间。计算的次数或者数据存储的存储十分影响算法的执行时间。半精度使用单精度的一半内存访问,从而降低了在存储层方面所花费的时间。
与单精度相比,NVIDIA GPU的半精度算术吞吐量最多提高了8倍,从而加快了数学受限层的速度
三.测试环境
使用 Tensorflow Benchmark 进行基准测试
镜像: nvcr.io/nvidia/tensorflow:20.10-tf2-py3
CUDA: 1.11(rtx-3090最低cuda版本为1.11)
测试代码:https://github.com/tensorflow/benchmarks
框架:tensorflow
显卡:RTX-3090(腾讯黑石服务器RTX-3090)
启动命令:
GPU:python benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py \
--num_gpus=1 --batch_size=128 --model=vgg16
CPU:python benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py \
--device=cpu --model=googlenet --data_format=NHWC --batch_size=32
# --batch_size 和 --model 可根据具体场景修改
#
四.测试数据
rtx-3090 | 模型名称 | 数据格式 | 32 | 64 | 128 | 256 | 512 |
1 卡 | resnet50 | fp32 | 429.86 images/s | 493.24 | 528.54 | 540.37 |
|
| fp16 |
|
|
| 1269.15 | 1283.07 |
VGG16 | fp32 | 251.35 | 318.07 | 315.83 | 322.55 |
|
GoogleNet | fp32 | 985.36 | 1136.53 | 1275.25 | 1359.34 |
|
AlexNet | fp32 | 3171.42 | 4387.80 | 5047.62 | 5229.61 |
|
Inception v3 | fp32 | 284.64 | 323.61 | 340.32 | OOM |
|
2卡 | resnet50 | fp32 | 665.09 | 861.22 | 999.67 | 1041.70 |
|
VGG16 | fp32 | 301.28 | 414.86 | 543.69 | 531.09 |
|
Inception v3 | fp32 | 500.12 | 591.12 | 647.64 | OOM |
|
resnet50 | fp16 |
|
|
| 2369.56 | 2502.95 |
|
|
|
|
|
|
|
|
CPU | 模型名称 | 32 | 64 | 128 | 256 |
90(核) | resnet50 | 17.74 | 16.69 | 15.14 | 14.83 |
VGG16 | 7.08 | 7.49 | 7.50 | 7.3 |
GoogleNet | 66.30 | 61.50 | 54.56 | 50.36 |
AlexNet | 119.05 | 142.02 | 160.15 | 164.54 |
Inception v3 | 14.45 | 13.86 | 13.11 | 12.3 |
|
|
|
|
|
|