petuum框架的ssp模型简介

来源:互联网 发布:泰·劳森国王数据 编辑:程序博客网 时间:2024/06/05 05:17

前言

SSP模型是利用机器学习算法的容错性构建的一种并行计算模型,机器学习的容错性是指在误差容许的范围内,算法迭代计算过程中可以存在一定的误差。例如随机梯度下降算法,可以在每一次迭代过程中容许存在一定的噪音梯度,而前提是不影响算法的收敛性。在SSP 模型中,给定了一个时间窗口,并保证了两个线程维持在这个时间窗口内,这样使得误差保持在一定的范围,并且有理论收敛性的保证。


SSP模型


ssp模型

假设现在有p个workers(线程或进程),需要在一个时钟(如一次迭代)去通过累加的方法去更新一个一致性参数如xx+u,每个worker有自己的时钟,并在每次时钟结束时向服务器提交自己的更新,但是每一个worker可能不会立马得到其他worker的更新数据,这就是ssp模型的思想所在,每一个worker查询参数服务器所得数据可能是”旧”的,具体的给定一个用户自定义的时钟阈值s,ssp模型需要保证以下条件成立:

  • 快的worker和慢的worker时钟间隔是必须小于等于s,否则快的 worker 必须要停下来等待,这里快的 worker 并不是停下来不做任何事,而是去访问一次parameter server,使本地更新到最新值,这样做既满足时间窗口的条件,又可以更新最新值,减少噪音(图中worker 1在等worker 2);
  • 当一个 worker在时钟c时读取parameter server中x时,读到可能是旧值,即本地 cache里面值,而旧值中每个worker更新部分一定包含 c-s-1之前的(图中黑色部分),但也可能包含某些worker的c-s-1之后的更新数据(图中蓝色部分);
  • 每一个 worker每一次读 parameter server 时,读到的参数更新部分一定包含自己的上一次提交的那一部分,这就是所谓的“read-my-write(图中绿色部分);
  • 每一个 worker本地时钟是 s 整数倍时,去读取一次 parameter server,而不是访问本地 cache;
  • 每一个 worker提交更新时会更新本地时钟(编程时需要自己调用Clock操作),同时更新本地 cache 的值。

以上就是ssp模型基本条件,简单的说,ssp模型要求快的worker一旦突破了用户给定的时间窗口就必须停下来去访问一次parameter server,得到最新的参数,这样慢的worker访问cache一定可以慢慢追上快的worker,另一方面,每一个worker得到parameter server的参数更新的部分的时间窗口一定包含[0,c-s-1],可能包含的时间窗口[c-s,c+s-1],这里可能有几种情况,有可能是有些worker很快通过了下一个s整数倍,去访问了一次parameter server,也可能是出现了快的worker去等待慢的worker去访问了parameter server,而时间s整数倍去访问parameter server是为了避免所有的worker一直都没有一个worker去突破时间窗口。

基于ssp模型的矩阵分解

下面介绍如何利用基于ssp模型随机梯度下降算法去求解矩阵分解问题,矩阵分解问题如下

minL,R(a,b)DataDijk=1KLikRkj2
利用梯度下降求解如下
OMFLik=(i,j)Dataδ(a=i)[2DabRkb+2LaRbRkb]
OMFRkj=(a,b)Dataδ(b=j)[2DabLak+2LaRbLak]
其中OMF是需要求解的最优化问题,δ(a=i)表示当a=i时为1否则为0,一般情况下数据量较多时,D矩阵的高大于宽的,因此我们可以将DL按行划分到每一个节点上,同时R是每一个节点所共有的一致性变量即x:=R,并保存在parameter server中,结合ssp模型,每一个worker每次迭代去访问parameter server得到R,然后再更新得到梯度并commit到parameter server端,而每次访问parameter server会满足ssp模型条件。

收敛性分析

给定一个s值,则

x˘p,c=x0+c=1cs1p=1Puc,pguaranteed prewindow updates+[c=csc1uc,p]guaranteed readmywrites updates+(c,p)p,cuc,pbesteffort inwindow updates
其中x˘p,c表示p worker在c时钟时读到parameter server的数据,x0是初始值,而后面的累加梯度(假设是梯度下降算法)有三个部分“guaranteed pre-window updates”表示worker p必定能读到的梯度更新部分,其中包括其他的worker的更新,就是上图中黑色部分;“guaranteed read-my-writes updates”表示worker p自己更新的部分,上图中绿色部分;“best-effort in-window updates”表示可能读到的其他worker更新的部分,上图中蓝色部分。
相比于BSP模型而言,每一个worker会同步更新的值,也就是每次时钟每一个worker在计算更新值之前得到的参数都是相同的,并且worker的时钟也是一致的,那么
xt=x0+t=0tut,where ut:=ut mod P,t/P
这里等价于串行去累加每一个worker的更新值,那么按同样的方式,ssp模型中当s1时,
x˘t=xtituimissing updates+ituiextra updates
可以看出其中包含了相对于BSP miss update和extra update,并且t+t2s(P1),min(tBt)max(1,t(s+1)/P),max(tt)t+sP,直觉上来讲更新值误差有界应该是算法收敛的主要保证,另外论文给出了基于ssp模型的SGD算法的regret界如下
R[X]:=[1Tt=1Tft(x˘t)]f(x)4FL2(s+1)PT
其中L是Lipschitz常数,两个点之间的距离D(xx)F,详细的证明过程请参考论文。

原创粉丝点击