Parameter-Server note
本文最后更新于:2024年8月14日 下午
这篇笔记是对李老师在B站的视频参数服务器(Parameter Server)逐段精读【论文精读】的一点笔记,感谢以上老师的视频。
这一篇系统方向的文章,也是李老师自己的文章捏~
系统方向介绍
系统:operating system
顶会:OSDI、SOSP
小方向很多的一个统称方向
Scaling Distributed Machine Learning with the Parameter Server
这篇工作设计了一个分布式的机器学习框架,其中
- worker nodes存储着数据,进行训练
- server nodes维护了一个全局的模型参数
通过这套系统,在PB级的真实数据上训练了十亿级参数量的模型,现在看也是很大的模型
随着机器学习的发展,由于数据量和模型复杂度的增长,分布式训练和推理成为一个必须的事情。(这篇文章是8年前写的,现在我们会觉得pytorch等框架里DDP等训练手段是一个很常规的事情,也证实了这篇文章的预测)
Parameter Server
- Gen1(Alexander):LDA
- Gen2(Jeff):Distbelief,for ml,TensorFlow的前身
- Gen3(Mu):this paper,for general ml
高效的分布式系统需要解决问题
- 大量的数据通讯:所有计算节点都需要不断地对模型参数进行访问
- 分布式系统的datastore所提供的key-value pairs的抽象程度不够(过于细粒度)
- 大量全局同步:每个batch之间的对齐
- 容灾处理(运维人做梦都在想的事):越大规模训练中越容易出现
算法分布化示意

- Task Scheduler:控制所有worker的调度
- Workers:单个进程(现在DDP就是每个进程只去调度一个GPU实现多卡训练的,避免多线程中资源分配不均等等问题)
- 加载local数据,获取模型参数(pull),计算local grad,返回local grad(push)
- 灵感来自git
- 加载local数据,获取模型参数(pull),计算local grad,返回local grad(push)
- Servers:额外的存储处理进程,而且可以对于每个Worker只给与所需要的set(由于模型的稀疏性,只需要相对于data有意义的参数),再次增加高效性
- 分发模型参数,汇总所有local grad为global grad,进行优化

整个通用任务架构图

Parameter Server contribution
在实现高性能的同时抽象为一个组件尽可能适配不同算法
- User-Defined Functions on the Server
Efficient communication:通讯压缩
Flexible consistency models: balance algorithmic convergence rate and system efficiency
Elastic Scalability:训练时弹性拓展
Fault Tolerance and Durability:容灾
- Vector clocks:由于异步性造成的参数差异问题将其缩小到Vector层面进行记录,减小了存储量
Ease of Use:将全局参数抽象为一个向量矩阵以便调用
- (Key,Value) Vectors

数据通讯问题
- 工作将数据以segment为单位进行通讯,增强了通讯的高效性(range push and pull)
- User-defined Filters过滤一些不重要的数据减小通讯量 significantly modified filter
- 浮点压缩,精度缩小等
- key值缓存与哈希比对 hash ring(网络很经常用的东西)
RPC与Flexible consistency
remote procedure call 远端调度:通过异步执行(JS就是一个经典的异步执行语言)
pull 与 push 采用异步执行设计(异步式并行+回调+等待完成啥的,JS中很基本的概念)
通过灵活地设计independent实现了Flexible consistency

如C中,容忍一定的延迟+参数更新连续性的假设=Flexible consistency,这样一个有向无环图(DAG)可以灵活的自定义框架的Flexible consistency
容灾问题
server
current hash ring
对于server node进行Live replication:异地备份

每一个server维护自己部分的hash同时备份前两段数据
每次push后当所有节点完成之后才会ack(一致性)
为了减少带宽多个push在节点汇聚之后再往后传播(延迟换带宽)
同时可以灵活的插入和删除
worker
Worker Management
- 任务重发/换发
Novelty
将两个不容易match的技术通过合适的选择将其高效match本身就是一种novelty,具体来说就是Flexible consistency models对consistency与system efficiency做了一个trade off。
第一个泛用性的工业级框架
Result
636TB,800台worker,200台server

absorb experiment
Filters

- 压缩
- caching:缓存哈希
- KKT:小梯度过滤
Flexible consistency

comment:
- 最大的contribution是解决了沐神的毕业问题(误)
- 挖矿比做研究实用性高(大误)
- 对于大规模学习来说学术界不是一个好地方,只有工程界有那么大的资源和需求,还有很多特有的异常情况,有一点类似开发中的敏捷开发与公司级项目之间的区别
- 随着机器学习的发展,由于数据量和模型复杂度的增长,分布式训练和推理成为一个必须的事情。(这篇文章是8年前写的,现在我们会觉得pytorch等框架里DDP等训练手段是一个很常规的事情,也证实了这篇文章的预测)
- 与人分享的时候需要注意对方的知识体系,即使只是一些小方向的交叉,代沟也可能比较大,需要进行充分的背景铺垫,尽量避免不必要的专业知识涉及。
- 系统设计原则
- 实用
- 简洁