首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅析参数服务器

走进强化学习

王永杰 I 文

近些年来,参数服务器(parameter server)这个词汇频频出现在各大顶级期刊,会议,学术报告上,成为研究热点之一。如此前沿的名词背后究竟隐藏着什么秘密?本文就参数服务器这一热点话题进行简要分析,带领读者揭开其神秘面纱。

参数服务器是什么?

概括来说,参数服务器是一个为了解决分布式机器学习问题的编程框架[1]。该框架主要包括服务器端(Server ),客户端(Client)和调度器(Scheduler)。服务器端的主要功能是存放机器学习任务的参数,接收客户端的梯度,对本地参数进行更新。客户端的主要功能有两点:一是从服务器端获取当前最新的参数;二是,使用本地或者远程节点的数据和从服务器端获取的参数,计算得到预测值,然后根据设定的损失函数,计算关于训练参数的梯度,最后将梯度发送给服务器端。调度器的主要功能是管理服务器,客户端节点,完成节点之间数据同步,节点添加/删除等功能。一个简化的参数服务器的流程图如图1所示:

图 1:参数服务器流程图

这里需要注意一点,图中使用了共享的参数服务器端。这是因为如果仅使用单一的服务器端,多个客户端不断地从此服务器获取参数,推送梯度,会导致服务器端网络拥塞,部分数据丢失。此外整个系统还有存在一个或若干控制节点,用来管理服务器端和客户端。整个参数服务器最主要的操作就是图中的Pull(从服务器获取参数)和Push(推送梯度到服务器)。通过不断迭代执行Pull和Push操作,最小化损失函数,就是简易的参数服务器原型。

为什么要使用参数服务器?

说到参数服务器,不得不说起深度学习。众所周知,很多深度学习任务(例如:分类任务,目标检测,人脸识别等)都依靠大数据来训练,海量参数来提高模型的拟合能力。对于世界上顶尖的科技公司(Facebook,Google,Baidu等)来说,训练数据从来都不是困难,他们甚至具有多达TB,PB(1TB=1024GB,1PB=1024TB)量级的数剧。这样规模的数据在单机上训练和预测是明显不可能的。此外,他们还拥有丰富的计算资源(CPU/GPU集群)来支持大规模计算。因此,如何有效的利用数据和计算资源,提高模型效率,成为急需解决的问题。于是,参数服务器应运而生。参数服务器提供了一条可行解决思路:将数据和训练参数分散到不同的计算节点上,分布式训练。

设计一个参数服务器需要注意什么问题?

在实际的应用中,设计者需要考虑如下几个方面:

1. 通信:针对实际应用场景,选取同步或者异步的通讯方式。一般来说,参数服务器采用异步通信,Server节点无须停下来等待所有Worker节点都完成梯度计算,不排除例外情况。这样做能够减少通信延迟,提高计算效率,也能够减少约束,方便研究人员进行后续优化。

2. 一致性:一致性用来衡量不同节点之间的数据是否一致。强一致性意味着不同节点间的同步成本和时延提高。在设计参数服务器时,考虑到深度学习此类应用对数据一致性不敏感,因此研究人员可以通过设计宽松的一致性模型(flexible consistency model),来平衡系统性能和算法收敛。

3. 可扩展性:设计参数服务器需要考虑动态的插入移除某些节点,不能因为某些节点加入,移除或者故障导致系统重启。

4. 容错:在分布式集群中,难免会出现节点故障,因此需要系统能够快速从非灾难性机器故障中恢复。

5. 易用性:设计参数服务器要考虑用户的需求和使用习惯,减少用户的学习成本。使用户能够集中精力专注到自己的研究领域,而不是花大量时间学习使用手册。

参考资料:

[1] Mu Li, David G. Andersen, Jun Woo Park,Alexander J. Smola, Amr Ahmed, Vanja Josifovski, James Long, Eugene J. Shekita,and Bor-Yiing Su. 2014. Scaling distributed machine learning with the parameterserver. In Proceedings of the 11th USENIX conference on Operating SystemsDesign and Implementation (OSDI'14). USENIX Association, Berkeley, CA, USA,583-598.

[2] Eric P. Xing, Qirong Ho,Wei Dai, Jin Kyu Kim, Jinliang Wei, Seunghak Lee, Xun Zheng, Pengtao Xie,Abhimanu Kumar, Yaoliang Yu Petuum: A New Platform for Distributed Machine Learningon Big Data IEEE Transactions on Big Data, Volume 1, No. 2, Pages 49-67, 2015

[3] PhilippMoritz∗, Nishihara R , ∗ Stephanie Wang, et al. Ray:A Distributed Framework for Emerging AI Applications[J]. 2017.

[4] https://github.com/mlflow/mlflow.git

[5] Jie Jiang, Lele Yu,Jiawei Jiang, Yuhong Liu and Bin Cui. Angel: a new large-scale machine learningsystem. National Science Review (NSR), 2017

[6] Olston, Christopher, et al."TensorFlow-Serving: Flexible, High-Performance ML Serving." (2017).

本文版权归作者所有。

新加坡南洋理工CAP组

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190205G0CTJI00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券