论文部分内容阅读
深度学习是目前最成功的人工智能技术,有望带领人类真正进入智能时代。巨大的计算需求正驱动着深度学习系统软件和超级计算机的结合。因为有美国对我国高性能芯片禁售的前车之鉴,规划中的下一代国产超算系统将全部采用国产众核处理器制造。但是,国产超算上的深度学习系统软件的研究仍是一片空白,它的构建过程临着多方面挑战:一是缺少适合国产众核处理器创新硬件架构特点的优化指导方法;二是缺乏从复杂深度学习计算核心到全新体系结构的映射方法;三是国产编译工具和系统库使用时仍有待克服的技术障碍;四是需要创新的优化方法来解决网络、I/O等硬件模块在超大规模扩展时遇到的问题。为解决以上挑战,本文以我国最快的超级计算机一采用国产“申威26010”异构众核处理器的“神威·太湖之光”为目标平台,针对深度学习训练任务提出了一套系统化的软件设计方法。为了更高效进行开发和调优,本文采用模块化的软件组织方法,将深度学习训练系统分解为矩阵乘法、深度学习算子、自动代码调优和并行通信等功能模块。具体来说,本文的主要贡献如下:第一,本文设计了适合“申威26010”创新体系结构特性的性能分析模型和张量化编程模型。在性能分析模型指导下,使用以张量为操作目标的访存和计算原语来表达算法,可以弥合硬件使用方式和算法设计之间的鸿沟。为了实现张量化编程模型所需要的关键计算原语,本文提出了面向众核核间通信机制的矩阵乘法。第二,本文将性能分析模型和张量化编程模型应用于深度学习计算核心的优化中,并提出了自动化的代码调优方法来减少工程负担。首先,在“申威26010”上设计了常见的复杂深度学习算子优化方法,包括卷积、全连接、LSTM等。然后,为深度学习算子设计了端到端的自动调优和代码生成方法,使优化后的算子实现获得了超过GPU上cuDNNv7.5的运算效率。第三,本文研究了超级计算机上深度学习并行训练的关键技术,在系统和算法层面突破了扩展瓶颈。系统层面上,本文在“神威·太湖之光”上实现了一个并行训练框架,通过对网络通信、I/O、内存管理等方面定制优化后,可以在1024节点上完成目前常用的深度学习模型的训练任务。算法层面上,本文使用残差梯度压缩方法减少需要通信的数据量,在不损失模型精度条件下,提升了系统的可扩展性。它不仅在最新的GPU超级计算机上显著加速了曾经难以扩展的深度学习训练过程,还能为下一代国产超级计算机上深度学习系统软件设计提供参考。