angel

psFunc的整体设计


根据整体的架构图,GetFunc和UpdateFunc是Angel中,最基本的2个psf类。我们不建议用户直接继承它们,从头开始写自定义的psFunc,但是了解它们的功能和运行,对于写出合理而高效的psFunc,有一定的帮助。

GetFunc(参数获取)

Pull类的请求,分为3个阶段:

  1. 请求划分

    • 参数服务器的接口,操作的是整个模型参数。而模型参数是被划分成多个分区存储在不同的PS实例中的,因此在请求阶段,就要进行划分了

    • PS Client(参数服务器客户端)进行请求划分,生成一个请求列表,这个请求列表中,每一个请求都和一个模型参数分区对应

  2. 请求发送
    • Angel将请求列表中的所有请求,发送给模型参数分区所在的PSServer。
    • PSServer以模型参数分区为单位执行参数获取和更新操作,并返回相应的结果。
  3. 结果合并
    • 合并所有的模型分区级结果,得到最终的结果并返回

UpdateFunc(参数更新)

Update类的请求,也分为3个阶段:

  1. 请求划分

    PSClient进行请求划分,生成一个请求列表,这个请求列表中的每一个请求都和一个模型参数分区对应。

  2. 请求发送

    • 将请求列表中的所有请求发送给模型参数分区所在的PS实例。
    • PS实例以模型参数分区为单位执行更新操作
  3. 等待完成 等待所有请求完成后返回

无论是Get还是Update,具体的这3个阶段,其过程都是可以自定义的,从而实现千变万化的psFunc。