论文部分内容阅读
近些年来,卷积神经网络(Convolutional Neural Network,CNN)作为最重要的深度学习(Deep Learning,DL)模型之一,在业界受到了广泛的关注和研究,尤其是在计算机视觉(Computer Vision,CV)等领域发挥着至关重要的作用。由于更深层次的网络往往能够提供更好的效果,卷积神经网络变得越来越复杂,随着网络结构的不断加深和训练数据量的显著增长,通用处理器已经无法很好地满足这类应用的计算需求。于是,计算芯片架构开始朝着适应这类应用的定制化方向演进,进而出现了一系列的深度学习专用芯片,其中最具有影响力的包括寒武纪的DianNao系列和谷歌的TPU。它们均是针对卷积神经网络进行了专用部件的定制和加速,甚至为卷积神经网络设计出了一套高效的专用指令集,可以说,当今国际上的深度学习处理器即为面向卷积神经网络的加速器。在处理器的设计过程中,标准的基准测试程序和测试指标至关重要。本文提出了一套深度学习处理器基准测试程序,用于对当前的深度学习硬件进行客观评估,判断处理器设计的合理性以及对比不同处理器的设计优劣,指导软硬件层面的系统优化,帮助硬件研究人员设计出高效的深度学习处理器。本文的主要工作和研究成果包括:(1)确定深度学习基准测试程序的应用选取依据,筛选出20个具有代表性的流行卷积神经网络,并为各个网络提供典型的数据集,构成宏基准测试程序。为了便于进行性能评测,抽取卷积神经网络中的核心网络层及其常用参数配置,并为这些网络层程序设计不同规模的典型输入集,构成微基准测试程序,微基准测试程序包含了 45个精简的网络层测试模块,这在很大程度上减少了代码量。在确定好基准测试程序的构成后,在通用处理器包括通用CPU和GPU以及国产申威处理器上给出了基准测试程序的具体实现。(2)针对宏基准测试程序中的各个网络,从网络的计算量、参数量、拓扑结构和各个组成部分的耗时占比等方面给出详细的分析。通过对比网络计算量和参数量等特征,阐述影响网络通信开销的具体因素;通过分析网络核心热点代码块,定位出网络训练过程中的性能瓶颈。针对微基准测试程序中的各个网络层程序,详细分析了它们的前后向实现细节,得到了其中的基础操作,为深度学习专用指令集的定义提供了重要依据。(3)在真实硬件平台上给出基准测试程序的性能评测实例,详细介绍了利用这套基准测试程序进行性能评测的具体方法。针对宏基准测试程序,本文给出了一套系统性能评测指标,包括I/O等待延迟、跨节点通信延迟和CPU利用率,基于这些系统指标的性能测试结果,得到了各个网络在系统层面的行为特征和性能瓶颈。针对微基准测试程序,本文给出了一套微架构性能评测指标,包括IPC、CPU停顿周期率、分支预测错误率和多级Cache缺失率等,基于这些微架构指标的性能测试结果,得到了各个网络层程序在微架构层面的行为特征和性能瓶颈。通过对得到的性能数据进行分析,为处理器的设计与优化提出了一些针对性建议。