专栏首页IT派四种GPU的性能分析

四种GPU的性能分析

导语:Pedro Gusmão 等人对于英伟达的四种 GPU 在四种不同深度学习框架下的性能进行了评测。本次评测共使用了 7 种用于图像识别的深度学习模型。

第一个评测对比不同 GPU 在不同神经网络和深度学习框架下的表现。这是一个标准测试,可以在给定 GPU 和架构的情况下帮助我们选择合适的框架。

第二个测试则对比每个 GPU 在不同深度学习框架训练时的 mini-batch 效率。根据以往经验,更大的 mini-batch 意味着更高的模型训练效率,尽管有时会出现例外。在本文的最后我们会对整个评测进行简要总结,对涉及到的 GPU 和深度学习架构的表现进行评价。

No.1 GPU、深度学习框架和不同网络之间的对比

我们使用七种不同框架对四种不同 GPU 进行,包括推理(正向)和训练(正向和反向)。这对于构建深度学习机器和选择合适的框架非常有意义。我们发现目前在网络中缺乏对于此类研究的对比。

这是首次针对不同 GPU(Tesla K40,Titan-X Maxwell,GTX 1080 和 Titan-X Pascal)与不同网络(AlexNet,Overfeat,Oxford VGG,GoogLeNet,ResNet-50,ResNet-101 和 ResNet-52)在不同深度学习框架下(Torch,Caffe,TensorFlow 和 Neon)的评测。在评测中,除了 Neon,所有框架都使用了英伟达 cuDNN 5.1。我们在每个 minibatch 里使用了 64 个取样,每次进行超过 100 次推理和训练。图表中缺失的数据意味着该次测试遭遇内存不足。

No.2 用于 TensorFlow 的 Minibatch 效率

训练深度学习框架时知道每个 minibatch 中的样本数量将会加快训练。在第二个测评中,我们分析了 minibatch 尺寸与训练效率的对比。由于 TensorFlow 1.0.0 极少出现内存不足的情况,我们只使用它进行这项评测。这次实验中我们重新评估了 100 次运行中的平均正向通过时间和和正向+反向通过时间。

No.3 测评分析

关于第一个测评,我们注意到,Neon 几乎总是能为 Titans 和 GTX 1080 导出最好的结果,而对 K40 的优化最差。这是因为 Neon 针对 Maxwell 和 Pascal 架构做了优化。Tesla K40,作为一个 Kepler GPU,缺少这样低层级的优化。Torch 在所有架构中都可以输出好结果,除了被用在现代 GPU 和更深的模型时。这又一次成了 Neon 发挥作用的时候。最后,我们指出 TensorFlow 是唯一一个可以训练所有网络的框架,并且不会出现内存不足的情况,这是我们继续使用它作为第二个测评的框架的原因。

关于第二个测评,一般来说更大的 minibatch 可以减少每个样本的运行时间继而减少每个 epoch 的训练时间。正如我们在上图看到的,当使用 VGG 网络时,GTX 1080 需要 420.28 毫秒为一个 64 样本的 minibatch 运行正反向通过;相同的配置训练 128 个样本需要 899.86 毫秒,是前者的两倍还要再多出 60 毫秒。此外,我们注意到对于所有大小为 8 的 minibatch 中的网络,Tesla K40 有一个下凹曲率; Titan X Pascal 在使用相同 batch 大小的更浅架构上(例如 AlexNet 和 Overfeat)表现出上凹曲率。下凹曲率表明有效率在下降而上凹曲率则相反。更有趣的是 minibatch 大小的特殊取值也意味着更明显的效率。分析两个 GPU 将有助于解释这为什么会发生。

附录

以下是对测评中使用的 GPU 还有架构和框架版本的扼要介绍。

GPU

1.Tesla K40:

K40 具有 2880 个 cuda 内核,745MHz 的基本频率和可达 288GB/s 的内存宽带的 12G GDDR5 RAM。这是一个基于 Kepler 架构的服务器 GPU,具备 3.5Tflops 的计算能力。K40 已经停产,但仍被广泛用于很多数据中心,了解其性能对于我们将来是否要购买新硬件很有帮助。

2.Titan X Maxwell:

Titan X 是具有 5.1Tflops 计算能力、用于 Maxwell 架构的旗舰消费级 GPU。它具有 3072 cuda 内核,1000MHz 的基本频率,传送速率为 336.5GB/s 的 12G GDDR5。考虑到其硬件规格和大多数深度学习应用仅依靠于单精度浮点运算,Titan X Maxwell 目前能用 750 美元左右买到,被认为是基于起始价格为 1000 美元的 GPU 的服务器的最佳替换方案。

3.GTX 1080:

GTX 1080 是英伟达目前生产的高端游戏 GPU,售价 599 美元。它具备 2560 个 cuda 内核,1607MHz 的基本频率,提供 320GB/s 宽带的 8GB GDDR5X。先进的 Pascal 架构为其带来了 6.1Tflops 的计算能力。

4.Titan X Pascal:

