工作一直在使用分布式的机器学习框架,有必要了解一些基本的原理,就先从李沐大佬的文章入手,写个笔记作为记录。
主要贡献
第三代开源的Parameter Server架构,具有以下特性
1)高效的通信
2)灵活的一致性模型
3)弹性可拓展能力
4)系统容错能力
5)易用性
工程挑战
通信:访问巨量的参数,需要大量的网络带宽支持。
容错:分布式计算需要较好的容错能力,failover机制。
相关工作
第一代的参数服务器架构
VLDB 2010,灵活性和性能都比较欠缺,使用memcached存储作为同步机制。
YahooLDA实现了一些基本原语的定义,包括update、set,get等
第二代的参数服务器架构
Distbelief(Google,2012)只针对特殊应用,不够通用
第三代的参数服务器架构
Petuum、PS server更加通用
本问提出的架构结合各家所长,解决当前限制
Spark Mlib,包含中间状态的存储,有很好拓展性,但是受限于BSP的一致性。
GraphLab,异步通信,但是有结构限制,拓展性不太好。
Piccolo,有完善的参数aggregate,但缺少消息压缩、备份、一致性。
目的
风险最小化,风险就是预测误差的衡量,预测误差即模型对未来的样本的预测误差。