[Distributed ML] Parameter Server & Ring All-Reduce
Resource
ParameterServer入门和理解【较为详细,涉及到另一个框架:ps-lite】
一文读懂「Parameter Server」的分布式机器学习训练原理
并行计算与机器学习【很有必要过一遍大佬的视频】
并行计算与机器学习课程所有视频:
1. 并行计算基础以及MapReduce: https://youtu.be/gVcnOe6_c6Q
2. 参数服务器、去中心化: https://youtu.be/Aga2Lxp3G7M
3. Ring All-Reduce: https://youtu.be/rj-hjS5L8Bw
4. 联邦学习: https://youtu.be/STxtRucv_zo
Why?
epoch 扫一遍大数据,太耗时了,需要并行计算。
To reduce wall clock time.
Linear Predictor
f(x) = xTw, 所谓训练就是通过收敛,求w的过程。
计算梯度
加速计算梯度,并行。How?
基本概念
一、大纲要点
通信 Communication
<Share memory> or <Message passing>
系统架构 Architecture
Client-Server Architecture or Peer-to-Peer Architecture
同步或异步 Synchronization
-- 同步 --
- Apache MapReduce, 另外采用同步的 bulk synchronous parallel
- Apache Spark, 容错,快,但机器学习不高效。
MapReduce模式 计算梯度。
broadcast --> reduce --> 更新参数。
但通信耗时的(communicaiton complexty, latency),且加速比的趋势会逐渐平滑。
straggler:导致“大家”都等最慢的那一个stragger。
-- 异步 --
Synchronous Parallel Gradient Descent.
Using Parameter Server
异步梯度下降 的 Parameter Server,
也是 client-server architecture, message-passing communication
但用的是 asynchronous。
典型的实现:Ray
- 同步与异步模型的比较
数据并行
其实就是分割数据为小份。
二、Parallel Programming Models
- MapReduce
- Parameter Server
- Decentralized Network
- 每个节点都有自己的一份完整数据。
- 图的连接越紧密,收敛越快。自然地,全连接最好。
与 Distributed Computing 的区别?
基本都在混用,没有明显的界限。
Parallel Computing in TensorFlow
TensorFlow Strategies
- MirroredStrategy【一机多个GPU,同步随机梯度下降】
- TPUStrategy
- MultiWorkerMirroredStrategy
- CentralStorageStrategy
- ParameterServerStrategy【适合分布式多台机器】
- OneDeviceStrategy
一、Parallel Training CNN on MNIST by MirroredStrategy
一机4个GPU,同步随机梯度下降。
from tensorflow.pyton.client import device_lib device_lib.list_local_device()
# 一块cpu,四块gpu
from tensorflow import distribute strategy = distribute.MirroredStrategy()
m = strategy.num_replicas_in_sync
print('Number of devices: {}'.format(m)) import tensorflow as tf def scale(image, label):
image = tf.cast(image, tf.float32)
image /= 255
return image, label import tensorflow_datasets as tfds datasets, info = tfds.load(name='mnist', with_info=True, as_supervised=True)
mnist_train = datasets['train'].map(scale).cache()
mnist_test = datasets['test'].map(scale)
sgd用比较小的batch 就好了。
这里在此遇到 strategy.scope(),提供了number of gpu的信息。
然后通过summary可看网络结构。
编译模型:
with strategy.scope():
model.compile(loss='sparse_categorical_crossentropy',
optimizer=keras.optimizers.RMSprop(learning_rate=1E-3),
metrics=['accuracy'])
二、Ring All-Reduce 原理
Horovod 是基于Ring-AllReduce方法的深度分布式学习插件,以支持多种流行架构包括TensorFlow、Keras、PyTorch等。这样平台开发者只需要为Horovod进行配置,而不是对每个架构有不同的配置方法。
类似 MapReduce,但子节点不知道相加后的结果(15),但 ring all-reduce会让大家都知道。
E.g, all-reduce via reduce+broadcast(tf的内置)--> 通过转两圈,每个gpu都得到"梯度sum"。
E.g, all-reduce via all-to-all communication. (不是很流行)
优化后,跟gpu的块数无关。
Federated Learning 联邦学习
一、基本概念
属于 distributed learning。核心:如何减少通信次数,可以接受加大client端的计算量。
二、Federated Average Learning
FedAvg的有效性 已被证明。
On the Convergence of FedAvg on Non-IID Data
分布式随机梯度的“安全性”
Federated Average Learning 的"安全性”。
梯度 的本质就是原始数据做了一个变换而已,几乎携带了所有原始信息。
即使是 FedAvg也会被攻击有效。
三、总结
三个研究方向。
关于毒药样本
Data Evasion (test time) v.s. Data Poisoning(training time)
Parameter Server 专题
2014年分布式可扩展的Parameter Server被 沐神 @李沐提出,几乎完美的解决了机器模型的分布式训练问题,时至今日,parameter server不仅被直接应用在各大公司的机器学习平台上,而且也被集成在TensorFlow,MXNet等主流的深度框架中,作为机器学习分布式训练最重要的解决方案。
一、沐神出世
一致性与并行效率之间的取舍
在上篇文章介绍spark的并行梯度下降原理时,曾经提到spark并行梯度下降效率较低的原因就是每个节点都需要等待其他所有节点的梯度都计算完后,master节点汇总梯度,计算好新的模型参数后,才能开始下一轮的梯度计算,我们称这种方式为“同步阻断式”的并行梯度下降过程。
“同步阻断式“的并行梯度下降虽然是严格意义上的一致性最强的梯度下降方法,因为其计算结果和串行计算的过程一致,但效率过低,各节点的waiting时间过长,有没有办法提高梯度下降的并行度呢?
Paprameter Server采取的方法是用“异步非阻断式”的梯度下降替代原来的同步式方法。
异步梯度更新的方式虽然大幅加快了训练速度,但带来的是模型一致性的丧失,也就是说并行训练的结果与原来的单点串行训练的结果是不一致的,这样的不一致会对模型收敛的速度造成一定影响。所以最终选取同步更新还是异步更新取决于不同模型对于一致性的敏感程度。这类似于一个模型超参数选取的问题,需要针对具体问题进行具体的验证。
异步更新带来的梯度不一致性的影响没有想象中那么大
多server节点的协同和效率问题
采用了server group内多server的架构,每个server主要负责一部分的模型参数。模型参数使用key value的形式,每个server负责一个key的range就可以了。
权重管理平台
大家要清楚的是,Parameter Server仅仅是一个管理并行训练梯度的权重的平台,并不涉及到具体的模型实现,因此PS往往是作为MXNet,TensorFlow的一个组件,要想具体实现一个机器学习模型,还需要依赖于通用的,综合性的机器学习平台。
二、概念辨析
若干概念和工具的细节、使用搞清楚。
Ray可以实现 PS:https://docs.ray.io/en/master/auto_examples/plot_parameter_server.html
AWS-SAMPLE:Sagemaker Distributed Training with Parameter Server and Horovod
未来Uber的技术重点:Distributed Deep Learning with Horovod on Ray - Travis Addair, Uber
三、Challenges using DL at Scale (Horovod)
How Ray Can Help
horovod.ray
allows users to leverage Horovod on a Ray cluster.
Currently, the Ray + Horovod integration provides a RayExecutor API.
基础例子
Executor Setup
Hello World
高级例子
Stateless API
Stateful API
更多例子,请见视频。
需要专题理解:horovod + ray。
End.
[Distributed ML] Parameter Server & Ring All-Reduce的更多相关文章
- 转:Parameter Server 详解
Parameter Server 详解 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 更多相关博客请猛戳:http://blog.csdn.net/c ...
- 【分布式计算】MapReduce的替代者-Parameter Server
原文:http://blog.csdn.net/buptgshengod/article/details/46819051 首先还是要声明一下,这个文章是我在入职阿里云1个月以来,对于分布式计算的一点 ...
- [Distributed ML] Yi WANG's talk
王益,分布式机器学习的践行者,他的足迹值得后来者学习. 膜拜策略: LinkedIn高级分析师王益:大数据时代的理想主义和现实主义(图灵访谈)[心路历程] 分布式机器学习的故事-王益[历史由来] 分布 ...
- MXNet之ps-lite及parameter server原理
MXNet之ps-lite及parameter server原理 ps-lite框架是DMLC组自行实现的parameter server通信框架,是DMLC其他项目的核心,例如其深度学习框架MXNE ...
- parameter server学习
关于parameter server的学习: https://www.zybuluo.com/Dounm/note/517675 机器学习系统相比于其他系统而言,有一些自己的独特特点.例如: 迭代性: ...
- ROS参数服务器(Parameter Server)
操作演示,对参数服务器的理解:点击打开链接 rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据.参数服务器能够存储整型.浮点.布尔.字符串.字典和列表 ...
- 百度DMLC分布式深度机器学习开源项目(简称“深盟”)上线了如xgboost(速度快效果好的Boosting模型)、CXXNET(极致的C++深度学习库)、Minerva(高效灵活的并行深度学习引擎)以及Parameter Server(一小时训练600T数据)等产品,在语音识别、OCR识别、人脸识别以及计算效率提升上发布了多个成熟产品。
百度为何开源深度机器学习平台? 有一系列领先优势的百度却选择开源其深度机器学习平台,为何交底自己的核心技术?深思之下,却是在面对业界无奈时的远见之举. 5月20日,百度在github上开源了其 ...
- Gazebo: Could not find parameter robot_description on parameter server
robot_state_publisher looks for the parameter "robot_description" by default. The robot_st ...
- parameter server
http://zeromq.org ZeroMQ \zero-em-queue\, \ØMQ\: Ø Connect your code in any language, on any platfo ...
随机推荐
- 制作一个轻量级的状态管理插件:Vue-data-state
Vuex 是不是有点繁琐? Vuex 是针对 Vue2 来设计的,因为 option API 本身有很多缺点,所以 Vuex 只好做各种补丁弥补这些缺点,于是变得比较"复杂". 现 ...
- AI数学基础之:P、NP、NPC问题
目录 简介 P问题 NP问题 NP问题的例子 有些NP问题很难解决 NPC问题 NP-hard P和NP问题 简介 我们在做组合优化的时候需要去解决各种问题,根据问题的复杂度不同可以分为P.NP.NP ...
- 号外号外!DevUI Admin V1.0 发布啦!
4月是鸟儿的月份,是木棉花的月份,是 DevUI Admin 发布的月份. 广受大家期待的 DevUI Admin 终于迎来了第一个开源 Angular 版本! DevUI Admin 是一个企业级中 ...
- 一台window服务器部署多个tomcat(超简单配置)!!!
1.首先准备好已经安装好的jdk环境,点击查看JDK安装. 2.准备好一个全新的tomcat,我这里使用的是tomcat-7.0.109.rar绿色版. 3.解压文件,并复制成三份.我这里是放在F:\ ...
- 032- for循环语句
问题 请在控制台里面打印10次HelloWorld. 这时可能你会这么写: System.out.println("helloworld"); System.out.println ...
- 软件篇-04-OMPL和FCL用于SLAM轨迹规划
使用OMPL内置的infoRRTstar算法模块和FCL碰撞检测库实现当前点和目标点的轨迹规划, 参考文章:https://www.cnblogs.com/shhu1993/p/7062099.htm ...
- UVA11389巴士司机问题
题意: 有n个巴士司机,然后有2n个活,其中有n个是上午,n个是下午,每个自己都要选择一个上午的和一个下午的,每个活都有驾驶距离,如果一个司机每天的驾驶距离大于d,那么超出的部分就要每个单 ...
- Windows核心编程 第2 4章 异常处理程序和软件异常
异常处理程序和软件异常 C P U引发的异常,就是所谓的硬件异常(hardware exception).操作系统和应用程序 也可以引发相应的异常,称为软件异常(software exception) ...
- wordpress如何隐藏后台位置?
2017-02-08 20:43:20 言曌 阅读数 3585更多 分类专栏: WordPress 转载 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本 ...
- 0803-PyTorch的Debug指南
0803-PyTorch的Debug指南 目录 一.ipdb 介绍 二.ipdb 的使用 三.在 PyTorch 中 Debug 四. 通过PyTorch实现项目中容易遇到的问题 五.第八章总结 py ...