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

两周前,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将追究其责任。

原文发布于微信公众号 - AI科技大本营(rgznai100)

原文发表时间:2017-05-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

使用Python完成你的第一个学习项目

你是否想使用python进行机器学习但却难以入门? 在这篇教程中,你将用Python完成你的第一个机器学习项目。 在以下的教程中,你将学到: 下载并安装P...

78811
来自专栏ATYUN订阅号

Deep Photo Styletransfer的一种纯Tensorflow实现,教你如何转换图片风格

通过深度学习,一秒钟让你的照片高大上,这是康奈尔大学和 Adobe 的工程师合作的一个新项目,通过卷积神经网络把图片进行风格迁移。项目已开源,名字叫「Deep ...

6005
来自专栏大数据智能实战

基于tensorflow 1.0的图像叙事功能测试(model/im2txt)

作为多模态数据处理的经典,图像自动打标签(图像叙事功能)一直是一项非常前沿的技术,涉及到机器视觉,自然语言处理等模块。 幸运的是,谷歌基于tensorflow将...

6336
来自专栏iOSDevLog

人工智能的 "hello world":在 iOS 实现 MNIST 数学识别MNIST: http://yann.lecun.com/exdb/mnist/ 目标步骤

3768
来自专栏FreeBuf

用机器学习玩转恶意URL检测

前段时间漏洞之王Struts2日常新爆了一批漏洞,安全厂商们忙着配合甲方公司做资产扫描,漏洞排查,规则大牛迅速的给出”专杀”规则强化自家产品的规则库。这种基于规...

1K9
来自专栏深度学习之tensorflow实战篇

关于决策树ID3算法,熵,信息增益率的权威解释,稍后奉上python代码

决策树分类算法概述 决策树算法是从数据的属性(或者特征)出发,以属性作为基础,划分不同的类。 看了本书,叫知识发现,内容很好,果断扫描 这里...

3604
来自专栏机器学习算法与Python学习

Pytorch | BERT模型实现,提供转换脚本【横扫NLP】

《谷歌终于开源BERT代码:3 亿参数量,机器之心全面解读》,上周推送的这篇文章,全面解读基于TensorFlow实现的BERT代码。现在,PyTorch用户的...

2091
来自专栏有趣的Python和你

sklearn调包侠之朴素贝叶斯

1335
来自专栏专知

零基础构建神经网络:使用PyTorch从零编写前馈神经网络代码

【导读】1月20日,机器学习研究人员Jeff Hu发布一篇深度学习教程,与其他的文章略有不同,作者并不介绍深度学习最前沿技术、也没有分析深度模型的优劣,而是从基...

5085
来自专栏ATYUN订阅号

自相关与偏自相关的简单介绍

自相关和偏自相关图在时间序列分析和预测中经常使用。这些图生动的总结了一个时间序列的观察值与他之前的时间步的观察值之间的关系强度。初学者要理解时间序列预测中自相关...

6534

扫码关注云+社区

领取腾讯云代金券