论文部分内容阅读
随着深度学习技术的不断发展,卷积神经网络凭借其优异的识别性能,在图像识别等领域受到了越来越多的关注。由于神经网络模型通常包含大量参数,训练一个可用的卷积神经网络非常耗时。因此如何加速神经网络模型的训练过程,是深度学习领域的一个重要研究课题。为了解决该问题,通常采用多GPU并行的方式。多GPU并行加速训练过程的思路主要分为模型并行和数据并行。基于模型并行的算法难以达到负载均衡,加速性能相对较差;基于数据并行的算法中,目前的并行结构都存在无法均匀分配更新任务的问题,难以充分利用计算资源。针对上述问题,在调研了现有的多GPU并行算法的基础上,本文借鉴了异步随机梯度下降算法中延时更新的思想,提出一种基于环形结构的数据并行方案,该方案可以进一步提高多GPU的并行效率。本文的主要工作如下::1)分析卷积神经网络的隐藏层结构。使用随机梯度下降算法进行模型训练,并在此基础上,推导出卷积层、下采样层和全连接层中可训练参数的计算公式,为后续的并行算法设计以及代码实现做准备。2)给出了基于环形结构的数据并行方案。比较模型并行和数据并行的特点后,为了具备更好的可扩展性,进一步研究数据并行。针对现有数据并行方案中,无法均匀分配更新任务的问题,提出一种以环形结构组织GPU节点的方案。该方案中每个GPU都需要训练和更新模型,计算任务被均匀划分。最后从理论上分析了该方案的并行性能。3)在多GPU上实现卷积神经网络。根据卷积神经网络模型的训练公式,实现单GPU版本的代码,并选择合适的模型参数初始化方案。在此基础上,通过设置恰当的同步方案,以环形结构组织GPU间的数据传输,实现数据并行。此外,每个GPU将创建两个线程分别负责计算和传输,实现任务的并行,达到使用计算掩盖传输的效果。4)对基于环形结构的数据并行方案进行实验与分析。在MNIST和CIFAR-10数据集上,使用基于环形结构的并行方案训练卷积神经网络。当GPU个数为4时,分别取得了3.77和3.79倍的加速比。此外还与使用同步主从结构、归约树结构来训练神经网络的结果作对比,表明本文提出的方法具有更好的并行加速效果。