论文部分内容阅读
循环神经网络是深度学习的重要组成部分,在序列处理问题中有广泛应用。循环神经网络最初主要应用在自然语言处理中,随着其性能和通用性进一步发展,很多领域内的识别及预测问题都出现了基于循环神经网络的解决方案。典型应用包括地球科学中的土地覆盖变化检测,遥感图像标题生成以及天气预报等。与深度学习其他主流网络的发展趋势类似,循环神经网络训练所需的数据量,网络结构的复杂程度以及完成训练所需时间,均迎来了指数级的增长。因此,如何在类似“神威·太湖之光”超级计算机这样的大规模并行平台上实现循环神经网络的大规模分布式训练,加速复杂网络的训练过程,成为了亟待解决的关键问题。大规模深度神经网络的训练基于数据并行的模式,通过增加训练批量的方式,提升模型遍历数据集的效率,从而提升模型收敛的速度。在“神威·太湖之光”上进行大规模循环神经网络训练的挑战包括模型训练的计算性能问题,分布式训练的通信效率问题,循环神经网络的内存分配问题以及在大规模训练情景下保证模型收敛速度和泛化性的问题。本文的主要工作包括三部分:1.本文在“神威·太湖之光”已有的分布式深度学习训练框架Sunway Caffe框架基础上,对训练过程中的模型测试模块进行分布式设计,缩短了模型测试所需要的时间,并对模型训练的分布式方案进行重新设计,隐藏了训练过程中模型测试的时间,为模型的高频测试提供了支持。2.本文针对循环神经网络的训练提出了多维度的优化。计算性能上,本文对计算热点指数函数和softmax函数进行优化,取得了12.63倍的整体加速效果;通信效率上,本文去除了循环神经网络训练中的冗余通信,针对“神威·太湖之光”的网络拓扑对MPI_Allreduce的实现进行重新设计,取得了20倍的通信效率提升;内存优化上,本文针对循环神经网络结构重新设计内存开辟方式,保证了内存的充分利用。3.本文对循环神经网络的大规模训练进行探索,包括优化算法的选择,训练规模的设计,以及对大规模训练过程中模型收敛速度、泛化能力的分析。最终,本文利用100个训练节点将循环神经网络收敛所需迭代步数降为单节点训练的约1/100;并在此基础上进一步将训练节点规模扩展到800,以实现对具有更大参数规模的循环神经网络的训练的支持。