欢迎来到 GeoMX 的中文文档!😁#



GeoMX 是一个高性能分布式机器学习系统,它用于在地理分散的多个数据中心之间进行协同的机器学习模型训练。GeoMX 是基于 MXNET 系统建立的,并且融合了一系列复杂的优化技术以提高训练效率。通过这些改进,相比于原始的 MXNET 系统,在相同网络带宽的条件下,GeoMX 的训练速度提升了 20 倍。这种显著的效率提升使得 GeoMX 适用于地理分散的数据中心场景,在跨广域的分布式机器学习应用中表现出了优越的性能和效率。

GeoMX 采用一种名为分层参数服务器 (HiPS) 的新型架构作为它的基础训练架构。HiPS 架构分隔了数据中心内外部网络环境,它在每个数据中心内部建立域内参数服务器系统,同时在不同的数据中心之间也建立起了全局参数服务器系统。在这种设置下,模型数据的传输会经历两个阶段的聚合:首先,在各自的数据中心内部局部聚合,然后,在全局数据中心进行全局聚合。这种方法有效减小了跨广域网的通信流量,从而显著降低通信开销。

但是,仅有这些还远远不够。考虑到广域网中的网络资源常常是受限的,并且随时间动态时变,跨数据中心的分布式训练仍然面临诸多通信瓶颈。为了缓解这些瓶颈,GeoMX 采用了多种优化技术。这些技术包括梯度稀疏化、低精度量化(例如 FP16)、混合精度量化、更先进的传输协议、同步算法、流量调度、优先级调度、负载均衡,以及其他一些正在开发或集成的技术,例如通信覆盖调度等)。这些技术全面地解决了跨广域分布式系统的通信问题,进一步提高了 GeoMX 系统训练的效率和稳健性。

通信优化技术一览:

  1. 双向梯度稀疏化 (Bi-Sparse):已有方法如深度梯度压缩 (DGC) 会对上行梯度张量进行稀疏化处理。为了进一步压缩通信流量,GeoMX 还对下行(聚合)梯度张量进行稀疏化处理,而不是拉取完整模型参数。该技术被设计用于数据中心之间,以减少跨广域传输的通信流量。请参考这篇文章 (paper) 了解更多关于双向梯度稀疏化的介绍。

  2. 低精度量化 (FP16):GeoMX 也支持将模型数据量化为较低精度进行传输,例如以 FP16 数值精度格式。在这种方案中,GeoMX 使用 FP32 计算模型,但在传输时,它将模型数据张量转换为 FP16。一旦接收到拉取的数据,GeoMX 就会将其恢复为 FP32 并继续进行模型计算。这种方法可以有效地将局域网和广域网上传输的数据流量减半。

  3. 混合精度量化 (MPQ):混合精度量化结合了双向梯度稀疏化和低精度量化两种技术。在这种方案中,小张量被量化为 FP16 格式进行传输,而大张量则保持为 FP32 格式。但是,这些大张量在传输前将经过稀疏化处理。这样设计是为了减少关键信息的丢失,避免对模型性能造成明显损伤。

  4. 差异梯度传输 (DGT):这是一种针对分布式机器学习任务进行了特别优化的新型传输协议,它利用梯度下降算法对部分梯度丢失的容忍性,使用多个具有不同可靠性和优先级的通道传输梯度。梯度被调度于哪个通道进行传输,取决于它们对模型收敛的贡献。通过这些优先级通道,重要梯度在传输中得到优先处理,而其他不太重要的梯度则以较低的优先级和可靠性进行尽力而为传输。这有助于减少分布式机器学习通信流量的尾流时延,从而减少参数同步的完成时间。关于 DGT 协议更加详细的说明请参考这篇文章 (Paper),如果希望独立使用 DGT 协议,请尝试这个代码库 (Repo)。

  5. TSEngine: 为了解决分布式系统通信的 TCP Incast 问题,GeoMX 整合了 TSEngine,这是一个为广域网中的高效通信覆盖设计的自适应通信调度器。TSEngine 可以根据实时网络条件,动态优化分布式节点之间的拓扑覆盖和通信逻辑。在系统通信效率和可扩展性方面,这种自适应调度器相较于现有的通信模式展现出明显优势。请参阅此文章 (Paper) 获取更多详情,也可以使用这个代码库 (Repo) 独立应用 TSEngine。

  6. 基于优先级的参数传播 (P3):在传统的实现中,第 \(r\) 轮的梯度同步与第 \(r+1\) 轮的前向传播不重叠,因为前向传播依赖于梯度同步的完成。为了提高系统效率,GeoMX 集成了 P3 调度器,该调度器优先传输浅层梯度。这种设置使得前向传播和梯度同步可以重叠,允许更早地执行下一轮的前向传播,从而加速分布式训练。请参阅此论文 (Paper) 以获取更多详情,如果希望独立使用 P3 调度器,请使用这个代码库 (Repo)。

  7. 多参数服务器负载均衡 (MultiGPS):GeoMX 支持启用多个全局参数服务器以均衡工作负载,包括通信流量、参数存储和聚合计算等。MultiGPS 可以避免单一全局参数服务器成为性能瓶颈,从而提高 GeoMX 系统的效率、可扩展性和整体性能。

