选自xcelerit

参与:蒋思远

RNN是处理定量金融、风险管理等时间序列数据的主要深度学习模型,但这种模型与GPU的加速效果并不好。本文利用RNN和LSTM对基于TensorFlow的NVIDIA特斯拉P100和v 100GPU的加速性能进行了对比,结果显示训练和推理过程的加速效果并不如我们预期的那样好。

循环神经网络

深度学习的许多应用包括使用时间序列数据作为输入。比如随时间变化的股价可以作为交易预测算法和收益预测算法的输入,来推断未来某个时间点的可能状态。循环神经网络非常适合建模长期或短期的时间相关性,因此是本文测试的理想模型。

下图显示了RNN的一个神经元,它不仅是最基本的组成部分,也是其他更复杂的循环单位的基础。从下图可以看出,神经元的输出y不仅取决于当前输入x,还取决于存储的前一状态w,环路的前一状态也可以称为反馈环路。正是这种循环让RNN学会了时间依赖。

如下图所示,RNN单元可以被组织成层,然后这些层被堆叠以形成完整的神经网络。

深循环神经网络

由于梯度消失和爆炸,RNN很难学会长期依赖。这两个问题主要发生在训练期的反向传播过程中,其中损失函数的梯度是从输出到输入反向计算的。由于反馈回路,较小的梯度可能很快消失,较大的梯度可能急剧增加。

梯度消失阻止RNN学习长期时间依赖。长短期记忆模型是RNN解决这个问题的一个变种。LSTM引入了输入门、遗忘门、输入调制门和存储单元。这使得LSTM能够从输入数据中学习高度复杂的长期依赖关系,因此它也非常适合学习时间序列数据。此外,LSTM还可以堆叠多层网络,形成更复杂的深层神经网络。

在隐层宽度相同的假设下,深度RNN网络的计算复杂度与采用的层数成线性比例关系。因此,单层RNN或LSTM单元可视为深RNN的基本构件,这就是为什么我们选择以下级别进行基本测试。

硬件比较

下表显示了英伟达P100和V100 GPU的主要性能和差异。

请注意,浮点运算的计算假设纯融合乘加/FMA运算指令被记录为两个运算,即使它们仅被映射到一个处理器指令。

在P100,我们测试了半精度浮点运算。在V100上,我们测试了张量FLOPs,它运行在混合精度的张量核上:FP16精度的矩阵乘法和FP32精度的累加。

也许深度学习环境下V100 GPU最感兴趣的硬件特性是Tensor Cores,它是一种特殊的内核,可以半精确地计算4×4矩阵乘法,并在一个时钟周期内将计算结果累加成单精度4×4矩阵。这意味着一个张量核可以在每个时钟周期执行128次浮点运算,而具有8个张量核的流式多处理器可以实现1024次浮点运算/周期的速度。这比常规单精度CUDA内核快8倍。为了从这种定制的硬件中获益,深度学习模型应该用混合精度或者纯半精度来编写,以便使用深度学习框架高效地使用v 100传感器内核。

张量流

TensorFlow是Google维护的开源深度学习框架,使用数据流图进行数值计算。张量流中的张量是指传输的数据是张量,流是指用计算图进行运算。数据流图使用由节点和边组成的有向图来描述数学运算。“Node”一般用来表示应用数学运算,但也可以表示数据输入的起点和数据输出的终点,或者读/写持久变量的终点。边表示节点之间的输入/输出关系。这些数据边可以传输维度动态可调的多维数据数组,即张量。

TensorFlow允许我们将模型部署到台式计算机、服务器或移动设备上,并在这些设备上调用单个或多个CPU和GPU。开发人员一般使用Python来编写模型和训练算法,而TensorFlow将这些算法或模型映射到一个计算图,使用C++、CUDA或OpenCL来计算图中的每个节点。

自今年11月TensorFlow 1.4发布以来,增加了对半精度数据类型的支持,GPU后端也为半精度或混合精度的矩阵运算配置了V100张量核。除了1.4的主线版本之外,NVIDIA还在其GPU云Docker注册表中维护了一个以Docker容器形式定制和优化的版本。该容器的最新版本目前是17.11。为了获得更好的性能,我们将使用这个HGC容器作为我们的测试基准。

基准测试

我们的基准性能测试使用具有多个神经元的单个隐藏层网络架构,其中隐藏层单元是原始RNN和LSTM。首先随机初始化网络的所有权重,由于基准测试,输入序列将随机生成。

我们在帕斯卡和伏打GPU上比较了模型的性能,系统中使用的配置如下:

演出

为了测量性能,我们需要重复模型的训练,然后记录每次运行的时钟长度,直到估计的时间误差低于特定值。性能指标包括完整的算法执行时间。训练输入是100,000批数据,批量大小为128,每个序列长度为32个样本。训练过程中约有1300万个训练样本,我们使用重叠窗口进行序列分析。深度学习模型可能会根据之前32个样本的状态来预测未来的输出,因此我们修改隐藏层中RNN/LSTM单元的数量来执行基线测试。

火车

下面两张图是V100和P100 GPU在训练过程中对RNN和LSTM的加速。此过程中的单精度和半精度操作是NGC容器。此外,隐藏层单元的数量也如下图所示。

推断

下面两个图是RNN和LSTM在推理过程中被V100和P100 GPU加速的情况。此过程中的单精度和半精度操作是NGC容器。此外,隐藏层单元的数量也如下图所示。

标签

对于经过测试的RNN和LSTM深度学习模型,我们注意到,与P100相比,V100的相对性能随着网络规模和复杂性的增加而增加。结果表明,与P100相比,V100在FP16训练模式下的最大加速度比为2.05倍,而在推理模式下的最大加速度比为1.72倍。这些数据远远低于基于V100特定硬件规格的预期性能。

这种令人失望的性能比可能是因为V100中强大的张量核只能用于半精度或混合精度的矩阵乘法。对这两个模型的分析表明,矩阵乘法只占LSTM总训练时间的20%,甚至少于RNN总训练时间。这与擅长处理图像数据的卷积神经网络形成鲜明对比。其运行时间以大量矩阵乘法为主,因此可以充分利用张量核的计算资源。

与P100相比,V100表现出很强的硬件性能提升,但擅长深度学习处理时间序列数据的循环神经网络不能充分利用V100的专用硬件加速,因此只能获得有限的性能提升。

原地址:https://www . xcelerit . com/computing-benchmarks/insights/benchmarks-deep-learning-NVIDIA-p100-vs-v 100-GPU/

这篇文章是为机器的核心编写的。请联系本微信官方账号进行授权。

1.《p100 业界 | Tensor Core究竟有多快?全面对比英伟达Tesla V100/P100的RNN加速能力》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《p100 业界 | Tensor Core究竟有多快?全面对比英伟达Tesla V100/P100的RNN加速能力》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1684114.html