自负年夜google揭橥有名的GFS、MapReduce、BigTable三篇paper今后,互联网正式迎来了大年夜数据时代。大年夜数据的明显特点是大年夜,哪里都大年夜的大年夜。本篇重要针对volume大年夜的数据时,应用机械进修来进行数据处理过程中碰到的架构方面的问题做一个体系的梳理。
1.1简单模型or复杂模型
在深度进修概念提出之前,算法工程师手头能用的对象其实并不多,就LR、SVM、感知机登崛崛可数、相对固定的若干个模型和算法;那时刻要解决一个实际的问题,算法工程师更多的工作主如果在特点工程方面。而特点工程本身并没有很体系化的指导理论(至少今朝没有看到体系介绍特点工程的书本),所以很多时刻特点的构造技法显得光怪陆离,是否有效也取决于问题本身、数据样本、模型以及命运运限。
在特点工程作为算法工程师重要工作内容的时刻,构造新特点的测验测验往往很大年夜部分都不克不及在实际工作中work。据我懂得,国内几家大年夜公司在特点构造方面的成功率在后期一般不会跨越20%。也就是80%的新构造特点往往并没什么正向晋升效不雅。如不雅给这种方法起一个名字的话,大年夜概是简单模型+复杂特点;简单模型说的是算法比如LR、SVM本身并不办事,参数和表达才能根本出现一种线性关系,易于懂得。复杂特点则是指特点工程方面赓续测验测验应用各类事业淫巧构造的可能有效、可能没用的特点,这部分特点的构造方法可能会有各类trick,比如窗口滑动、离散化、归一化、开方、平方、笛卡尔积、多重笛卡尔积等等;趁便提一句,因为特点工程本身并没有特别体系的理论和总结,所以初入行的同窗想要构造特点就须要多读paper,特别是和本身营业场景一样或类似的场景的paper,大年夜琅绫擎进修作者分析、懂得数据的办法以及对应的构造特点的技法;久而久之,有望形成本身的常识体系。
深度进修概念提出今后,人们发明经由过程深度神经收集可以进行必定程度的表示进修(representation learning),例如在图像范畴,经由过程CNN提取图像feature并在此基本长进行分类的办法,一举打破了之前算法的天花板,并且是以极大年夜的差距打破。这给所有算法工程师带来了新的思路,既然深度进修本身有提取特点的才能,干嘛还要苦哈哈的本身去做人工特点设计呢?
两种模式孰优孰劣还难有定论,以点击率猜测为例,在计算告白范畴往往以海量特点+LR为主流,根据VC维理论,LR的表达才能和特点个数成正比,是以海量的feature也完全可以使LR拥有足够的描述才能。而在个性化推荐范畴,深度进修方才萌芽,今朝google play采取了WDL的构造[1],youtube采取了双重DNN的构造[2]。
不管是那种模式,当模型足够宏大年夜的时刻,都邑出现模型参数一台机械无法存放的情况。比如百亿级feature的LR对应的权重w有好几十个G,这在很多单机上存储都是艰苦的,大年夜范围神经统??更复杂,不仅难以单机存储,并且参数和参数之间还有逻辑上的强依附;要对超大年夜范围的模型进行练习势须要借用分布式体系的技法,本文主如果体系总结这方面的一些思路。
1.2数据并行vs模型并行
数据并行和模型并行是懂得大年夜范围机械进修框架的基本概念,其缘起未深究,第一次看到是在姐夫(Jeff Dean)的blog里,当时促一瞥,认为本身懂了。多年今后,再次开端调研这个问题的时刻才想起长者的教训,年青人啊,照样图样,图森破。如不雅你和我一样曾经忽视过这个概念,今天不放复习一下。
这两个概念在[3]中沐帅曾经给出了一个异常直不雅而经典的解释,可惜不知道什么原因,当我想引用时却发明已经被删除了。我在这里简单介绍下这个比方:如不雅要修两栋楼,有一个工程队,怎么操作?第一个筹划是将人分成两组,分别盖楼,改好了就装修;第二种做法是一组人盖楼,等第一栋楼盖好,另一组装修第一栋,然后第一组持续盖第二栋楼,改完今后等装修队装修第二栋楼。咋一看,第二种办法似乎并行度并不高,但第一种筹划须要每个工程人员都拥有“盖楼”和“装修”两种才能,而第二个筹划只须要每小我拥有个一一种才能即可。第一个筹划和数据并行类似,第二个筹划则道出了模型并行的精华。
数据并行懂得起来比较简单,当样本比较多的时刻,为了应用所有样本来练习模型,我们不妨把数据分布到不合的机械上,然后每台机械都来对模型参数进行迭代,如下图所示
图片取材于TensorFlow的paper[4],图中ABC代表三台不合的机械,膳绫擎存储着不合的样本,模型P在各台机械上计算对应的增量,然后在参数存储的机械长进行汇总和更新,这就是数据并行。先忽视synchronous,这是同步机制相干的概念,在第三节会有专门介绍。
数据并行概念简单,并且不依附于具体的模型,是以数据并行机制可以作为框架的一种基本功能,对所有算法都生效。与之不合的是,模型并行因为参数存放在依附关系(其实数据并行参数更新也可能会依附所有的参数,但差别在于往往是依附于上一个迭代的全量参数。而模型并行往往是同一个迭代内的参数之间有强依附关系,比如DNN收集的不合层之间的参数按照BP算法形成的先后依附),无法类比数据并行如许直接将模型参数分片而破坏其依附关系,所以模型并行不仅要对模型分片,同时须要调剂器来控制参数间的依附关系。而每个模型的依附关系往往并不合,所以模型并行的调剂器因模型而异,较难做到完全通用。关于这个问题,CMU的Erix Xing在[5]中有所介绍,感兴趣的可以参考。
模型并行的问题定义可以参考姐夫的[6],这篇paper也是tensorflow的前身相干的总结,个中图
推荐阅读
专访京东张琪:在快速迭代的互联网发展背景下,系统质量保障该何去何从?
带着这个问题,飞马网记者深度查访了京东商城-POP平台-测试与质量治理部负责人张琪,听他讲述10+年对软件测试及质量保障的实践感悟及团队治理经验。张琪,京东商城POP平台测试与质量治理部>>>详细阅读
本文标题:大规模机器学习框架的四重境界
地址:http://www.17bianji.com/lsqh/38476.html
1/2 1