关于parameter server的学习:
https://www.zybuluo.com/Dounm/note/517675
机器学习系统相比于其他系统而言,有一些自己的独特特点。例如:
- 迭代性:模型的更新并非一次完成,需要循环迭代多次
- 容错性:即使在每个循环中产生一些错误,模型最终仍能收敛
- 参数收敛的非均匀性:有些参数几轮迭代就会收敛,而有的参数却需要上百轮迭代。
而且工业界需要训练大型的机器学习模型,一些广泛应用的特定的模型在规模上有两个特点:
- 参数很大,超过单个机器的容纳的能力(大型LR和神经网络)
- 训练数据太大,需要并行提速(大数据)
这篇文章讲的也很不错:
https://www.csdn.net/article/2015-05-21/2824742
降低网络通信开销
异步执行
灵活的数据一致性模型
选择性通信
缓冲与压缩
容灾
Efficient Communication:高效的通信
Elastic Scalability:使用一致性哈希算法
Fault Tolerance and Durability: 节点故障是不可避免的
Ease of Use:全局共享的参数可以被表示成各种形式
- 2.2.1 (Key,Value) Vectors
- 2.2.2 Range Push/Pull
- 2.2.3 Asynchronous Tasks and Dependency
- 2.2.4 Flexible Consistency
- 2.2.5 User-defined Filters
常用的过滤器有significantly modified filter,即只push大于某一门槛的entry。也有KKT filter,利用最优化问题的一些条件过滤掉对weights影响不大的entry。
2.4 实现
2.4.1 Vector Clock
2.4.3 Replication and Consistency
一致性哈希算法:即将数据按照某种hash算法映射到环上,然后将机器按照同样的hash算法映射到环上,将数据存储到环上顺时针最近的机器上。