机器学习笔记:并行计算(同步与异步)
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位大咖的思考法则、工作方式、逻辑体系以上是关于机器学习笔记:并行计算(同步与异步)的主要内容,如果未能解决你的问题,请参考以下文章