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之间的对齐
  • 容灾处理(运维人做梦都在想的事):越大规模训练中越容易出现

算法分布化示意

image-20220423011123555

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

image-20220423012147193

整个通用任务架构图

image-20220423012730135

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

image-20220423010030723

数据通讯问题

  • 工作将数据以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

image-20220423015221530

如C中,容忍一定的延迟+参数更新连续性的假设=Flexible consistency,这样一个有向无环图(DAG)可以灵活的自定义框架的Flexible consistency

容灾问题

server
current hash ring

对于server node进行Live replication:异地备份

image-20220423021703146

  • 每一个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

image-20220423022706069

absorb experiment

Filters

image-20220423023024580

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

image-20220423023430033

comment:

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

Parameter-Server note
https://asteriscus.cat/posts/980ea3b5/
作者
Asterisk
发布于
2022年4月22日
许可协议