丢人!Caffe2推出才几天,就被TensorFlow吊打了

丢人!Caffe2推出才几天,就被TensorFlow吊打了

两周前,Facebook大张旗鼓地开源了Caffe2深度学习框架,它在英伟达DGX-1平台上的高性能表现极为亮眼。

Google立刻动手反制,没几天就给出新版的TensorFlow测试数据,在性能上开始压制Caffe2。

由此看来,要在人工智能上赶超Google,Facebook仅仅靠模仿还是不够的,而Google也绝不甘心坐以待毙。

管怎么说,留给Facebook的时间不多了。

丢人!Caffe2推出才几天,就被TensorFlow吊打了

我们先来对比一下双方的测试结果:除了VGG16模型测试中的8核数据,其余结果上TensorFlow均处于优势。

以下是Google给出的最新测试

概览

为了给TensorFlow社区提供一个很好的参照点,我们在多个平台上用一系列图像样本做了相关测试。文末的“测试方法”部分,将详细说明这些测试的执行过程,并给出测试所用脚本的链接。

图像分类模型的结果

我们使用ImageNet数据集分别测试过InceptionV3模型(arXiv:1512.00567)、ResNet-50模型(arXiv:1512.03385)、ResNet-152模型(arXiv:1512.03385)、VGG16模型(arXiv:1409.1556)和AlexNet模型。该测试是在谷歌计算引擎(Google Compute Engine)、亚马逊弹性计算云(Amazon Elastic Compute Cloud,下为EC2)和英伟达软件堆栈(NVIDIA®DGX-1™)上进行的。多数测试同时使用了合成数据与实际数据。用合成数据进行测试时,我们通过 tf.Variable 将图片设置成跟ImageNet数据集的期望相同的形状,而后完成测试过程。我们认为,在对平台进行基准测试的过程中,实际数据测量也是非常重要的。底层硬件和框架这两种负载测试是在为实际的训练准备数据。我们从合成数据开始,将磁盘输入/输出(I / O)移除并将其作为变量,同时设置一个基准线。然后使用实际数据来验证TensorFlow输入管道和底层磁盘输入/输出(I / O)是否正在使计算单元达到饱和的状态。

使用英伟达软件堆栈(NVIDIA®DGX-1™)(NVIDIA®DGX-1™(NVIDIA®Tesla®P100))进行训练

丢人!Caffe2推出才几天,就被TensorFlow吊打了

(图片翻译:训练:用NVIDIA® DGX-1™合成数据(1、2、4和8核图形处理器))

详细信息和附加结果请阅读后面的NVIDIA®DGX-1™(NVIDIA®Tesla®P100)“详细讲解”部分。

使用NVIDIA®Tesla®K80进行训练

丢人!Caffe2推出才几天,就被TensorFlow吊打了

(图片翻译:训练:用NVIDIA®Tesla®K80合成数据(1、2、4和8核图形处理器(GPUs)))

详细信息和附加结果请阅读后面的谷歌计算引擎(NVIDIA®Tesla®K80)和亚马逊 EC2(NVIDIA®Tesla®K80)“详细讲解”部分。

使用NVIDIA®Tesla®K80进行分布式训练

丢人!Caffe2推出才几天,就被TensorFlow吊打了

(图片翻译:训练:用NVIDIA®Tesla®K80合成数据(1、8、16、32、64核图形处理器(GPUs)))

详细信息附加结果请阅读后面的亚马逊 EC2分布式(NVIDIA®Tesla®K80)“详细讲解”部分。

合成与实际数据训练的比较

NVIDIA® Tesla® P100

丢人!Caffe2推出才几天,就被TensorFlow吊打了

(图片翻译:训练:InceptionV3模型(Tesla® P100);训练:ResNet-50模型(Tesla® P100))

NVIDIA® Tesla® K80

丢人!Caffe2推出才几天,就被TensorFlow吊打了

(图片翻译:训练:InceptionV3模型(Tesla® K80);训练:ResNet-50模型(Tesla® K80))

NVIDIA®DGX-1™(NVIDIA®Tesla®P100)的详细信息

环境

  • 实例类型: NVIDIA® DGX-1™

  • GPU: 8x NVIDIA® Tesla® P100

  • 操作系统:Ubuntu 16.04 LTS,通过Docker引擎进行测试运行

  • CUDA / cuDNN: 8.0/ 5.1

  • TensorFlow GitHub hash: b1e174e

  • Benchmark GitHub hash: 9165a70

  • 创建命令:

    bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package

  • 磁盘:本地固态硬盘

  • 数据集:ImageNet数据集

  • 测试日期:2017年5月

下表列出了每种型号所使用的批处理大小和优化程序。除了表中列出的批处理大小(Batch size)外,在批处理大小为32的情况下我们还对InceptionV3模型、ResNet-50模型、ResNet-152模型以及VGG16模型分别进行了测试,其结果详见本节的“其他结果”部分。

