Angel 实现FFM 一、对于Angel 和分布式机器学习的简单了解
Angel是腾讯开源的一个分布式机器学习框架。是一个PS模式的分布式机器学习框架。
https://github.com/Angel-ML/angel 这是github地址。
我了解的分布式机器学习概述:
对于分布式机器学习,有些简单的了解,听过一些概念。最近正在看《分布式机器学习 算法、理论与实践》这本书,我觉得这本书很不错。一下内容也是我的一个读书总结。
分布式机器学习分为 数据和模型划分模块,单机优化模块,通信模块,数据和模型的聚合模块。
分布式机器学习从并行方式来说分为数据并行和模型并行。数据并行是指训练数据规模太大,无法存储在一个节点上,需要把这些数据分配到各个机器上。
数据划分的方式分为对训练样本进行划分和对每个样本的特征维度进行划分。
对训练样本进行划分也分为随机采样法和基于置乱切分的方法。随机采样法是通过有放回抽样,根据每个节点的容量为期分配相应的样本数。这种方式可以保证每个节点的局部数据和整体数据是独立同分布的。但是这么做也有弊端就是如果数据量大,代价比较高。另一个是某些低频的样本可能会在抽样的过程中被遗漏。
另一种是根据基于置乱切分的方法,也就是将样本乱序排列,然后根据每个节点机器的容量,为其分配相应数量的样本。这个方法实现简单,效率相对较高。每个节点在训练的时候仅适用本地数据。在训练一定轮数之后也可以再重新合并数据,重新划分一次。这种方式无限等价于无放回抽样,但是独立同分布的假设是等价于有放回抽样。但是这种方式应该是实际使用比较多的方式。
模型并行,主要是指模型如何在分布式环境下进行并行,是一个节点上包含整个模型还是每个节点只包含一部分模型。主要是线性模型的并行和神经网络的并行。在Angel1.5的LR和FM中模型是保存在参数服务器,每次节点从参数服务器获取所需的一部分参数,在需要更新参数时候将更新的部分推送到参数服务器。深度模型的话一般可以按网络的层次进行划分。
对于分布式机器学习的学习算法,我理解有两种情况。一种是每个节点使用本地的单机机器学习优化算法,然后将各个节点训练的模型进行融合。这种在Angel1.4实现FM LR是这种方式。这种模型融合的方式对于线性模型来说,如果损失函数关于参数是凸函数时,各个部分的模型之间直接加和求平均是比单个模型要好,并且有收敛的理论保证。但是对于神经网络这种就不成立了。另一种是使用分布式机器学习算法,根据各个节点计算的梯度来更新权重。这种我能想到比较直观的就是PS模式,由参数服务器来接受梯度更新模型的参数。
通信部分的话,通信部分按拓扑结构划分,可以分为1、基于迭代Map/Reduce的通信拓扑,比如SparkMLib。优点是可以利用现有的分布式系统,简单高效的完成分布式学习任务。但是运算节点和模型存储节点没有很好的隔离,只能支持同步的通信方式,也就是所有mapper完成之后才开始进入reduce阶段。
2、基于参数服务器的通信拓扑。这种是把工作节点和模型节点分开。工作节点负责处理本地的训练样本,从参数服务器获取最新的参数,或者将参数更新发送到参数服务器。这种的好处是各个工作节点之间不需要保持同步了,工作节点与服务器之间的通信方式更加灵活。多个参数服务器可以分开存储一个较大的模型,每个参数服务器存储模型的一部分。
3、基于数据流的通信拓扑,这种的代表是tensorflow。这种我理解是把模型抽象成一个计算图模型,用一个有向无环图来表示。图中的每个节点表示一个数据处理的算子,边表示数据流动的方向。
Angel 实现FFM 一、对于Angel 和分布式机器学习的简单了解的更多相关文章
- Spark MLBase分布式机器学习系统入门:以MLlib实现Kmeans聚类算法
1.什么是MLBaseMLBase是Spark生态圈的一部分,专注于机器学习,包含三个组件:MLlib.MLI.ML Optimizer. ML Optimizer: This layer aims ...
- 分布式机器学习系统笔记(一)——模型并行,数据并行,参数平均,ASGD
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 文章索引::"机器学 ...
- 微软分布式机器学习工具包DMTK——初窥门径
在现在机器学习如日中天的大背景下,微软亚洲研究院的实习岗位中,机器学习组的工作也是维护DMTK,参与算法改进,那么在此之前我们得了解DMTK是个啥. DMTK由一个服务于分布式机器学习的框架和一组分布 ...
- Adam:大规模分布式机器学习框架
引子 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/46676515 又是好久没写博客,记得有一次看Ng大神的訪谈录,假设每周读三篇论文, ...
- 分布式机器学习框架:MxNet 前言
原文连接:MxNet和Caffe之间有什么优缺点一.前言: Minerva: 高效灵活的并行深度学习引擎 不同于cxxnet追求极致速度和易用性,Minerva则提供了一个高效灵活的平台 ...
- 8.6.zookeeper应用案例_分布式共享锁的简单实现
1.分布式共享锁的简单实现 在分布式系统中如何对进程进行调度,假设在第一台机器上挂载了一个资源,然后这三个物理分布的进程都要竞争这个资源,但我们又不希望他们同时 进行访问,这时候我们就需要一个协调器, ...
- 分布式机器学习:逻辑回归的并行化实现(PySpark)
1. 梯度计算式导出 我们在博客<统计学习:逻辑回归与交叉熵损失(Pytorch实现)>中提到,设\(w\)为权值(最后一维为偏置),样本总数为\(N\),\(\{(x_i, y_i)\} ...
- 分布式机器学习:同步并行SGD算法的实现与复杂度分析(PySpark)
1 分布式机器学习概述 大规模机器学习训练常面临计算量大.训练数据大(单机存不下).模型规模大的问题,对此分布式机器学习是一个很好的解决方案. 1)对于计算量大的问题,分布式多机并行运算可以基本解决. ...
- 分布式机器学习:模型平均MA与弹性平均EASGD(PySpark)
计算机科学一大定律:许多看似过时的东西可能过一段时间又会以新的形式再次回归. 1 模型平均方法(MA) 1.1 算法描述与实现 我们在博客<分布式机器学习:同步并行SGD算法的实现与复杂度分析( ...
随机推荐
- 二叉树各种相关操作(建立二叉树、前序、中序、后序、求二叉树的深度、查找二叉树节点,层次遍历二叉树等)(C语言版)
将二叉树相关的操作集中在一个实例里,有助于理解有关二叉树的相关操作: 1.定义树的结构体: typedef struct TreeNode{ int data; struct TreeNode *le ...
- 详探TextRange对象--查找与选择(转载)
TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本.文本范围让您可以选择性的将字符.单词和句子从文档中挑选出来.TextRange对象 ...
- postgresql----表分区
--下面的描述不记得在哪里抄来的了?! 表分区就是把逻辑上一个大表分割成物理上的多个小块,表分区可提供如下若干好处: 1.某些类型的查询性能可以得到极大提升. 2.更新的性能可以得到提升,因为表的每块 ...
- ASP.NET的页面执行过程
对于ASP.NET来说,用户访问的页面,都由服务器IIS处理,具体的处理过程如下图: 对于用户模块还是有很多的东西没有写,未完待续...
- Mysql和sqlite数据库操作心得
经过最近一段时间的实际工作发现,原来只是认为Mysql和sqlite是分别独立的,数据传输和共享或有障碍,其实这是一个误区.当我们想要将sqlite中的数据存放到mysql中,最好的方法就是利用中间文 ...
- Oracle AWR之-enq: TX - allocate ITL entry
今天收到压力测试期间awr报告,测试人员要我看看数据库是否有可以优化的地方,数据库服务器配置信息:CPU:32*8,内存:480g 单实例数据库:oracle 11.2.0.4.具体分析过程如下: 可 ...
- Tickets---hdu1260 (简单dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260 题意就是有n个人排队买票,每个人需要的时间是a[i] (1=< i <=N),但是现 ...
- UEM用户行为了如指掌!
“千呼万唤始出来”,万众期待的UEM正式与宝宝们见面啦~~~ 今天很多人来问小编,Web咋不见了,表急,Web并没有消失,而是重磅升级为UEM啦!!! 什么是UEM呢?UEM全称User Experi ...
- kubernetes实战(三):k8s v1.11.1 持久化EFK安装
1.镜像下载 所有节点下载镜像 docker pull kibana: docker tag kibana: docker.elastic.co/kibana/kibana: docker pull ...
- window 安装 Twisted 遇到的问题
scapy 需要Twisted17.1.0, Twisted报错 building 'twisted.test.raiser' extension 用Twisted 16.1.0 可以安装,使用时 I ...