波士顿的 数据科学团队正在利用尖端工具和算法来优化商业活动,且这些商业活动是基于对用户数据中的深刻透析。数据科学大量使用机器算法,可以帮助我们在数据中识别和利用模式。从互联网大规模数据中获取透析是一项具有挑战性的任务,因此,能大规模运行算法是一个至关重要的需求。伴随着数据的爆炸性增长和成千上万的机器集群,我们需要使算法可以适应在如此分布的环境下运行。在通用的分布式计算环境中运行机器学习算法具有一系列的挑战。
这里,我们探讨一下如何在一个Hadoop集群中实现和部署深度学习(一个尖端机器学习框架)。对于算法是如何适应运行在一个分布式环境中,我们提供了具体的细节。我们也给出了算法在标准数据集上的运行结果。
深度信任网络
深度信任网络(Deep Belief Networks, DBN)是在贪婪和无监督的条件下通过迭代和训练受限的玻耳兹曼机(Boltzmann Machines, RMB)而得到的图形模型。通过对如下可被观察的维度x和隐藏层hk之间相互连接的分布式进行建模,DBN被训练来提取训练数据的深层透析。
表达式1:DBN分布式
在下图中,输入层和隐藏层的关系是可以被观察到的。从高层次来看,第一层被作为RBM来训练,为原始输入x进行建模。输入的数据是个稀疏二进制维度,表明数据将会被分类,比如,一个二进制的数字图像。后续层把前面的层传递过来的数据(样本或activations)当作训练示例使用。层数可以通过经验来决定,以此来获得更好的模型性能,DBN支持任意多的层数。
图1:DBN层次
下面的代码片段表明了进入RBM的训练。在提供给RBM的输入数据中,有多个预定义的时间点。输入数据被分成小批量数据,为各个层计算weights、activations和deltas。
在所有的层都被训练以后,深度网络的参数调整使用受监督的训练标准。受监督的训练标准,比如,可以作为一个分类问题来设计,允许使用深度网络来解决分类问题。更复杂的受监督的标准可以用来提供如情景解读之类的有趣的结果,比如解释图片里展示的东西是什么。
基础构造
深度学习受到了广泛的关注,不仅仅是因为它可以得出比其他一些学习算法更优异的结果,也因为它可以在分布式设备上运行,允许处理大规模的数据集。深度网络可以在两个级别进行并行、层级别和数据级别[6]。对于层级别的并行,许多实现使用GPU数组来并行计算层级别activations和频繁同步它们。然而,这种方法不适合那种数据驻留在通过网络连接的多个机器的集群,因为有着较高的网络开销。对于数据层的并行,训练是在数据集上进行并行的,更适合分布式设备。Paypal的大部分数据存储在Hadoop集群上,因此能够运行那些集群上的算法是我们的首要任务。专用集群的维护和支持也是一个我们需要考虑的重要因素。然而,由于深度学习本质上是迭代的,像MapReduce这样的范式不适合运行这些算法。但是随着Hadoop2.0和基于YARN的资源管理的问世,我们可以编写迭代程序,同时可以精细地控制程序使用的资源。我们使用了IterativeReduce [7] , Hadoop YARN里面的一个用户编写迭代算法的程序,我们可以将它部署在一个运行Hadoop 2.4.1的Paypal集群中。
方法
我们实现了Hinton的核心算法,在[2]中引用的。由于我们的需求是分散运行在多个机器的集群中的算法,我们在这样的环境下使用了他们的算法。对于在多个机器上分散这个算法,我们参照了Grazia所提出的指南[6]。下面是对我们的实现做的详细总结:
► Master节点初始化RBM的weights。
► Master节点向Worker节点推送weights和splits。
► Worker节点在一个数据集时间点训练一个RBM层,换句话说,在一个Worker节点完全通过所有的split后,向Master发送更新后的weights。
► 在一个给定的时间点里,Master节点对来自所有Worker节点的weights求平均值。
► 在预定义的时间集(我们的例子中是50)中,重复3-5步操作。
► 第6步完成以后,有一个层就被训练了。后续的RBM层也重复这些步骤。
► 当所有的层都被训练以后,深度网络就会通过使用错误反向广播机制准确地调整好。
下图描述了在运行深度学习算法时的一个单个数据集时间点(步骤3-5)。我们注意到,这个范式可以被利用来实现一个主机可迭代的机器学习算法。
图2:用于训练的单个数据集时间点
下面的代码片段表明了在训练单个机器的DBN中所涉及的步骤。数据集首先被拆分成多个批次,然后多个RBM层会被顺序地初始化和训练。在RBM都被训练以后,它们会通过一个准确调整的错误反向广播相位。
我们使用了IterativeReduce[7]的实现很大程度是为了YARN管道。我们对实现做出了重大改革,可以将它利用到我们的深度学习算法实现。IterativeReduce的实现是为Cloudera Hadoop分布式而编写,它被我们重置了平台,以此来适应标准的Apache Hadoop分布式。我们还重写了实现,以此来使用[8]中描述的标准编程模型。特别是,我们需要YARN客户端API在ResourceManager和客户端程序之间进行通信。我们也使用了AMRMClient和AMNMClient在ApplicationMaster、ResourceManager和NodeManager之间进行通信。
我们首先使用YARN API提交应用程序到YARN资源管理器:
在应用被提交以后,YARN资源管理器启动应用程序Master。如果必要的话,应用程序Master负责分配和释放Worker容器。程序Master使用AMRMClient来与资源管理器进行通信。
应用程序Master使用NMClient API在容器(主节点传递过来的)中运行命令。
一旦应用Master启动了它需要的Worker容器,它设置一个端口来和应用Master进行通信。对于我们深度学习实现来说,我们新增了一些方法,它们需要为原始的IterativeReduce接口提供参数初始化、逐层训练和精确调整信号。IterativeReduce使用Apache Avro IPC来实现Master和Worker之间的通信。
下面的代码片段表明了一系列涉及Master-Worker节点的分布式训练,Master向worker发送初始参数,然后Worker在部分数据上训练它的RBM。在Worker完成训练之后,它将结果发送至Master,Master将会综合这些结果。迭代完成以后,Master通过启动反向广播精确调整相位来完成流程。
结果
我们评估了使用MNIST手写数字识别[3]来实现的深度学习的性能。数据集包含手工标记的0-9的数字。训练集由60000张图片组成,测试集包含了10000张图片。
为了测量性能,DBN首先被预训练,然后在60000张照片中被精确调整,通过以上的步骤,DBN会在10000张测试图片上进行评估。在训练或者评估期间,没有对图片进行预处理。出错率是由为分类的图片总数与测试集中的图片总数的比率而得到。
当在每个RBM使用500-500-2000的隐藏单元,同时使用十个节点的分布式设备的时候,我们能达到最佳的分类错误率1.66%。错误率可堪比原始算法的作者所报告的1.2%(使用500-500-2000的隐藏单元)[2],和类似设置下的一些结果[3]。我们注意到原始实现是在单个机器上的,而我们的实现是在分布式机器上的。参数平均的这一步导致性能略微降低,然而将算法分布在多台机器上是利大于弊的。下面的表格总结出了在十个节点的集群上运行的每个层的隐藏单元数对应的错误率的变化。
表1:MNIST性能评估
深入思考
我们成功地部署了一个深度学习系统,我们相信它在解决一些机器学习问题过程中很有用处。此外,迭代降低抽象可以被利用来分布任何其它合适的机器学习算法,能够利用通用的Hadoop集群将会被证明非常有利于在大数据集上运行大型机器学习算法。我们注意到,我们的当前框架需要一些改进,主要围绕减少网络延迟和更先进的资源管理。另外,我们需要优化DBN框架,这样可以减少内部节点之间的通信。随着对集群资源的精确调整控制,Hadoop YARN框架给我们提供了更多的灵活性。
数据分析咨询请扫描二维码
CDA数据分析师在中国航信高科技产业园进行了面向测试度量的数据分析培训课程,培训人数近2 ...
2024-05-01CDA数据分析师走进深圳迈瑞生物医疗电子股份有限公司,在迈瑞总部展开了为期两天的培训,本次课程参训人员线上及线下近百人, ...
2024-05-01CDA数据分析师在合肥市对合肥阳光新能源科技有限公司开展了为期8天的企业内训。 合肥阳光新能源科技 ...
2024-05-01CDA数据分析师走进海尔大学,进行了《数据治理与数据中台建设的道与术》专题培训,培训现场爆满,近百人参加了此次培训。 ...
2024-05-01在中国银行苏州分行培训中心开始数据分析师培训,此次培训课程共10天内容,包括Excel、MySQL、概率论与数理统计、SPSS等内容, ...
2024-05-01从实际的业务需求出发,结合行业的典型应用特点,围绕实际的商业问题,探讨数据挖掘、机器学习模型在金融领域的应用,包括获客、信用评分、细分画像、交叉销售、反欺诈、违规识别、时序预测、运筹优化、流程挖掘九个方面,形成 ...
2024-05-01本次培训课程为线上+线下的模式,由于学员编程能力不一、部分学员没有编程基础,故提供统计学、python基 ...
2024-05-01华夏银行信用卡中心-机器学习培训 1、课程亮点 取材于业界一流企业和顶级咨询公司的行业实践;已经被证明是人人 ...
2024-05-01主 题:数据中台建设及数据分析应用主题分享 1. 数据中台市场洞察 2. 主流数据中台产品比较 3. 某企业数据中 ...
2024-05-01围绕“数据驱动”战略,全力打造我行 300 人数字化人才梯队,着力培养数字化管理人才、大数据专业团队 ...
2024-05-01在当今数据驱动的商业环境中,数据分析成为了企业决策的重要依据。通过对大量数据的收集、处理和分析,企业能够更好地理解市场 ...
2024-04-29在人工智能(AI)的世界里,提示词(Prompt)是一种强大的工具,它能够引导AI按照用户的需求产生特定的输出。本文将深入探讨AI ...
2024-04-29CDA立足未来职场,拓展前沿视野——对外经贸大学保险学院举办“三全育人大讲堂”分享行业最新动态。 ...
2024-04-294月2日,CDA数据分析师创始发起人兼协会理事长赵坚毅博士受邀在浙江万里学院举办了一场以“数字化能力在职场中的作用” ...
2024-04-29随机森林(Random Forests)现在机器学习中比较火的一个算法,是一种基于Bagging的集成学习方法,能够很好地处理分类和回归的问 ...
2022-12-23方差分析是数据分析中常用的一种统计分析方法,接下来让我们简单了解一下方差分析的基本思想和原理吧。 方差分析(Analysis ...
2022-12-23来源:关于数据分析与可视化 关于streamlit-aggrid 数据排序 表格样式的调整 数据 ...
2022-08-03作者:麦叔 定义 「把上面晦涩的概念汇成一句话就是:」 ❝ 回调函数就是一个被作为参 ...
2022-08-03现今,高学历人群日益增多,物以稀为贵的高学历光环淡去。无论本科生还是研究生,甚至博士生,求职竞争力都大不如前,就业压力越来越大。
2022-06-01某家企业10个人面试,有9个本科生……如何脱颖而出,除得体的举止和良好的沟通力外,证书成重要筹码,这也是很多人考证的关键所在。
2022-04-14