丢人!Caffe2推出才几天,就被TensorFlow吊打了

每个模型使用的配置。

丢人!Caffe2推出才几天,就被TensorFlow吊打了

结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

(图片翻译:训练:用NVIDIA® DGX-1™合成数据(1、8、16、32、64核图形处理器(GPUs))

丢人!Caffe2推出才几天,就被TensorFlow吊打了

训练合成数据的结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

训练实际数据的结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

上述图表不包括在 8 GPU 平台上用实际数据训练AlexNet模型的结果,因为这些数据会塞满输入管道。

其他结果

下面都是批处理大小为32的训练结果。

训练合成数据的结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

训练实际数据的结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

谷歌计算引擎(Google Compute Engine)(NVIDIA®Tesla®K80)详细信息

环境

  • 实例类型: n1-standard-32-k80x8

  • GPU: 8x NVIDIA® Tesla® K80

  • 操作系统:Ubuntu 16.04 LTS

  • CUDA / cuDNN: 8.0/ 5.1

  • TensorFlow GitHub hash: b1e174e

  • Benchmark GitHub hash: 9165a70

  • 创建命令:bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package

  • 磁盘:1.7 TB共享式SSD永久磁盘(800 MB / s)

  • 数据集:ImageNet数据集

  • 测试时间:2017年5月

下表列出了每种型号所使用的批处理大小和优化程序。除了表中列出的批处理大小外,在批处理大小为32的情况下我们还对InceptionV3模型和ResNet-50模型分别进行了测试,其结果详见本节的“其他结果”部分。

丢人!Caffe2推出才几天,就被TensorFlow吊打了

用于每个模型的配置是variable_update(变量更新)等于parameter_server(参数服务器)以及local_parameter_device(本地参数设备)等于cpu(中央处理器)。

结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

训练合成数据的结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

训练实际数据的结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

其他结果

下面都是批量大小为32的训练结果。

训练合成数据的结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

训练实际数据的结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

关于亚马逊 EC2(NVIDIA®Tesla®K80)的详细信息

环境

  • 实例类型: p2.8xlarge

  • GPU: 8x NVIDIA® Tesla® K80

  • 操作系统:Ubuntu 16.04 LTS

  • CUDA / cuDNN: 8.0/ 5.1

  • TensorFlow GitHub hash: b1e174e

  • Benchmark GitHub hash: 9165a70

  • 创建命令: bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package

  • 磁盘:1TB Amazon EFS(亚马逊加密文件系统)(100M/s 加速运转12小时,50M/s 恒定速度)

  • 数据集:ImageNet数据集

  • 测试时间:2017年5月

下表列出了每种型号所使用的批处理大小和优化程序。除了表中列出的批量大小外,在批处理大小为32的情况下我们还对InceptionV3模型和ResNet-50模型分别进行了测试,其结果见本节的“其他结果”部分。

丢人!Caffe2推出才几天,就被TensorFlow吊打了

每个模型使用的配置

丢人!Caffe2推出才几天,就被TensorFlow吊打了

为了简化服务器设置,亚马逊 EC2(p2.8xlarge)在运行工作服务器的同时还运行了参数服务器。运行工作服务器时均使用了相同数量的参数服务器和工作服务器,但是以下几种情况例外:

  • InceptionV3模型: 8个实例/ 6个参数服务器

  • ResNet-50模型:(批量大小为32)8个实例/ 4个参数服务器

  • ResNet-152模型: 8个实例/ 4个参数服务器

结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

丢人!Caffe2推出才几天,就被TensorFlow吊打了

训练合成数据的结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

其他结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

训练合成数据的结果

丢人!Caffe2推出才几天,就被TensorFlow吊打了

测试方法

我们是用这里的脚本,来运行平台上的测试并生成上述结果的。其中,高性能模型详细介绍了脚本中运用到的各种技术,同时也详细介绍了执行脚本的相关示例。

https://github.com/tensorflow/benchmarks/tree/master/scripts/tf_cnn_benchmarks

https://www.tensorflow.org/performance/performance_models

为了尽可能地创造出可重复的结果,每个测试运行5次,然后将时间加在一起计算其平均值。上述平台的GPU是以默认设置来运行的。对NVIDIA®Tesla®K80而言,这就意味着没有使用GPU加速。对于每个测试,我们先是完成10个预热步骤,然后再对接下来的100个步骤进行平均,取其平均值。

原文链接:https://www.tensorflow.org/performance/benchmarks

➤版权申明:该文章版权归AI100所有,如需转载、摘编、复制等,请后台留言征得同意。若有直接抄袭,AI100将追究其责任。

关于AI100

AI100致力于打造人工智能技术和产业社区。为人工智能开发者提供信息和技术交流的平台;为人工智能创业者提供行业数据及智能应用的商业场景;为行业提供人工智能化的技术商业应用。请快快关注我们吧!

相关推荐