前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >丢人!Caffe2推出才几天,就被谷歌TensorFlow吊打了

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

作者头像
AI科技大本营
发布2018-04-27 12:44:56
1.2K0
发布2018-04-27 12:44:56
举报

两周前,Facebook大张旗鼓地开源了Caffe2深度学习框架,它在英伟达DGX-1平台上的高性能表现极为亮眼。 Google立刻动手反制,没几天就给出新版的TensorFlow测试数据,在性能上开始压制Caffe2。 由此看来,要在人工智能上赶超Google,Facebook仅仅靠模仿还是不够的,而Google也绝不甘心坐以待毙。

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

我们先来对比一下双方的测试结果:除了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))进行训练

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

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

使用NVIDIA®Tesla®K80进行训练

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

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

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

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

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

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

NVIDIA® Tesla® P100

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

NVIDIA® Tesla® K80

(图片翻译:训练: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模型分别进行了测试,其结果详见本节的“其他结果”部分。

每个模型使用的配置。

结果

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

训练合成数据的结果

训练实际数据的结果

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

其他结果

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

训练合成数据的结果

训练实际数据的结果

谷歌计算引擎(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模型分别进行了测试,其结果详见本节的“其他结果”部分。

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

结果

训练合成数据的结果

训练实际数据的结果

其他结果

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

训练合成数据的结果

训练实际数据的结果

关于亚马逊 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模型分别进行了测试,其结果见本节的“其他结果”部分。

每个模型使用的配置

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

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

结果

训练合成数据的结果

其他结果

训练合成数据的结果

测试方法

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

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将追究其责任。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档