NVIDIA深度学习Tensor Core性能解析(下)

DeepBench推理测试之RNN和Sparse GEMM

DeepBench的最后一项推理测试是RNN和Sparse GEMM,虽然测试中可以选择FP16,但实际上它们都只支持FP32运算。

虽然RNN可能会有加速,但DeepBench和NVIDIA目前仅支持单精度RNN推理。

NVIDIA Caffe2测试之ResNet50和ImageNet

虽然内核和深度学习数学运算可能很有用,但实际应用中是使用真实数据集进行训练的。使用标准的ILSVRC 2012图片集,在ImageNet上通过ResNet50模型来训练和推断,可以展示更具参考的性能数据。

虽然FP16和Tensor Core有单独的开关,但Titan V在启用和禁用Tensor Core的情况下运行FP16的性能是完全一样的。

只看原始吞吐量性能的话,Titan V在所有批尺寸下都处于领先地位。凭借Tensor Core,Titan V可处理的批尺寸达到甚至超过了64,而其他显卡即便有12 GB显存也无法与之相比。

不过只看原始吞吐量性能的问题在于,深度学习的实际性能从来没有这么简单。首先,许多模型可能会牺牲精度和训练时间以换取针对吞吐量的优化,如果模型需要较长的时间来收敛,那么每秒训练的峰值性能就没有参考意义了。

这些问题与使用FP16存储和Tensor Core的Volta尤为相关,如果在实际应用中使用了有损缩放或单精度批量归一化,这在吞吐量性能中都是无法体现的。

HPE DLBS Caffe2测试之ResNet50和ImageNet

接下来,我们看一下深度学习指南中的HPE DLBS。与通常的深度学习测试不同,HPE DLBS基本上只输出吞吐量和时间指标。

HPE DLBS的一大特色是支持NVIDIA Caffe2测试使用的数据集,我们同样可以在ImageNet上使用ResNet50模型来训练和推断。但是由于二者的模型和实现不同,测出的吞吐量性能无法与NVIDIA Caffe2直接进行比较。

在测试中,Titan V无法支持某些特定的批尺寸,但总体趋势和之前的测试基本相同,FP16和Tensor Core提供了更高的吞吐量。不过遗憾的是,HPE DLBS Caffe2测试似乎不支持INT8推理。

HPE DLBS TensorRT测试之ResNet50和ImageNet

HPE DLBS的另一大特色是支持TensorRT(NVIDIA推理优化引擎)的基准测试功能, NVIDIA近年来已将TensorRT与新的深度学习功能(如INT8/DP4A和Tensor Core的16位累加器模式)相结合以进行推理。

使用Caffe模型,TensorRT可以根据需要调整模型,以便在给定的精度下进行推理。我们在Titan X(Maxwell)和Titan Xp(Pascal)上运行了64、512和1024的批尺寸,在Titan V运行了128、256和640的批尺寸。

Titan Xp的高INT8性能在一定程度上印证了GEMM/卷积性能,这两个工作负载似乎都在使用DP4A。不过雷锋网并未了解到DP4A如何在Titan V上实现,只知道它由Volta指令集提供支持,且Volta确实拥有独立的INT32单元。

DAWNBench测试之CIFAR10图像分类

就实际应用的性能而言,深度学习训练更适合用时间/准确性和成本来描述,而这两点分别对应DAWNBench的两项子测试。对于使用CIFAR10的图像分类来说,这两项子测试为:

时间/准确性:训练CIFAR10数据集的图像分类模型,报告训练所需的时间,且要求测试集准确性至少为94%。

成本:在公共云基础架构上,计算达到94%或更高的测试集准确性所需的总时间,将所花费的时间(以小时为单位)乘以每小时实例的成本,以获得训练模型的总成本。

测试选用PyTorch的CIFAR10训练实现中最快的两个,其中一个基于ResNet34,是为了在NVIDIA GeForce GTX 1080 Ti上运行,而第二个基于ResNet18,是为了在单个Tesla V100上运行。这些都是DAWNBench中最近的热门测试,可以认为它们是相当符合现代的项目,同时CIFAR10也不是一个非常密集的数据集。

CIFAR10的小型图像数据集运行良好,第一个训练实现是在单个GTX 1080 Ti上运行,需要35分37秒才能训练到94%的准确性,而在第二个训练实现中,Titan V只用了5分41秒就完成了94%的目标。

顺带一提,虽然Titan V在第一个训练实现中不会使用Tensor Core,但凭借相对于Pascal的一般改进,Titan V在这个测试中的速度依然比Titan Xp快20%左右,同时系统峰值功耗也下降了大约80W。

结语

Tensor Core是Titan V的重要组成部分,本文的目的也是尽可能的了解Volta,所以测试着重考察了Tensor Core加速。

本次测试还有许多没有涉及到的各种其他测试和套件,它们普遍在设计上有太多欠缺。事实证明,无论从整体还是局部来看,都不可能找到一个负载贴合当下实际、提供端到端指标、覆盖多个机器学习域、支持Tensor Core和混合精度,最重要的是易于非专业开发者使用的深度学习套件。

即便是参考价值较大的DAWNBench,设计本意也并非提供一个通用的基准,而是为方便研究者和开发者创建他们自己的实现。DAWNBench的深度学习框架仍然需要修改以作为一款有效的基准测试使用,但重新配置一个与Volta兼容的混合精度模型就不是一件可以轻松完成的事情。

这实际上与Titan V自身相关,Tensor Core和混合精度需要专门的开发来适配支持,只能在特定情况下明显提升性能。且即便用户的代码和数据集可以与Tensor Core良好的匹配,到头来神经网络处理也会受到来自传统ALU的限制。