Titan X Pascal 一直是深度学习方面最畅销的 GPU。它具备 3584 cuda 内核,1417MHz 的基本频率,提供 480GB/s 内存宽带的 12GB GDDR5X。它比 GTX 1080 有更强大的计算能力(约 11Tflops),目前标价 1200 美元。尽管消费者趋之若鹜,英伟达目前在官方网站上直销 Titan X Pascal,每个消费者限购 2 块。

此外,在 3 月 10 日售价 699 美元,计算能力 11.34Tflops 的 GeForce GTX 1080Ti 推出以后,消费者拥有了 Titan X 以外的另一个选择。

神经网络

1.AlexNet:

2012 年,Alex Krizhevsky 使用五层卷积、三层完全连接层的 CNN 网络赢得了 ImageNet 竞赛(ILSVRC)。AlexNet 证明了 CNN 在分类问题上的有效性(15.3% 错误率),而此前的图片识别错误率高达 25%。这一网络的出现对于计算机视觉在深度学习上的应用具有里程碑意义。

2.Overfeat:

2013 年,Overfeat 通过降低第一层的步幅改进了 AlexNet 的架构,让图片识别错误率降低至 14.2%。这一方法证明了卷积神经网络使用同步分类、本地化和图片中对象检测的方式可以增加图片识别任务的准确度。

3.VGG Network:

2014 年,牛津大学的研究人员通过训练 11 到 19 层的卷积神经网络证明了深度对于图像识别任务的重要性。他们的工作表明,使用 3×3 空间内核的两个连续卷积层比使用单个 5×5 卷积层具有更高的准确性,同时这一优势也能为非线性层带来帮助。此外,作者证明 19 层 CNN 输出的结果与 16 层网络具有相似的精度,这暴露了当时技术训练深度 CNN 的困难。最后,VGG Net 进一步将 ILSVRC-2014 分类任务中的错误率减少到了 7.3%。

4.GoogLeNet:

该方式由谷歌研究人员于 2014 年推出,它是由 22 层卷积神经网络构成的模型,它被称为 Inception,是由并行和串行的网络进行的级联。网络分类器的误差为 6.67%。

5.残差网络:

在 2015 年,微软研究院的学者提出了一种新的 CNN 架构——残差网络(ResNet)。在残差网络中,残差块的任务是学习连续输出的表示差异。这一方法通过 110 层模型在 ImageNet 竞赛时达到了 3.57% 的误差率。

本次评测中使用的深度学习架构版本:

  • Caffe: commit 746a77e6d55cf16d9b2d4ccd71e49774604e86f6
  • Torch7: commit d03a42834bb1b674495b0c42de1716b66cc388f1
  • Nervana Neon: 1.8.1
  • TensorFlow: 1.0.0

本文分享自微信公众号 - IT派(it_pai)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-15

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 神经机器翻译之全并行文本生成技术

    在过去的几年里,随着技术的飞速发展,神经网络推动了自然语言任务在准确性和质量方面的快速提高,如文本分类和问题回答等。而其中由深度学习带来的一个令人印象深刻的领域...

    IT派
  • 《头号玩家》嘲讽了马化腾和整个中国互联网

    2014 年 6 月份,Minecraft 开发商 Mojang 的创始人 Markus Persson(大家也喜欢称他为Notch),发了条推特,他说:“有没...

    IT派
  • 强化学习入门介绍

    导语:近年以来,强化学习在人工智能所充当的角色越来越重要了,很多研究机构和大学都将强化学习与深度学习相结合打造高性能的系统。因此,本文注重描述强化学习的基本概念...

    IT派
  • 四大深度学习框架+四类GPU+七种神经网络:交叉性能评测

    选自add-for 作者:Pedro Gusmão 机器之心编译 参与:李泽南、黄小天 最近,Pedro Gusmão 等人对于英伟达的四种 GPU 在四种不同...

    机器之心
  • Multi-Process Scheduling

    从Kepler的GP10架构开始,NVIDIA就引入了MPS(基于软件的多进程服务),这种技术在当时实际上是称为HyperQ ,允许多个 流(stream)或者...

    GPUS Lady
  • 深度 | 通过方差分析详解最流行的Xavier权重初始化方法

    机器之心
  • 独立游戏开发,如何逆向超级马里奥?

    逆向工程是一种编程学习方法。阅读源代码是学习编程最快速和有效的方法。看懂源代码,又知道运行代码后的效果,这样也就基本学会了这些代码的使用方法。

    张晓衡
  • 敲开通往架构师的门

    最近学习了一些关于架构设计的知识想分享给大家。俗话说得好,不想当架构师的程序员不是好厨子。那么如何成为一名架构师呢?接下来就聊一聊我的一些想法。

    Jackeyzhe
  • Node.js + Vue.js 全栈开发王者荣耀手机端官网和管理后台

    最近在跟着Johnny的全栈之巅系列视频教程学习使用NodeJS+Express+Element-UI+MongoDB等开发王者荣耀,服务端server,移动端...

    ccf19881030
  • 架构物联网:一种新的解决方案

    本文将通过对几个项目的介绍,让读者完全了解并掌握如何架构物联网。 几周前我们在捷克的Linux大会“OpenAlt”上提出了这样的观点:物联网(IoT)是基于微...

    CSDN技术头条

扫码关注云+社区

领取腾讯云代金券