Angel 实现FFM 一、对于Angel 和分布式机器学习的简单了解

Angel是腾讯开源的一个分布式机器学习框架。是一个PS模式的分布式机器学习框架。

https://github.com/Angel-ML/angel   这是github地址。

我了解的分布式机器学习概述:

      对于分布式机器学习,有些简单的了解,听过一些概念。最近正在看《分布式机器学习 算法、理论与实践》这本书,我觉得这本书很不错。一下内容也是我的一个读书总结。

       分布式机器学习分为 数据和模型划分模块,单机优化模块,通信模块,数据和模型的聚合模块。

      分布式机器学习从并行方式来说分为数据并行和模型并行。数据并行是指训练数据规模太大,无法存储在一个节点上,需要把这些数据分配到各个机器上。

数据划分的方式分为对训练样本进行划分和对每个样本的特征维度进行划分。

      对训练样本进行划分也分为随机采样法和基于置乱切分的方法。随机采样法是通过有放回抽样,根据每个节点的容量为期分配相应的样本数。这种方式可以保证每个节点的局部数据和整体数据是独立同分布的。但是这么做也有弊端就是如果数据量大,代价比较高。另一个是某些低频的样本可能会在抽样的过程中被遗漏。

     另一种是根据基于置乱切分的方法,也就是将样本乱序排列,然后根据每个节点机器的容量,为其分配相应数量的样本。这个方法实现简单,效率相对较高。每个节点在训练的时候仅适用本地数据。在训练一定轮数之后也可以再重新合并数据,重新划分一次。这种方式无限等价于无放回抽样,但是独立同分布的假设是等价于有放回抽样。但是这种方式应该是实际使用比较多的方式。

      模型并行,主要是指模型如何在分布式环境下进行并行,是一个节点上包含整个模型还是每个节点只包含一部分模型。主要是线性模型的并行和神经网络的并行。在Angel1.5的LR和FM中模型是保存在参数服务器,每次节点从参数服务器获取所需的一部分参数,在需要更新参数时候将更新的部分推送到参数服务器。深度模型的话一般可以按网络的层次进行划分。

      

猜你喜欢

转载自www.cnblogs.com/earendil/p/10496218.html