通过删除零来提高机器学习性能
KAUST 研究人员找到了一种显着提高训练速度的方法。通过观察在使用大型训练数据集的分布式机器学习中产生零结果的频率,可以显着更快地训练大型机器学习模型。
AI 模型通过对已标记的数据集进行训练来开发其“智能”,以告诉模型如何区分不同的输入,然后做出相应的响应。输入的标记数据越多,模型在执行分配给它的任何任务时变得越好。对于复杂的深度学习应用程序,例如自动驾驶汽车,这需要庞大的输入数据集和非常长的训练时间,即使使用强大且昂贵的高度并行超级计算平台也是如此。
在训练期间,小型学习任务被分配给数十或数百个计算节点,然后在运行下一个任务之前通过通信网络共享它们的结果。这种并行计算任务中计算开销的最大来源之一实际上是每个模型步骤中计算节点之间的这种通信。
“通信是分布式深度学习的主要性能瓶颈,”KAUST 团队的 Jiawei Fei 解释说。“随着模型大小的快速增加,我们还看到在学习过程中产生的零值的比例增加,我们称之为稀疏性。我们的想法是利用这种稀疏性,通过发送最大化有效带宽使用只有非零数据块。”
在早期的 KAUST 开发项目 SwitchML 的基础上,该开发项目通过在处理数据传输的网络交换机上运行高效的聚合代码来优化节点间通信,Fei、Marco Canini 和他们的同事更进一步,通过识别零结果并开发了一种无需中断传输的方法。中断并行计算过程的同步。
“究竟如何利用稀疏性来加速分布式训练是一个具有挑战性的问题,”费说。“所有节点都需要在一个时隙中处理同一位置的数据块,所以我们必须协调节点以确保只有同一位置的数据块被聚合。为了克服这个问题,我们创建了一个聚合器进程来协调工作器,指示他们下一步要发送哪个区块。”
该团队在由一系列图形处理单元 (GPU) 组成的测试平台上展示了他们的 OmniReduce 方案,并为典型的深度学习任务实现了八倍的加速。
“我们现在正在调整 OmniReduce 以使用网络内计算在可编程交换机上运行,以进一步提高性能,”费说。
标签: