论文部分内容阅读
人工神经网络是计算机科学家借鉴大脑神经元的组织方式构建的一类算法的总称,在模式识别以及机器学习等领域发挥了巨大作用。以深度置信网络(Deep BeliefNetworks)与卷积神经网络(Convolutional Neural Network)为代表的深度学习,更是当前工业界和学术界聚焦的热点。值得注意的是,随着算法复杂度的增加,深度学习的网络规模呈爆炸性增长趋势,对于强调低功耗低成本的移动终端来说,代价过于高昂,计算机硬件已经成为深度学习技术发展的一个关键瓶颈。寒武纪深度学习处理器(以下简称神经网络处理器),通过定制专用的运算部件、设计高效的片上存储,有效地提高了处理器的运算、访存效率,从而获得相对通用处理器数量级提升的性能优势,在学术界和工业界获得了广泛关注。 为了推动神经网络处理器走向业界应用,编程框架的设计是一项极有意义的工作。本文基于Google开源的TensorFlow深度学习软件框架,设计了一款高效、灵活的面向神经网络处理器的编程框架,主要工作集中于三个方面: 1.设计实现了一条高速、可靠的PCIe软件数据通路,实现了神经网络处理器与CPU的高效互联。 2.实现了神经网络处理器的内存管理、数据交互运行库,将TensorFlow移植到神经网络处理器上,用户可以使用TensorFlow,开发面向神经网络处理器的应用程序。 3.基于神经网络处理器的结构特点,优化软件算法的数据处理、TensorFlow的算法执行流图,重组软件神经网络图结构,提高处理器调用效率。通过上述软硬件协同优化,改进后的TensorFlow框架,在神经网络处理器上,针对Lenet网络,相比CPU与GRID K520 GPU平台,分别获得2倍与1.5倍的加速比。 本文最后对基于TensorFlow的神经网络编程框架进行实验评估。对于几种典型的神经网络算法,在GPU、CPU、以及神经网络处理器上进行不同的实验对比,评估运算性能、功耗。实验结果表明本文所实现的编程框架可以有效地应用于神经网络处理器,并且通过编程框架的优化,有效提高了处理器调用效率,极大提高了神经网络算法的性能。