机器学习笔记:并行计算(同步与异步)

Posted UQI-LIUWJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习笔记:并行计算(同步与异步)相关的知识,希望对你有一定的参考价值。

1 同步算法

机器学习笔记:并行计算 (基础介绍)_UQI-LIUWJ的博客-CSDN博客中所描述的属于同步算法,也就是所有的worker节点都完成了映射Map的计算后,系统才能执行规约 (Reduce) 通 信。这意味着即使有些节点先完成计算,也必须等待最慢节点;在等待期间,节点处于空闲状态。

1.1 同步的代价

  • 实际软硬件系统中存在负载不平衡、软硬件不稳定、I/O 速度不稳定等因素。
  • 因此 Worker 节点会有先后、快慢之分,不会恰好在同一时刻完成任务。
  • 同步要求每一轮都必须等待所有节点完成计算,这势必导致“短板效应”,即任务所需时间取决 于最慢的节点。
  • 同步会造成很多节点处于空闲状态,无法有效利用集群的算力。

2 异步算法

  • 如果把图 13.7 中的同步屏障去掉,得到的算法就叫做异步算法 (Asynchronous Algorithm)
  • 在异步算法中,一个 Worker 节点无需等待其余节点完成计算或通信。
  • 当一个 Worker 节点完成计算,它立刻跟 Server 通信,然后开始下一轮的计算。
  • 步算法避免了等待,节点几乎没有空闲的时间,因此系统的利用率很高

 2.1 数据并发下的异步算法

我们仍然采用数据并发的方式,即把数据集 划分到 m Worker 节点上。 服务器可以单独与某个 Worker 节点通信: Worker 节点把计算出梯度发送给服务器,服务器把最新的参数发送给这个 Worker 节点。 如果想要编程实现异步算法,可以用 Message Passing Interface (MPI) 这样底层的库,也可以借助 Ray 3 这样的框架。用户需要做的工作是编程实现 Worker 端、 服务器端的计算。

 

2.1.1 worker端的计算 

每个 Worker 节点独立做计算,独立与服务器通信; Worker 节点 之间不通信,不等待。第 k Worker 节点重复下面的步骤:

 

 

2.1.2 服务器端的计算 

 

3 同步梯度下降 VS 异步梯度下降

同步并行梯度下降 完全等价于 标准的梯度下降,只是把计算分配到了 多个 Worker 节点上而已
然而异步梯度下降算法与标准的梯度下降是 不等价 的。

同步与异步梯度下降不只是编程实现有区别,更是在算法上有本质区别。

在理论上,异步梯度下降的收敛速度慢于同步算法,即需要更多的计算量才能达到相同的精度。【CPU时间上异步长于同步】 但是实践中异步梯度下降远比同步算法快【钟表时间商同步长于异步】,这是因为异步算法无需等待,Worker 节点几乎不会空闲,利用率很高。

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于机器学习笔记:并行计算(同步与异步)的主要内容,如果未能解决你的问题,请参考以下文章

计算机网络学习笔记第二章(物理层)超详细整理

笔记CUDA - (异步)SIMT 架构

Python多线程,多进程,并行,并发,异步编程

学习笔记TF040:多GPU并行

Android Handler 机制 屏障消息(同步屏障)

20230515学习笔记——js中的同步任务与异步任务,宏任务与微任务