实施方案
[0022] 下面结合附图和具体实施步骤对本发明做了进一步的说明:
[0023] 步骤1:采用多节点集群组成参数服务器系统,一个节点作为参数服务器,其他节点作为计算节点。
[0024] 如图1所示,本发明采用多线程的方式实现参数服务器,参数服务器上每个传输线程对应一个计算节点,用于维持参数服务器与计算节点之间的通信;同时,参数服务器上专门设置了一个线程作为参数更新管理器,用于处理全局模型参数的更新。
[0025] 步骤2:部署性能监控模块。在参数服务器和计算节点上实现基于MPI通信的性能监控线程,实现节点性能参数的实时获取。
[0026] 步骤3:参数服务器通过性能监控模块获取计算节点的性能参数。
[0027] 步骤4:参数服务器通过性能聚类算法计算出参数服务器下一次迭代参与全局同步的节点数。
[0028] 如图2所示,LSP方法在BSP方法的基础上,优化了其同步条件:在每次迭代中,参数服务器只需等待一部分计算节点完成迭代后便可开始更新全局模型,而不用等待剩下的慢节点,同时当参数服务器完成一定迭代次数后,将等待所有计算完成迭代后进行一次全局同步。上述机制避免了BSP方法在集群性能差异大的情况下,因迟迟无法达到同步条件使得等待时间过长,导致最终的训练时间大量增加。
[0029] 迭代时间与通信时间能反映分布式机器学习方法中训练速度与通信开销,因此,本发明将迭代时间与通信时间作为性能聚类算法的样本数据。对于有P个计算节点的集群集合,定义迭代时间和通信时间分别为xP和yP,性能数据集 其中性能聚类算法描述如下:
[0030]
[0031]
[0032] 性能聚类算法基于计算节点的计算时间和与参数服务器的通信时间,对参数服务器中每次迭代的同步节点数量动态调整为性能最优簇的规模,从而减少了参数服务器的同步等待时间,平衡了集群负载,提高了模型训练的性能。
[0033] 步骤5:若计算节点参与了本次全局模型更新,则使用新的全局模型参数进入下一次迭代训练;否则,使用本地模型参数进入下一次迭代训练
[0034] 步骤6:重复步骤3至步骤5,直至模型收敛。
[0035] 图3和图4展示了在集群性能相近时,不同计算方法的准确率和训练时间对比。由于BSP方法下的参数服务器在每次迭代计算时,都要等待所有计算进程完成迭代后再进行全局同步,因此BSP保证了模型训练的强一致性而准确率最高。但BSP方法的迭代计算时间取决于训练最慢的计算进程,这导致使用BSP方法训练将花费大量的时间。LSP、SSP都利用了机器学习算法的容错特性进行有限异步训练,缩短了参数服务器的同步等待时间,因此训练时间较BSP有大幅的降低。但由于SSP滥用了容错特性,在各计算节点性能相近的情况下,导致计算节点各自进行过多的局部迭代,容易陷入局部最优解。且随着计算进程的增加,局部迭代的次数也随之增多,全局模型参数更新的次数减少,导致准确率不断下降,模型无法满足使用需求。LSP实现了受限同步屏障,保证了全局模型的更新次数,避免了局部迭代后全局模型趋近于局部最优解,因而比SSP具有更高的准确率。
[0036] 图5展示了在集群性能差异较大时,不同计算方法的准确率对比。由于BSP清楚地分离计算阶段与通信阶段,使得在BSP方法下训练出的机器学习模型准确率不受计算节点性能波动影响。SSP随着节点性能差异增大,计算节点能更快地达到同步条件,避免了容错性的扩大,提升了训练模型的准确度。LSP因节点性能差异增大,减小了受限阈值,即进入受限同步屏障的进程数减少,使得LSP仍然保证了较高的准确率,并高于SSP。
[0037] 图6展示了在集群性能差异较大时,不同计算方法的训练时间对比。由于BSP的单次迭代时间受限于迭代时间最长的进程,使得BSP在计算节点出现性能波动出需要更多的时间进行迭代,严重影响了模型训练的效率。另外,由于LSP实现了受限同步屏障,并实现了计算节点的异步计算,减弱了同步阶段性能滞后进程导致的等待问题,使得LSP对因计算节点性能差异导致的整体性能滞后问题有着显著的优势。