而对于主流消费者群体来说,Tensor Core的发展对他们意味着什么?最新的Turing架构证明,Tensor Core在游戏卡领域同样可以有所应用。雷锋网(公众号:雷锋网)曾在NVIDIA RTX 2080Ti/2080/2070发布时报道过,RTX光线追踪技术就是使用Tensor Core对图像进行降噪以弥补光线数量的限制。NVIDIA唯一需要考虑的问题是,这些玩家是否乐意为这些Tensor Core买单。

对于任何考虑购买Titan V以满足计算需求的人来说,投资Titan V就意味着投资混合精度深度学习模型和基于WMMA的HPC GEMM加速。在cuDNN、cuBLAS以及早期DP4A和FP16*2混合精度计算的背景下,Tensor Core是试图用可编程硬件来实现深度学习加速的一种自然进化。

可以肯定的是,Titan V绝对代表了NVIDIA对未来GPGPU的愿望。

NVIDIA深度学习Tensor Core性能解析(下)的更多相关文章

  1. NVIDIA深度学习Tensor Core性能解析(上)

    NVIDIA深度学习Tensor Core性能解析(上) 本篇将通过多项测试来考验Volta架构,利用各种深度学习框架来了解Tensor Core的性能. 很多时候,深度学习这样的新领域会让人难以理解 ...

  2. Tensor Core技术解析(下)

    Tensor Core技术解析(下) 让FP16适用于深度学习 Volta的深度学习能力是建立在利用半精度浮点(IEEE-754 FP16)而非单精度浮点(FP32)进行深度学习训练的基础之上. 该能 ...

  3. Tensor Core技术解析(上)

    Tensor Core技术解析(上) NVIDIA在SIGGRAPH 2018上正式发布了新一代GPU架构--Turing(图灵),黄仁勋称Turing架构是自2006年CUDA GPU发明以来最大的 ...

  4. 『高性能模型』Roofline Model与深度学习模型的性能分析

    转载自知乎:Roofline Model与深度学习模型的性能分析 在真实世界中,任何模型(例如 VGG / MobileNet 等)都必须依赖于具体的计算平台(例如CPU / GPU / ASIC 等 ...

  5. 深度学习框架caffe在ubuntu下的环境搭建

    深度学习实验室服务器系统配置手册 目录:     一,显卡安装     二,U盘启动盘制作     三,系统安装     四,系统的基本配置     五,安装Nvidia驱动     六,安装cuda ...

  6. 深度学习中Dropout原理解析

    1. Dropout简介 1.1 Dropout出现的原因 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象. 在训练神经网络的时候经常会遇到过拟合的问题 ...

  7. Roofline Model与深度学习模型的性能分析

    原文链接: https://zhuanlan.zhihu.com/p/34204282 最近在不同的计算平台上验证几种经典深度学习模型的训练和预测性能时,经常遇到模型的实际测试性能表现和自己计算出的复 ...

  8. Hebye 深度学习中Dropout原理解析

    1. Dropout简介 1.1 Dropout出现的原因 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象. 在训练神经网络的时候经常会遇到过拟合的问题 ...

  9. 【CUDA开发-并行计算】NVIDIA深度学习应用之五大杀器

    来自吉浦迅科技 整理发布 http://mp.weixin.qq.com/s?__biz=MjM5NTE3Nzk4MQ==&mid=2651231163&idx=1&sn=d4 ...

随机推荐

  1. 【原创】ansible-playbook 详解

    YAML的语法和其他高阶语言类似并且可以简单表达清单.散列表.标量等数据结构.(列表用横杆表示,键值对用冒号分割,键值对里又可以嵌套另外的键值对) YAML文件扩展名通常为.yaml或者.yml.下面 ...

  2. DVWA之File Inclusion(文件包含)

    目录 LOW: Medium: High Impossible LOW: 源代码: <?php // The page we wish to display $file = $_GET[ 'pa ...

  3. poj2175费用流消圈算法

    题意:      有n个建筑,每个建筑有ai个人,有m个避难所,每个避难所的容量是bi,ai到bi的费用是|x1-x2|+|y1-y2|+1,然后给你一个n*m的矩阵,表示当前方案,问当前避难方案是否 ...

  4. Linux提权—脏牛漏洞(CVE-2016-5195)

    目录 脏牛漏洞 exp1复现: exp2复现: 脏牛漏洞 脏牛漏洞,又叫Dirty COW,存在Linux内核中已经有长达9年的时间,在2007年发布的Linux内核版本中就已经存在此漏洞.Linux ...

  5. anaconda安装教程

    Anaconda是一个方便的python包管理和环境管理软件,一般用来配置不同的项目环境.我们常常会遇到这样的情况,正在做的项目A和项目B分别基于python2和python3,而第电脑只能安装一个环 ...

  6. 获取InputStream对象的方法

    获取InputStream对象的方法 getResourceAsStream(String path) 默认path路径位于Class所在Module的src目录下 . InputStream is ...

  7. The content of element type "web-app" must match "(icon?,display- name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet- mapping*,session-config?

    web.xml头部配置: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app P ...

  8. IDEA 新建 Java 项目 (图文讲解, 良心教程)

    IDEA 新建 Java 项目 (图文讲解, 良心教程) 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转载 ...

  9. K8s Scheduler 在调度 pod 过程中遗漏部分节点的问题排查

    问题现象 在TKE控制台上新建版本为v1.18.4(详细版本号 < v1.18.4-tke.5)的独立集群,其中,集群的节点信息如下: 有3个master node和1个worker node, ...

  10. 一文弄懂pytorch搭建网络流程+多分类评价指标

    讲在前面,本来想通过一个简单的多层感知机实验一下不同的优化方法的,结果写着写着就先研究起评价指标来了,之前也写过一篇:https://www.cnblogs.com/xiximayou/p/13700 ...