论文部分内容阅读
在大数据的时代背景下,海量数据的增长,大数据处理框架和深度学习平台不断演进,以更加高效地从海量数据中获取得到有用信息。Apache Spark作为大规模数据处理的快速通用计算引擎,其Shuffle阶段需要访问许多本地和远程机器上的文件,磁盘I/O和网络I/O密集,会对源机器和目标机器上的操作系统造成很大负担。使得Apache Spark无法充分利用高速互连网络所提供的性能优势,致使系统的整体性能不佳。这已成为Apache Spark的主要性能瓶颈。对于深度学习平台技术,研究人员快速认识到深度学习与大规模高性能计算具有着非常相似的特征,开始使用MPI语义的AllReduce进行数据通信。另一方面,随着硬件价格急剧下降,目前大多数数据中心都配备了高性能的高速互连网络InfiniBand,可以利用其高带宽低延迟的特性来实现更为高效的数据传输策略,以加速Spark Shuffle的数据传输和提升深度学习的训练效率。本文基于RDMA技术的特性来进行数据传输策略的研究与优化,主要工作和创新点如下:(1)基于RDMA的Spark Shuffle的设计与实现。基于Apache Spark的系统架构设计,分析Shuffle阶段的数据流动。提出了一种混合方法来支持Apache Spark中的数据通信,将传统的套接字通信与基于InfiniBand的RDMA数据传输相结合,使用RDMA经由Java本地接口(Java Native Interface,简称JNI)来执行Shuffle操作,而Spark中所有其他通信操作仍然调用Netty模块。基于RDMA的设计使用分层内存池来避免频繁的内存分配,并采用使用SEND/RECV和RDMA READ来分别传输小型消息和大型消息。基于RDMA技术来加速Spark Shuffle的数据传输,能够透明地为现有的Spark应用程序带来极大的性能收益。(2)基于RDMA的高性能聚合通信库的研究与实现。针对深度学习中的分布式训练场景,提出了Mobius聚合通信库,其逻辑架构分为传输层、算法层、策略层和输入层。在传输层封装TCP Sockets和RDMA通信,算法层经由接口调用传输层实现,策略层提供对通信协议和通信算法的动态选择。Mobius聚合通信库的性能优于gloo,但距离NCCL2还有一定差距。