当前位置:首页 期刊杂志

基于GPU通用计算的深度学习模型性能分析

时间:2024-05-19

齐万华 胡向阳

【摘 要】随着数据化社会的到来,深度学习模型被广泛地研究,并涌现了一批有影响力的模型。由于超参和神经元的数目是百万级别,所以这些模型的复杂度很高。另外,当训练数据集增大时,模型需要消耗更多的计算资源。GPGPU具有强大的并行计算能力,大大减少深度学习模型的训练时间。但GPU通用计算的性能提升与模型有关,这方面鲜有人研究。本文侧重于GPGPU下深度学习模型的性能分析。

【关键词】GPU;GPGPU;深度学习;性能

中图分类号: TP391 文献标识码: A 文章编号: 2095-2457(2018)32-0218-002

DOI:10.19694/j.cnki.issn2095-2457.2018.32.101

【Abstract】With the advent of the data society,deep learning models have been extensively studied and a number of influential models have emerged.The complexity of these models is high,as the number of super-parameters and neurons is in the millions.In addition,as the training data set increases,the model consumes more computing resources.GPGPU has powerful parallel computing capability,which can greatly reduce the training time of deep learning models.But the performance improvement from GPGPU is related to the model.There is little research in this problem.This paper focuses on the performance analysis of deep learning models based on GPGPU.

【Key words】GPU;GPGPU;Deep learning;Efficiency

0 前言

尽管神经网络和深度学习在上世纪早已被提出,但它们一直作为机器学习的普通分支默默存在。直到最近,由于数据量的增加,计算能力的增强(如CPU、GPU以及基于CPU或GPU的集群系统)和先进深度学习技术的推动(如Embedding 和注意力策略等[1,2]),基于神经网络和深度学习的工作才开始表现优异,并得到学术界和工业界的广泛关注。如2012年CNN在ImageNet取得惊人成绩(接近10%的提升);Google公司的AlphaGO战胜了李世石和柯洁。由于神经网络超参和神经元的数目是百万级别,所以模型复杂度很高。另外,当训练数据集增大时,模型需要消耗更多的计算资源。GPU通用计算(GPGPU)具有强大的并行计算能力,大大减少深度学习模型的训练时间。但GPU通用计算的性能提升与模型有关,这方面鲜有人研究。鉴于此,本文研究分析在GPU通用计算下不同深度模型的性能特点。

1 GPU通用计算

GPU通用计算(General-Purpose computing on Graphics Processing Units,GPGPU)是一种新型的计算架构。与CPU不同,GPU的设计初衷是为了加速图形处理,因此它的核心数是成千上万,且具有强大的并行计算能力。目前,GPU通用计算已经进入高性能计算的主流行业[2],广泛地用于图形图像处理和自然语言处理等领域,并取得了明显的效果提升。

最初的GPU不具备可编程性。针对这一不足,一些高级编程平台(如CUDA和OpenCL)被提出。CUDA是Nvidia公司提出的一个基于GPU的异构编程平台。它支持OpenACC和OpenCL编程框架,并提供了丰富的函数库,如用于加速人工神经网络的 cuDNN[2]。

2 深度学习模型

自2006年杰弗里·辛顿等人在科学杂志上发表论文《一种深度置信网络的快速学习算法》后,深度学习模型被广泛地关注并研究。卷积神經网络(CNN)和循环神经网络(RNN)是其中的两类代表模型。

2.1 卷积神经网络

卷积神经网络(CNN)主要用于图像处理。它由一个输入层,一个输出层和多个隐藏层。每个隐藏层包括池化层,卷积层,全连接层和归一化层。CNN的思想是卷积层。卷积层用来进行特征抽取。它先构建一个N*N的矩阵作为过滤器,然后对每个图片进行卷积操作。由于图像经过卷积操作后,图像就缩小了,而且图像边缘的大部分信息都丢失了,池化层就是针对两个问题提出的。池化层的思想是在图像边缘填充像素。本文的CNN包含两个卷积层,每个卷积层采用1个2X2的卷积过滤器。

2.2 循环神经网络

循环神经网络(RNN)是针对序列数据设计的,在语音识别、自然语言处理领域引起了深刻地变革。它包括一个输入层,一个输出层,和多个隐层。与CNN有两个不同点:(1)RNN的输入是有时序关系的。(2)网络结构不同,其中第隐层的输入包括第隐层的中间结果。由于基本的RNN在深层的连接存在时会出现梯度消失的问题,长短期记忆网络(LSTM),循环门单元(GRU)等RNN的变体被提出,用来改善梯度消失的问题。其中,LSTM在隐藏层计算时,用加法代替了乘法,从而避免了梯度消失问题。本文的RNN模型是LSTM。

3 实验分析

本节首先介绍了实验环境和数据集,然后分析了不同模型在GPU和CPU计算条件下性能的特点,以及不同数据量对GPU并行计算的影响。

CPU环境:英特尔Core i7-8086K 4.00GHz处理器,16GB内存。

GPU环境:NVIDIA GeForce GTX 1080,16GB显存, CUDA是CUDA9.0,人工神经网络的函数库是cuDNN7。

数据集:CNN模型使用了MNIST数据集。MNIST由书写数字的图片和相应的标签组成。图片标签包括10类,即0到9。RNN模型是使用LSTM实现Char RNN功能。Char RNN[3]用来生成文章、诗歌甚至代码。它的输入是长度为N的序列,输出是与输入长度相等的序列。编程语言是Python 3。

3.1 不同模型的性能分析

本节在1000、2000、3000迭代次数下,分析CPU与GPU并行计算的性能和两个深度学习模型(CNN和RNN)的性能特点,如图1所示。从图中可以看出,(1)无论是CNN还是RNN,GPU的运行速度都要大大高于CPU的运算性能。这说明:GPU有更强的并行计算能力。如当迭代次数为1000时,使用GPU运行CNN所消耗的时间仅为5.36秒,而使用CPU所消耗的时间是76.15秒。对于大规模的并行计算,采用GPU运算,比CPU要省时很多。(2)在相同实验环境下,CNN的运算效率要高于RNN。因为CNN模型在迭代次数为1000,2000,3000情况下,CPU与GPU运行时间的比值依次为14.20、17.76和18.07,而RNN模型,在相同条件下,比值仅为5.88、5.81和5.89。這是由于在RNN模型的计算过程中,隐藏层之间存在数据依赖,导致一个样本的计算过程不能完全并行。但多个样本之间不存在数据依赖可以实现完全并行,所以GPU能够加速RNN模型的训练,但CPU与GPU运行时间的比值有限,小于CNN模型的相应比值。

4 结束语

本文分析了CNN和RNN在CPU和GPU环境下,和不同迭代次数下性能的特点。实验结果表明:GPU在并行计算上有较强的加速能力。

【参考文献】

[1]GOODFELLOW I,BENGIO Y,COURVILLE A,et al.Deep learning [M].MIT press Cambridge,2016.

[2]丁科,谭营.GPU通用计算及其在计算智能领域的应用 [J].智能系统学报,2015,10(01):1-11.

[3]何之源.21个项目玩转深度学习——基于TensorFlow的实践详解[M].北京:电子工业出版社,2018.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!