分布式对偶平均法(DDA)

Consensus-Based Distributed Optimization:

Practical Issues and Applications in Large-Scale Machine Learning

摘要

本文讨论了实际的基于共识的分布式优化算法。在基于共识的优化算法中,节点用共识迭代交织局部梯度下降步骤。梯度步骤将解决方案驱动到最小化器,而共识迭代使值同步,以便当目标是凸的且可分离时,所有节点收敛到网络范围的最优。共识更新需要沟通。如果通信是同步的并且节点在更新之前等待从其每个邻居接收一个消息,则进度受最慢节点的限制。为了对失败或停止节点具有鲁棒性,应使用异步通信。使用双向通信的异步协议会导致死锁,因此单向协议是必需的。然而,使用单向异步协议,不再可能保证共识矩阵是双重随机的。同时,协调方案必须在平均水平上达成共识,以避免偏向优化目标。我们报告了在MPI集群中运行Push-Sum Distributed Dual Averaging进行凸优化的实验。实验说明了当某些节点不可靠并且可能失败或消息遇到时变延迟时,使用异步基于共识的分布式优化的好处。

特点

基于平均的、异步的、单向拓扑

Push-sum Distributed Dual Averaging Method

从鲁棒性和有效性来看,使用单向的(基于推送)通信并且不依赖双随机矩阵的算法是最理想的。

通过分布式优化算法,所有的节点在优化过程中具有相同的作用,从而消除了单点故障并增加鲁棒性。

分布式可以避免其他的开销,比如聚合生成树。

基于共识的分布式优化算法通常将局部梯度下降步骤与分布式平均的迭代交织以协调或同步网络上的值。这些算法的一般主题是将局部优化例程与分布式一致性算法交错以协调节点网络的最佳可分离功能,其组件分布在计算节点上。

DDA算法

$$z_i(t+1)=\sum^n_{j=1}{p_{ij}z_j(t)-g_i(t)}$$

$$x_i(t+1)=\Pi^{\psi}_{\chi}{(z_i(t+1),a(t))}$$

解释:\(g_i(t)\) 是 \(f_i\) 的偏导数,以上第一条算法就是基于普通的Push-sum算法。问题在于,并不能保证 \(z_i(t)\) 是在约束集内的,也就不能使用 \(z\) 来求偏导数。第二个式子就是表示将 \(z_i(t+1)\) 投影成 \(x_i(t+1)\)用以求 \(\partial f_i(\cdot) /\partial x_i(\cdot)\)

TP:投影算法表示:
$$\Pi^\psi_\chi(z,a)= \arg \min_{x\in\chi}{\{<z,x>,\frac{1}{a}\psi(x)\}}$$
\(\psi(x)\)满足大于等于0且在原点等于0.

问题

 --同步算法的实现比较困难。迭代的时间取决于最慢的智能的通信时间。并且,这不能用于time-varying系统。
       本质上,我们是在优化加权的目标函数\(\hat{f}(x)=\sum^n_{i=1}\pi_i f_i(x)\).如果取双随机转移矩阵,那么有\(1^TP=1^T\),这保证了分布是均衡的。

 --双向通信模型的问题:

 --通讯开销大

 --可能产生死锁

PS-DDA算法

基于Push-sum和DDA算法的改进版本,消除了算法对双随机矩阵的要求。
算法描述:
$$w_i(t+1)=\sum^n_{j=1}p_{ij}w_j(t)$$

$$z_i(t+1)=\sum^{n}_{j=1}p_{ij}z_j(t)-g_i(t)$$

$$x_i(t+1)=\Pi^\psi_\chi ( \frac{z_i(t+1)}{w_i(t+1)},a(t))$$

实验步骤的要点

单向性
  PS-DDA要求单向发送信息的性质,接收器生成收到信息\(w\)和\(z\)的信息和。

数值稳定性
  随着迭代次数的增加,权重会逐渐减小。但是,如果有的节点计算特别快,会导致无法更新。可以通过增加条件,当\(w_i(t)\)小于某个阈值的时候就停止更新。

步长去同步化
  随着转移矩阵和通信的异步化,步长也需要作出相应的改变。如果继续使用同步的步长,可能出现迭代次数相差巨大的步长差距也很大,不利于“Averaging”。因此,使用一个接近一样的步长是有必要的,最简单有效的方法就是使用一个同步的时钟来取代迭代次数计算步长的方法,这样可以帮助决策向量更快地收敛。实际过程中采用多少步长合适,需要根据网络情况以及计算能力自行设计。

消息处理机制
  --采用异步的算法,无疑会产生使用消息的策略问题。分析两种极端的策略:
      等待直到收到每一个邻居至少一次消息,再开始计算更新。显然这是违背异步原则的,因为每次都要等待最晚发送的那个邻居。

  --每次自动收取缓冲池的数据进行计算并清空缓冲池。这个策略的问题在于我们平均的只是“缓冲池”中的节点数据,而不是所有节点的数据。

  --还有一个值得注意的地方,对更旧的数据采用较小的权重来“Averaging”会加快收敛速度。

通信策略
  由于每个节点的CPU的计算能力不同,计算函数的复杂度也可能不同,导致的可能问题是:计算和通讯速度极度不平衡。如果有一个节点计算速度极快,那它频繁收取缓冲信息,那么网络的平均计算可能无法继续。设置最小通信时间来阻止计算速度过快的情况。阈值设置需要根据实际情况,如果节点情况差异很小,甚至不需要设置。

posted on 2019-05-11 21:26  风来水面  阅读(1188)  评论(0编辑  收藏  举报