同步优化算法一览:

GeoMX 支持两种基础的同步算法:全同步算法和复合同步算法。

  1. 全同步算法 (FSA):在这种同步算法中,训练节点在每一轮都同步它们的模型数据(模型参数或梯度),数据中心内部和数据中心之间的参数服务器系统都以同步并行模式运行。这意味着所有训练节点的模型数据都将被同步,以确保模型的一致性。(默认设置)

备注

注意:全同步算法在维护模型精度和一致性方面效果显著,但代价是牺牲训练速度,因为它需要在每次迭代中都同步模型数据并等待所有计算和通信完成。

  1. 复合同步算法 (MixedSync):该算法是全同步算法的异步版本,区别在于数据中心之间的参数服务器系统以异步并行模式运行。这种算法适用于数据中心内部训练节点显示出同质性,但不同数据中心之间的资源异质较强的情况。异步算法解决了低性能数据中心掉队的问题,能够加速广域分布式机器学习训练过程。

备注

注意:为了缓解异步并行中的延迟梯度问题,我们可以配置全局参数服务器使用 DCASGD 优化器。这个优化器可以自动补偿延迟梯度,有助于提高分布式训练的收敛性。

基于上述两种基础同步算法,GeoMX 还提供了两种优化后的同步算法,专门设计用来解决广域网中带宽稀缺和资源异质所带来的挑战。

  1. 分层频率聚合 (HFA):受到这篇文章 (paper)的启发,我们的 HFA 算法首先在训练节点上执行 \(K_1\) 步本地更新,然后在域内参数服务器进行 \(K_2\) 次局域同步,然后才在全局参数服务器进行一次全局同步。这种方法有效减少了跨数据中心的模型同步频率,从而能够大幅提升分布式训练的效率。

  2. ESync:实践表明,将异步算法应用到强异质资源的集群会导致严重的延迟梯度问题和收敛性损伤。于是,我们可以采用一种名为 ESync 的优化算法。ESync 是一种同步并行算法,设计用来在强资源异质的条件下解决分布式系统中的掉队节点问题。它引入了一个状态查询服务器来协调每个训练节点的本地迭代次数,以平衡他们的模型数据到达参数服务器的时间。如果您想了解更多详细信息,请参考这篇文章 (Paper),该功能正在集成中,如需提前体验请尝试这个代码库 (Repo)。

备注

如需了解更多关于 GeoMX 系统的详细信息,请参阅我们的书籍。

  1. 虞红芳, 李宗航, 孙罡, 罗龙. 《跨数据中心机器学习:赋能多云智能数算融合》. 电子工业出版社, 人工智能前沿理论与技术应用丛书, (2023).

Cover for GeoMX Book