论文部分内容阅读
深度学习(Deep Learning)近年来在机器学习的各个领域都取得了突破性的发展。深度学习算法通过训练多层人工神经网络模型,能够出色地抽取复杂特征,从而在语音,计算机视觉,文本等多个方面取得了巨大的成功。由于人工神经网络模型层数的增加,深度学习需要训练大量的模型参数,也因此依赖于海量的训练数据作为支撑。模型规模和数据规模的急速膨胀使得深度学习算法同时兼具计算密集型和I/O密集型这两种计算特征。针对这些特性,目前主流的解决方案是使用GPU和大规模集群进行计算。然而,这些方案往往将平台相关的接口(API)直接暴露给用户,使得算法的开发、实现和优化变得非常困难并且难以维护。针对这些问题和需求,在本篇论文中,我们设计并实现了Minerva——一个面向深度学习算法的高性能的计算平台。Minerva通过提供基于矩阵运算的编程模型,从而使得用户能够方便,自然地表达深度学习算法。同时,通过保留算法设计者所熟悉的命令式和结构化编程的特点,我们的编程模型能更精简更紧致地编写几乎所有主流的深度学习算法。为了同时支持分布式计算和异构平台(GPU或者多核CPU)的加速,在运行过程中,Minerva会动态地将用户代码转换成数据流的中间表达。Minerva会根据运行平台的不同,自动将这数据流表示执行在多个进程或者异构硬件之上。当执行在分布式环境中时,Minerva会自动推断近似最优的数据和计算的分配,从而有效地利用数据局部性并且高效地隐藏网络传输的开销。得益于Minerva灵活且平台无关的设计理念,用户不需要修改一行代码就可以将所编写的算法运行在各种设备之上,比如笔记本/工作站,拥有GPU加速的高性能服务器,甚至于大规模集群。我们的实验结果也显示我们这样层次化的实际理念能够利用多种并行性,可扩展性,并且在性能上能够超越许多现有的面向深度学习算法的工具。