《大数据》第1期“专题”——大数据机器学习系统研究进展(上)
大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)研究進(jìn)展
黃宜華1,2
1.南京大學(xué)計算機(jī)軟件新技術(shù)國家重點(diǎn)實驗室 南京 210023;
2.南京大學(xué)PASA大數(shù)據(jù)技術(shù)實驗室 南京 210023
摘要:要實現(xiàn)高效的大數(shù)據(jù)機(jī)器學(xué)習(xí),需要構(gòu)建一個能同時支持機(jī)器學(xué)習(xí)算法設(shè)計和大規(guī)模數(shù)據(jù)處理的一體化大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。研究設(shè)計高效、可擴(kuò)展且易于使用的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)面臨諸多技術(shù)挑戰(zhàn)。近年來,大數(shù)據(jù)浪潮的興起,推動了大數(shù)據(jù)機(jī)器學(xué)習(xí)的迅猛發(fā)展,使大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)成為大數(shù)據(jù)領(lǐng)域的一個熱點(diǎn)研究問題。介紹了國內(nèi)外大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的基本概念、基本研究問題、技術(shù)特征、系統(tǒng)分類以及典型系統(tǒng);在此基礎(chǔ)上,進(jìn)一步介紹了本實驗室研究設(shè)計的一個跨平臺統(tǒng)一大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)——Octopus(大章魚)。
關(guān)鍵詞:大數(shù)據(jù);機(jī)器學(xué)習(xí);分布并行計算;大數(shù)據(jù)處理平臺
Research Progress on Big Data Machine
Learning System
Huang Yihua1,2
1.National Key Laboratory for Novel Software Technology, Nanjing University, Nanjing 210023, China;
2.PASA Big Data Laboratory, Nanjing University, Nanjing 210023, China
Abstract: To achieve efficient big data machine learning, we need to construct a unified big data machine learning system to support both machine learning algorithm design and big data processing. Designing an efficient, scalable and easy-to-use big data machine learning system still faces a number of challenges. Recently, the upsurge of big data technology has promoted rapid development of big data machine learning, making big data machine learning system to become a research hotspot. The basic concepts, research issues, technical characteristics, categories, and typical systems for big data machine learning system, were reviewed. Then a unified and cross-platform big data machine learning system, Octopus, was presented.
Key words: big data, machine learning, distributed and parallel computing, big data processing platform
1 大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)研究背景
近年來,大數(shù)據(jù)技術(shù)在全球發(fā)展迅猛,掀起了巨大的研究熱潮,引起全球業(yè)界、學(xué)術(shù)界和各國政府的高度關(guān)注。隨著計算機(jī)和信息技術(shù)的迅猛發(fā)展和普及應(yīng)用,行業(yè)應(yīng)用數(shù)據(jù)呈爆炸性增長。動輒達(dá)到數(shù)百TB甚至數(shù)PB規(guī)模的行業(yè)/企業(yè)大數(shù)據(jù)已經(jīng)遠(yuǎn)遠(yuǎn)超出了傳統(tǒng)計算技術(shù)和信息系統(tǒng)的處理能力。與此同時,大數(shù)據(jù)往往隱含著很多在小數(shù)據(jù)量時不具備的深度知識和價值,大數(shù)據(jù)智能化分析挖掘?qū)樾袠I(yè)/企業(yè)帶來巨大的商業(yè)價值,實現(xiàn)多種高附加值的增值服務(wù),從而提升行業(yè)/企業(yè)生產(chǎn)管理決策水平和經(jīng)濟(jì)效益。
大數(shù)據(jù)分析挖掘處理主要分為簡單分析和智能化復(fù)雜分析兩大類。簡單分析主要采用類似于傳統(tǒng)數(shù)據(jù)庫OLAP的處理技術(shù)和方法,用SQL完成各種常規(guī)的查詢統(tǒng)計分析;而大數(shù)據(jù)的深度價值僅通過簡單分析是難以發(fā)現(xiàn)的,通常需要使用基于機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的智能化復(fù)雜分析才能實現(xiàn)。
機(jī)器學(xué)習(xí)和數(shù)據(jù)分析是將大數(shù)據(jù)轉(zhuǎn)換成有用知識的關(guān)鍵技術(shù),并且有研究表明,在很多情況下,處理的數(shù)據(jù)規(guī)模越大,機(jī)器學(xué)習(xí)模型的效果會越好[1~3]。目前,國內(nèi)外業(yè)界和學(xué)術(shù)界專家普遍認(rèn)同的觀點(diǎn)是,越來越多的海量數(shù)據(jù)資源加上越來越強(qiáng)大的計算能力,已經(jīng)成為推動大數(shù)據(jù)時代人工智能技術(shù)和應(yīng)用發(fā)展的動力,將基于大數(shù)據(jù)的機(jī)器學(xué)習(xí)和人工智能推上了新一輪發(fā)展浪潮,讓大數(shù)據(jù)機(jī)器學(xué)習(xí)(bigdata machine learning)成為全球業(yè)界和學(xué)術(shù)界高度關(guān)注的熱點(diǎn)研究領(lǐng)域。隨著大數(shù)據(jù)時代的來臨,Google、Facebook、微軟、百度、騰訊等國內(nèi)外著名企業(yè)均紛紛成立專門的基于大數(shù)據(jù)的機(jī)器學(xué)習(xí)與人工智能研發(fā)機(jī)構(gòu),深入系統(tǒng)地研究基于大數(shù)據(jù)的機(jī)器學(xué)習(xí)和智能化計算技術(shù)。
由于大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘等智能計算技術(shù)在大數(shù)據(jù)智能化分析處理應(yīng)用中具有極其重要的作用,在2014年12月中國計算機(jī)學(xué)會(CCF)大數(shù)據(jù)專家委員會上百位大數(shù)據(jù)相關(guān)領(lǐng)域?qū)W者和技術(shù)專家投票推選出的“2015年大數(shù)據(jù)十大熱點(diǎn)技術(shù)與發(fā)展趨勢”中,結(jié)合機(jī)器學(xué)習(xí)等智能計算技術(shù)的大數(shù)據(jù)分析技術(shù)被推選為大數(shù)據(jù)領(lǐng)域第一大研究熱點(diǎn)和發(fā)展趨勢[4]。
由于大數(shù)據(jù)機(jī)器學(xué)習(xí)在具體實現(xiàn)時通常需要使用分布式和并行化大數(shù)據(jù)處理技術(shù)方法,也有人將大數(shù)據(jù)機(jī)器學(xué)習(xí)稱為“分布式機(jī)器學(xué)習(xí)”(distributedmachine learning)或“大規(guī)模機(jī)器學(xué)習(xí)”(large-scale machine learning)。
大數(shù)據(jù)機(jī)器學(xué)習(xí),不僅是機(jī)器學(xué)習(xí)和算法設(shè)計問題,還是一個大規(guī)模系統(tǒng)問題。它既不是單純的機(jī)器學(xué)習(xí),也不是單純的大數(shù)據(jù)處理技術(shù)所能解決的問題,而是一個同時涉及機(jī)器學(xué)習(xí)和大數(shù)據(jù)處理兩個主要方面的交叉性研究課題。一方面,它仍然需要繼續(xù)關(guān)注機(jī)器學(xué)習(xí)的方法和算法本身,即需要繼續(xù)研究新的或改進(jìn)的學(xué)習(xí)模型和學(xué)習(xí)方法,以不斷提升分析預(yù)測結(jié)果的準(zhǔn)確性;與此同時,由于數(shù)據(jù)規(guī)模巨大,大數(shù)據(jù)機(jī)器學(xué)習(xí)會使幾乎所有的傳統(tǒng)串行化機(jī)器學(xué)習(xí)算法難以在可接受的時間內(nèi)完成計算,從而使得算法在實際應(yīng)用場景中失效。因此,大數(shù)據(jù)機(jī)器學(xué)習(xí)在關(guān)注機(jī)器學(xué)習(xí)方法和算法研究的同時,還要關(guān)注如何結(jié)合分布式和并行化的大數(shù)據(jù)處理技術(shù),以便在可接受的時間內(nèi)完成計算。為了能有效完成大數(shù)據(jù)機(jī)器學(xué)習(xí)過程,需要研究并構(gòu)建兼具機(jī)器學(xué)習(xí)和大規(guī)模分布并行計算處理能力的一體化系統(tǒng)。
因此,領(lǐng)域內(nèi)出現(xiàn)了“大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)”或者“分布式學(xué)習(xí)系統(tǒng)”的概念,并進(jìn)行了諸多大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的研究與開發(fā)工作。
2 大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的技術(shù)特征
參考文獻(xiàn)[5,6]專門介紹了大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的技術(shù)特征。
如圖1所示,一個大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)會同時涉及機(jī)器學(xué)習(xí)和大數(shù)據(jù)處理兩方面的諸多復(fù)雜技術(shù)問題,包括機(jī)器學(xué)習(xí)方面的模型、訓(xùn)練、精度問題以及大數(shù)據(jù)處理方面的分布式存儲、并行化計算、網(wǎng)絡(luò)通信、局部性計算、任務(wù)調(diào)度、容錯等諸多因素。這些因素互相影響,交織在一起,大大增加了系統(tǒng)設(shè)計的復(fù)雜性。因此,大數(shù)據(jù)機(jī)器學(xué)習(xí)已經(jīng)不僅僅是一個算法研究問題,而是需要針對大數(shù)據(jù)集,考慮從底層的大數(shù)據(jù)分布存儲到中層的大數(shù)據(jù)并行化計算,再到上層的機(jī)器學(xué)習(xí)算法,設(shè)計一種一體化的支撐系統(tǒng),形成易于為數(shù)據(jù)分析程序員和機(jī)器學(xué)習(xí)研究者使用的、完整的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。
圖1 大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)所涉及的復(fù)雜因素[5]
一個理想的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)通常需要具備以下幾個方面的技術(shù)要素和特征[5~7]。
● 應(yīng)當(dāng)從整個學(xué)習(xí)的生命周期/流水線來考慮,包括訓(xùn)練數(shù)據(jù)和特征的提取、并行學(xué)習(xí)算法的設(shè)計、訓(xùn)練模型和參數(shù)的查詢管理、分布式訓(xùn)練計算過程,都應(yīng)在一個一體化的學(xué)習(xí)系統(tǒng)平臺上完成。
● 應(yīng)提供多種并行訓(xùn)練模式,支持不同的機(jī)器學(xué)習(xí)模型和算法。
● 需要提供對底層系統(tǒng)的抽象,以實現(xiàn)對底層通用大數(shù)據(jù)處理引擎的支持,并提供數(shù)據(jù)科學(xué)中常用的編程語言接口(API)。
● 應(yīng)該擁有開放和豐富的生態(tài)、廣泛的應(yīng)用和快速的進(jìn)化能力。
在上述技術(shù)特征中,一個非常重要的思路是,要通過系統(tǒng)抽象來降低系統(tǒng)設(shè)計的復(fù)雜性。如圖2所示,一個設(shè)計良好的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng),應(yīng)當(dāng)通過定義特定的機(jī)器學(xué)習(xí)編程計算和系統(tǒng)抽象接口,將上層機(jī)器學(xué)習(xí)和底層分布式系統(tǒng)解耦開來,將機(jī)器學(xué)習(xí)實現(xiàn)在現(xiàn)有的大數(shù)據(jù)計算平臺之上,而不需要考慮底層系統(tǒng)層面的因素,以此實現(xiàn)底層大數(shù)據(jù)處理平臺對上層用戶的透明化,讓上層用戶從諸多底層的分布和并行化大數(shù)據(jù)編程計算細(xì)節(jié)中解放出來,以便他們致力于上層的機(jī)器學(xué)習(xí)模型和算法的設(shè)計實現(xiàn)。通過編程計算和系統(tǒng)抽象層API,向上提供各種機(jī)器學(xué)習(xí)編程計算接口以及學(xué)習(xí)模型和訓(xùn)練數(shù)據(jù)的表示,向下由底層分布式系統(tǒng)負(fù)責(zé)處理并提供高效的分布和并行化計算實現(xiàn)。
圖2 大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)抽象
3 大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的主要研究問題
知名的Apache Flink大數(shù)據(jù)分析系統(tǒng)研究者在2014年VLDB會議主題報告和論文中[8],從數(shù)據(jù)分析的復(fù)雜程度和數(shù)據(jù)規(guī)模的維度,考察了現(xiàn)有的相關(guān)研究工作和系統(tǒng),如圖3所示。現(xiàn)有的系統(tǒng)要么主要用于小規(guī)模復(fù)雜分析,要么主要用于大規(guī)模的簡單統(tǒng)計分析,缺少既具有復(fù)雜數(shù)據(jù)分析能力又具有強(qiáng)大的大數(shù)據(jù)處理能力的大數(shù)據(jù)分析系統(tǒng);文章作者甚至認(rèn)為,對于行業(yè)大數(shù)據(jù)分析人員而言,現(xiàn)有的工具還處于“石器時代”[8]。
圖3 研究者Apache Flink提出的分析維度和研究現(xiàn)狀[8]
與此同時,著名的UC Berkeley AMPLab在研究基于Spark的機(jī)器學(xué)習(xí)庫MLBase[9]時,從計算性能和系統(tǒng)易用性兩個重要維度,考察了現(xiàn)有的大數(shù)據(jù)機(jī)器學(xué)習(xí)研究工作和系統(tǒng),如圖4所示。面向機(jī)器學(xué)習(xí)和數(shù)據(jù)分析時,目前已有的工作和系統(tǒng),絕大多數(shù)都未能同時具備大規(guī)模分析處理能力和良好的系統(tǒng)易用性。
圖4 Spark系統(tǒng)研究者提出的分析維度和研究現(xiàn)狀[9]
因此,大數(shù)據(jù)機(jī)器學(xué)習(xí)除了需要繼續(xù)關(guān)注和研究傳統(tǒng)意義上的學(xué)習(xí)方法和算法問題,以不斷提高學(xué)習(xí)精度外,還需要重點(diǎn)關(guān)注和研究解決大數(shù)據(jù)場景下所特有的兩大技術(shù)問題:一是大數(shù)據(jù)復(fù)雜分析時的計算性能問題;二是大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的可編程性和易用性問題。
(1)大數(shù)據(jù)復(fù)雜分析時的計算性能問題
在計算性能方面,大規(guī)模數(shù)據(jù)集給很多傳統(tǒng)串行的機(jī)器學(xué)習(xí)和數(shù)據(jù)分析挖掘算法帶來很大的挑戰(zhàn),需要研究解決面向大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析的高效計算方法和系統(tǒng)。在數(shù)據(jù)集較小時,很多復(fù)雜度在O(n log n)、O(n2)甚至O(n3)的傳統(tǒng)串行化機(jī)器學(xué)習(xí)算法都可以有效工作;但當(dāng)數(shù)據(jù)規(guī)模增長到極大尺度時,現(xiàn)有的串行化算法將花費(fèi)難以接受的時間開銷,使得算法在實際應(yīng)用場景中失效,這給業(yè)界大量實際的大數(shù)據(jù)復(fù)雜分析應(yīng)用帶來很多新的挑戰(zhàn)和問題[10]。正如微軟全球副總裁陸奇博士在2012年指出的,“大數(shù)據(jù)使得現(xiàn)有的大多數(shù)機(jī)器學(xué)習(xí)算法失效,面向大數(shù)據(jù)處理時這些算法都需要重寫”。
在大型互聯(lián)網(wǎng)企業(yè),大規(guī)模機(jī)器學(xué)習(xí)算法經(jīng)常用于處理十億至千億級別的樣本以及一億至數(shù)十億數(shù)據(jù)特征的大規(guī)模數(shù)據(jù)集。例如,Google著名的Seti太空搜索項目需要進(jìn)行高達(dá)千億樣本、十億特征數(shù)據(jù)的大規(guī)模機(jī)器學(xué)習(xí),騰訊Peacock主題模型分析系統(tǒng)需要進(jìn)行高達(dá)十億文檔、百萬詞匯、百萬主題的主題模型訓(xùn)練,而僅一個百萬詞匯乘以百萬主題的矩陣,其數(shù)據(jù)存儲量即高達(dá)3TB,如果再考慮十億文檔乘以百萬主題的矩陣,其數(shù)據(jù)量更是高達(dá)3 PB[3]。如此大量的訓(xùn)練樣本,加上機(jī)器學(xué)習(xí)算法本身的復(fù)雜性,導(dǎo)致難以在傳統(tǒng)的串行化計算平臺上、在可接受的時間內(nèi)完成如此巨大的復(fù)雜分析計算任務(wù),因而帶來了十分突出的計算性能問題。因此,大數(shù)據(jù)機(jī)器學(xué)習(xí)算法和系統(tǒng)需要研究解決大規(guī)模場景下高效的分布式和并行化算法設(shè)計以及計算問題,以保證算法和系統(tǒng)可以在可接受的時間內(nèi)完成大規(guī)模數(shù)據(jù)的學(xué)習(xí)和訓(xùn)練。
(2)大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的可編程性和易用性問題
為了滿足急劇增長的大數(shù)據(jù)處理需求,過去幾年來,全球推出了Hadoop[11]和Spark[12]等多種主流大數(shù)據(jù)處理技術(shù)和系統(tǒng)平臺。這些主流技術(shù)和平臺的出現(xiàn)為大數(shù)據(jù)的處理提供了良好的技術(shù)手段和方法。Hadoop的出現(xiàn)使得大數(shù)據(jù)處理技術(shù)和平臺從無到有,而基于內(nèi)存計算的Spark系統(tǒng)的出現(xiàn)使得大數(shù)據(jù)分析計算從慢到快。然而,現(xiàn)有的大數(shù)據(jù)處理技術(shù)和系統(tǒng)平臺都存在很大的易用性問題,難以為普通的程序員掌握和使用,尤其是面向復(fù)雜的大規(guī)模機(jī)器學(xué)習(xí)和數(shù)據(jù)分析時,這個問題更為突出。
大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析的并行化程序設(shè)計,比傳統(tǒng)的串行化算法設(shè)計復(fù)雜很多、對程序員的技術(shù)要求更高。對于普通的數(shù)據(jù)分析程序員或機(jī)器學(xué)習(xí)研究者來說,在特定的大數(shù)據(jù)編程模型和平臺下進(jìn)行并行化機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法設(shè)計,需要掌握很多分布式系統(tǒng)背景知識和并行程序設(shè)計技巧,這對他們來說難度較大,經(jīng)常要把實際工作的大部分時間花費(fèi)在底層復(fù)雜的并行化和分布式編程和調(diào)試上,給上層數(shù)據(jù)分析和算法設(shè)計工作帶來很大的不便和困難,導(dǎo)致普通程序員與現(xiàn)有的各種大數(shù)據(jù)處理平臺之間存在一個難以逾越的鴻溝[8,9,13~15]。
另一方面,即使對于諸如Google、百度等具有強(qiáng)大技術(shù)力量的互聯(lián)網(wǎng)企業(yè)程序員來說,隨著多種大數(shù)據(jù)處理與編程平臺的出現(xiàn)以及各種分析應(yīng)用問題需求的不同,他們也常常需要針對不同平臺,重復(fù)編寫和測試各種并行化機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法,這種在多個大數(shù)據(jù)平臺上重復(fù)編寫和嘗試數(shù)以百計的機(jī)器學(xué)習(xí)算法的工作負(fù)擔(dān)也很重。正如阿里巴巴集團(tuán)副總裁、高級研究員章文嵩博士在中國計算機(jī)學(xué)會第一屆大數(shù)據(jù)學(xué)術(shù)會議上所指出的,“淘寶內(nèi)部需要使用的并行化機(jī)器學(xué)習(xí)算法很多,隨著新型的并行化計算框架的逐步出現(xiàn),需要將其逐個實現(xiàn)到MPI、MapReduce、Spark等并行計算框架上;如果后面出現(xiàn)更先進(jìn)的框架,又面臨著將這些算法重新實現(xiàn)一遍的負(fù)擔(dān)”。
針對大數(shù)據(jù)的機(jī)器學(xué)習(xí)和數(shù)據(jù)分析,現(xiàn)有的大數(shù)據(jù)處理技術(shù)和平臺存在很大的可編程性和易用性問題,導(dǎo)致普通程序員和常規(guī)的程序設(shè)計方法與現(xiàn)有的大數(shù)據(jù)分析處理編程技術(shù)之間存在著一個很大的鴻溝。正如CCF大數(shù)據(jù)專家委員會《2015年大數(shù)據(jù)發(fā)展趨勢預(yù)測報告》指出的那樣,“由于現(xiàn)有的大數(shù)據(jù)平臺易用性差,而垂直應(yīng)用行業(yè)的數(shù)據(jù)分析又涉及領(lǐng)域?qū)<抑R和領(lǐng)域建模,目前在大數(shù)據(jù)行業(yè)分析應(yīng)用與通用的大數(shù)據(jù)技術(shù)之間存在很大的鴻溝,缺少相互的交叉融合”[4]。
因此,大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)要解決的一個重要問題是,讓不易使用的大數(shù)據(jù)處理技術(shù)和平臺變得易于使用,要填平普通程序員和常規(guī)程序設(shè)計方法與現(xiàn)有的大數(shù)據(jù)處理技術(shù)之間的鴻溝,盡可能讓普通程序員用常規(guī)程序設(shè)計方法便能有效完成大數(shù)據(jù)的復(fù)雜分析處理。
根據(jù)Google Seti項目研究人員在開發(fā)實際的大型機(jī)器學(xué)習(xí)系統(tǒng)上的經(jīng)驗,在面向大數(shù)據(jù)時,考慮到用戶開發(fā)效率問題,系統(tǒng)易用性與提高機(jī)器學(xué)習(xí)精度幾乎同等重要,有時甚至比精度問題更為重要,“也許過去學(xué)術(shù)界很少關(guān)心設(shè)計一個精度稍差、但有更好易用性和系統(tǒng)可靠性的學(xué)習(xí)算法,但在實際應(yīng)用中,這會體現(xiàn)出非常重要的價值”。
4 大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的分類
近幾年來,隨著大數(shù)據(jù)的來臨,基于大數(shù)據(jù)的機(jī)器學(xué)習(xí)方法和系統(tǒng)成為業(yè)界和學(xué)術(shù)界普遍關(guān)注的研究熱點(diǎn)。為了提供有效的大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析手段,業(yè)界和學(xué)術(shù)界在嘗試多種途徑和方法,在不同的并行計算模型和平臺下,在實際的數(shù)據(jù)分析挖掘中得到應(yīng)用。
較早出現(xiàn)以及現(xiàn)有的一些大數(shù)據(jù)機(jī)器學(xué)習(xí)算法和系統(tǒng)大多采用較為低層的緊耦合、定制化方法構(gòu)建。這些算法和系統(tǒng)大都針對特定的應(yīng)用,選擇特定的平臺和模型,針對特定的機(jī)器學(xué)習(xí)模型和特定的計算模式,從串行算法和原型到分布并行化算法和原型,自底層向上進(jìn)行緊耦合和定制化的開發(fā)和優(yōu)化。盡管這可以最大化利用系統(tǒng)資源以達(dá)到最佳的性能,但這種低層的緊耦合定制化實現(xiàn)方法,將學(xué)習(xí)和系統(tǒng)混雜在一起,實現(xiàn)難度大,算法和系統(tǒng)也難以調(diào)試和維護(hù)[5,6]。
從前述的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)特征來看,一個設(shè)計良好的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)應(yīng)當(dāng)考慮高層的系統(tǒng)層抽象,向上為程序員提供易于使用的高層機(jī)器學(xué)習(xí)算法編程接口,向下基于現(xiàn)有的通用化大數(shù)據(jù)處理平臺提供大規(guī)模數(shù)據(jù)的分布和并行化計算能力。為此,近年來已經(jīng)開始出現(xiàn)基于各種高層編程計算和系統(tǒng)抽象設(shè)計大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的研究工作。
在高層編程計算和系統(tǒng)抽象上,目前的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)大致可分為3種主要的編程計算和系統(tǒng)抽象方法,分別是基于矩陣模型的抽象、基于圖模型的抽象以及基于參數(shù)模型的抽象。
(1)基于矩陣模型的抽象
基于矩陣模型的抽象基于這樣一個事實:大多數(shù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法都可以表示為矩陣或向量代數(shù)計算,因此可以構(gòu)建一個基于矩陣計算模型的機(jī)器學(xué)習(xí)系統(tǒng),允許程序員直接基于矩陣計算快速構(gòu)建機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法。最典型的基于矩陣模型的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)尚不多見,UCBerkeley AMP Lab推出的Spark MLlib是一個試圖基于矩陣計算模型構(gòu)建上層各種機(jī)器學(xué)習(xí)算法的系統(tǒng);最近Spark系統(tǒng)提出了一個DataFrame的數(shù)據(jù)抽象機(jī)制,允許基于矩陣和表等數(shù)據(jù)結(jié)構(gòu),設(shè)計各種機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法。此外,國內(nèi)由南京大學(xué)PASA大數(shù)據(jù)實驗室研究開發(fā)的“Octopus(大章魚)”系統(tǒng)是一個以大規(guī)模矩陣模型為中心的跨平臺大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。
(2)基于圖模型的抽象
雖然矩陣可以表示大多數(shù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法,但對于一些基于圖模型的社會網(wǎng)絡(luò)分析問題,基于矩陣模型進(jìn)行計算并非最有效的方法(雖然圖和矩陣表示具有理論上的等價性)。矩陣模型對于圖數(shù)據(jù)的表達(dá)不如圖模型,且通常會面臨稀疏性的問題。因此,一些社會網(wǎng)絡(luò)分析類的實際應(yīng)用需要基于更為高效的圖模型的學(xué)習(xí)和分析方法,為此出現(xiàn)了相應(yīng)的基于圖模型的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。最典型的基于圖模型的系統(tǒng)是美國卡耐基梅隆大學(xué)(CMU)推出的GraphLab系統(tǒng)[16]以及基于Spark構(gòu)建的GraphX系統(tǒng)。
(3)基于參數(shù)模型的抽象
基于矩陣模型和圖模型的系統(tǒng)主要是從數(shù)據(jù)表示模型的角度來構(gòu)建系統(tǒng),這兩種方法的特點(diǎn)是更接近于實際學(xué)習(xí)問題中自然化的數(shù)據(jù)表示和計算模型,因此對于數(shù)據(jù)分析人員方便快速地構(gòu)建機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法比較自然和直觀。但是,大數(shù)據(jù)機(jī)器學(xué)習(xí)常常還需要涉及大規(guī)模模型,例如,近幾年發(fā)展迅猛的深度神經(jīng)網(wǎng)絡(luò)算法,常常需要通過對大量模型參數(shù)的調(diào)優(yōu)來提高學(xué)習(xí)精度,在這種情況下,上述兩種方法會缺少靈活性,難以讓算法設(shè)計者通過控制模型參數(shù)進(jìn)行算法優(yōu)化。為此,有研究者提出了一種基于模型參數(shù)的抽象方法,即把所有機(jī)器學(xué)習(xí)算法抽象為對學(xué)習(xí)過程中一組模型參數(shù)的管理和控制,并提供對大規(guī)模場景下大量模型參數(shù)的有效管理和訪問。目前參數(shù)模型最典型的方法是最初由美國卡耐基梅隆大學(xué)的LiMu等人提出的、后在很多系統(tǒng)中得到進(jìn)一步應(yīng)用的Parameter Server[17,18]。
實際的系統(tǒng)也可能會是一種兼有上述多種類型的混合系統(tǒng)。此外,也有不少系統(tǒng)從并行模式角度來區(qū)分,分為數(shù)據(jù)并行和模型并行兩種方式,且一些系統(tǒng)只提供數(shù)據(jù)并行方式,另一些系統(tǒng)會同時提供數(shù)據(jù)并行和模型并行兩種方式。
5 典型大數(shù)據(jù)學(xué)習(xí)方法和系統(tǒng)介紹
5.1 基于特定平臺的定制式并行化機(jī)器學(xué)習(xí)算法與算法庫
隨著Hadoop MapReduce[11]和Spark[12]大數(shù)據(jù)并行計算與編程平臺的出現(xiàn)和成熟應(yīng)用,Hadoop和Spark已經(jīng)成為目前大數(shù)據(jù)分析處理的主流平臺。為了解決大規(guī)模機(jī)器學(xué)習(xí)問題,有大量的研究工作致力于基于HadoopMapReduce和Spark以及傳統(tǒng)的MPI并行計算框架,完成各種并行化機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法的設(shè)計。在諸如TPDS、JPDC、IPDPS、ICPP、ICPADS、IEEEBigData等大數(shù)據(jù)和分布并行計算領(lǐng)域的知名期刊和國際會議上,這些并行化算法研究工作不勝枚舉。由于需要同時顧及上層機(jī)器學(xué)習(xí)算法設(shè)計和底層分布并行化大數(shù)據(jù)處理系統(tǒng)層細(xì)節(jié),總體而言,基于上述不同的并行化編程方法和平臺進(jìn)行并行化機(jī)器學(xué)習(xí)算法設(shè)計,仍屬于一種專業(yè)性較強(qiáng)、技術(shù)要求較高、過程較為繁瑣的工作,難以為缺少分布式和并行計算知識背景的普通程序員使用。
為了讓普通數(shù)據(jù)分析程序員能夠直接使用并行化機(jī)器學(xué)習(xí)算法,目前普遍的一種做法是,在不同的并行化計算平臺上,由專業(yè)的機(jī)器學(xué)習(xí)算法設(shè)計者實現(xiàn)并行化機(jī)器學(xué)習(xí)算法,提供一個機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘工具包以供一般的數(shù)據(jù)分析和應(yīng)用開發(fā)程序員直接使用,如Hadoop下的Mahout以及Spark環(huán)境下的MLlib。
Mahout的主要任務(wù)是設(shè)計并提供一些基于MapReduce的可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法庫,包括聚類、分類、推薦過濾、頻繁項集挖掘等。這些并行化算法都是基于HadoopMapReduce平臺完成的,用戶可直接調(diào)用Mahout算法庫實現(xiàn)好的算法。然而,Mahout提供的并行化機(jī)器學(xué)習(xí)算法數(shù)量有限,而且作為標(biāo)準(zhǔn)的軟件包,其所提供的算法幾乎都是標(biāo)準(zhǔn)的,在算法精度和性能上不一定能滿足用戶的需要。進(jìn)一步,MapReduce的設(shè)計目標(biāo)是解決數(shù)據(jù)密集但計算邏輯相對簡單的批處理問題。然而,大多數(shù)機(jī)器學(xué)習(xí)算法的計算流程都比較復(fù)雜,模型的訓(xùn)練過程往往需要多次迭代計算(如梯度下降算法)、有中間數(shù)據(jù)集需要共享等。MapReduce模型處理這類問題時,額外的調(diào)度和初始化開銷導(dǎo)致其處理性能偏低。
為了克服MapReduce在計算性能上的缺陷,不斷地有新的并行化計算模型和框架出現(xiàn),UCBerkeley AMP實驗室推出的、目前已成為Apache開源項目的Spark[12]系統(tǒng)是目前最有影響力的大數(shù)據(jù)處理平臺之一。Spark使用基于內(nèi)存計算的并行化計算模型RDD(resilientdistributed dataset)[12],提供了一個強(qiáng)大的分布式內(nèi)存并行計算引擎,實現(xiàn)了優(yōu)異的計算性能,同時還保持與Hadoop平臺在底層分布式數(shù)據(jù)存儲上的兼容性。在Spark執(zhí)行引擎上,AMP實驗室實現(xiàn)了很多機(jī)器學(xué)習(xí)算法,并逐步整理成Spark下的一個機(jī)器學(xué)習(xí)算法庫項目MLlib。MLlib目前也包含一些矩陣操作,并希望基于矩陣的表示設(shè)計開發(fā)一些統(tǒng)計包和機(jī)器學(xué)習(xí)算法庫。為了加速上層計算,MLlib底層通過Breeze使用了BLAS(basiclinear algebra subprogram)單機(jī)的矩陣函數(shù)庫。BLAS是很多更高層的數(shù)學(xué)函數(shù)庫和數(shù)學(xué)編程語言(如LAPACK和MATLAB等)的基本構(gòu)成單元。BLAS和LAPACK是當(dāng)下普遍使用的線性代數(shù)函數(shù)庫,主要定義了一些線性代數(shù)中常用的運(yùn)算操作和方程求解、矩陣分解的函數(shù)。此外,基于MLlib的工作基礎(chǔ),UCBerkeley還計劃研發(fā)MLBase[9]項目,該項目增加了機(jī)器學(xué)習(xí)模型自動選擇和參數(shù)自動優(yōu)化等功能,提供了以目標(biāo)為導(dǎo)向的高層機(jī)器學(xué)習(xí)方法接口。
提供機(jī)器學(xué)習(xí)算法庫在一定程度上減輕了程序員進(jìn)行機(jī)器學(xué)習(xí)算法設(shè)計的負(fù)擔(dān)。但即使如此,程序員編寫程序時仍然需要熟悉具體的并行編程計算模型和平臺,而且由于實際數(shù)據(jù)分析應(yīng)用的需求不同,很多時候工具包所提供的通用算法在學(xué)習(xí)精度和計算性能上可能不能滿足需求,需要程序員定制和改進(jìn)某個并行化機(jī)器學(xué)習(xí)算法或者開發(fā)新的算法,這對普通數(shù)據(jù)分析程序員仍然是很大的挑戰(zhàn)。
5.2 結(jié)合傳統(tǒng)數(shù)據(jù)分析平臺的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)
雖然有了基于大數(shù)據(jù)處理平臺的機(jī)器學(xué)習(xí)算法設(shè)計方法,能夠較好地解決一體化的大數(shù)據(jù)存儲、計算以及并行化算法設(shè)計問題,但僅有機(jī)器學(xué)習(xí)系統(tǒng)仍然不能很好地解決各個平臺對終端用戶存在的可編程性和易用性不夠的問題。為此,還需要進(jìn)一步研究解決這些問題。
從可編程性和易用性角度來說,對于行業(yè)數(shù)據(jù)分析師,最熟悉使用的分析語言和環(huán)境通常是R、Python、MATLAB等系統(tǒng)。R是目前在數(shù)據(jù)分析應(yīng)用領(lǐng)域最廣為使用的數(shù)據(jù)分析、統(tǒng)計計算及制圖的開源軟件系統(tǒng),提供了大量的專業(yè)模塊和實用工具。為了盡可能縮小R語言環(huán)境與現(xiàn)有大數(shù)據(jù)平臺間的鴻溝,工業(yè)界和研究界已經(jīng)嘗試在R中利用分布式并行計算引擎來處理大數(shù)據(jù)。最早的工作和系統(tǒng)RHadoop,是由RevolutionAnalytics發(fā)起的一個開源項目,其目標(biāo)是將統(tǒng)計語言R與Hadoop結(jié)合起來,目前該項目包括3個R package(包),分別為支持用R語言編寫MapReduce應(yīng)用的rmr、用于R語言訪問HDFS的rhdfs以及用于R語言訪問HBase的rhbase。其中,Hadoop主要用來存儲和處理底層的海量數(shù)據(jù),用R語言替代Java語言完成MapReduce算法的設(shè)計實現(xiàn)。
類似地,UC Berkeley AMP實驗室在2014年1月也推出了一個稱為SparkR的項目。SparkR也是作為一個R的擴(kuò)展包,為R用戶提供一個輕量級的、在R環(huán)境里使用SparkRDD API編寫程序的接口。它允許用戶在R的shell環(huán)境里交互式地向Spark集群提交運(yùn)行作業(yè)。
然而,目前的RHadoop和SparkR都還存在一個同樣的問題:仍要求用戶熟悉MapReduce或SparkRDD的編程框架和程序結(jié)構(gòu),然后將自己的MapReduce或Spark程序?qū)崿F(xiàn)到基于R的編程接口上,這和在Hadoop或Spark上寫應(yīng)用程序沒有太大的區(qū)別,只是編程接口用R語言封裝了一下。此外,這些工作都是基于單一平臺,無法解決跨平臺統(tǒng)一大數(shù)據(jù)機(jī)器學(xué)習(xí)算法設(shè)計的問題。
5.3 基于特定平臺的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)
為了克服前述做法的缺陷,近年來,學(xué)術(shù)界和業(yè)界開始嘗試總結(jié)機(jī)器學(xué)習(xí)算法設(shè)計的共同特性,結(jié)合大規(guī)模學(xué)習(xí)時所需要考慮的底層分布式數(shù)據(jù)存儲和并行化計算等系統(tǒng)問題,專門研究能同時兼顧并支持大數(shù)據(jù)機(jī)器學(xué)習(xí)和大數(shù)據(jù)分布并行處理的一體化大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。
在國內(nèi)外的機(jī)器學(xué)習(xí)和大數(shù)據(jù)技術(shù)方面的會議中,已經(jīng)頻繁出現(xiàn)大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)相關(guān)的研究工作,如SparkMLlib、IBM的SystemML、Apache Flink、GraphLab、Parameter Server、Petuum等;此外,騰訊、百度等國內(nèi)著名互聯(lián)網(wǎng)企業(yè)也推出了不同的面向大數(shù)據(jù)的分布式機(jī)器學(xué)習(xí)系統(tǒng),如騰訊的Peacock和Mariana大規(guī)模機(jī)器學(xué)習(xí)系統(tǒng)、百度的ELF和百度機(jī)器學(xué)習(xí)云平臺BML。
(1)Spark MLlib
MLLib與Spark環(huán)境整合后可完整解決大數(shù)據(jù)的分布式存儲、并行化計算以及上層的機(jī)器學(xué)習(xí)算法設(shè)計和使用問題,因此,可將其視為一個基本的機(jī)器學(xué)習(xí)系統(tǒng)。目前其已經(jīng)向上層提供多種優(yōu)化方法、分類算法、回歸算法、推薦算法、聚類算法。但其算法數(shù)目和接口有限,難以完全滿足用戶各種各樣的需求,且作為一個算法庫,用戶難以對內(nèi)部算法進(jìn)行深層定制優(yōu)化。因此,其在靈活性方面仍然存在不足。
(2)SystemML
SystemML[14,15]是由IBMWaston Research Center 和IBM Almaden Research Center聯(lián)合研發(fā)的一款大數(shù)據(jù)學(xué)習(xí)系統(tǒng)。對用戶提供了一個類似于R語言的高層聲明式語言,基于這種語言編寫的程序可以被自動編譯轉(zhuǎn)化為MapReduce作業(yè)在Hadoop集群上運(yùn)行。這種高層語言提供了大量的監(jiān)督和非監(jiān)督的機(jī)器學(xué)習(xí)算法所需要的線性代數(shù)操作算子,包括高層算子HOP(high-leveloperator)和底層算子LOP(low-level operator)。SystemML最大的優(yōu)勢是其具有較好的可編程性和易用性,用戶不需要具備任何分布式系統(tǒng)的概念或編程經(jīng)驗,即可利用其寫出可擴(kuò)展的機(jī)器學(xué)習(xí)算法;其最大的缺點(diǎn)在于底層計算平臺單一,只采用了MapReduce作為底層分布式執(zhí)行平臺,而底層的MapReduce作業(yè)本身執(zhí)行性能并不高,近年來涌現(xiàn)出的高效分布式計算框架如Spark、Flink等,在眾多性能指標(biāo)上遠(yuǎn)遠(yuǎn)高于MapReduce。
(3)Apache Flink
Apache Flink[19]是由歐洲的多名研究者和多家資助單位(如EIT1ICT Labs、DFG2、IBM、Oracle、HP等)聯(lián)合研發(fā)的一款開源的并行化數(shù)據(jù)分析軟件棧,項目早期的名稱是Stratosphere。經(jīng)過一段時間的發(fā)展,目前已經(jīng)成為Apache開源項目。Flink同樣意識到,數(shù)據(jù)分析人員在分布式系統(tǒng)上編寫大數(shù)據(jù)分析算法時,需要有大量的精力耗費(fèi)在分布式程序調(diào)試以及底層調(diào)優(yōu)上。為了使數(shù)據(jù)分析人員能夠在無需顧及各種并行化優(yōu)化問題的情況下就可以進(jìn)行深度數(shù)據(jù)分析,Flink提供了一款數(shù)據(jù)分析棧式軟件。它向用戶提供了一種專用的腳本式語言MeteorScript,并且會自動將基于該語言開發(fā)的程序轉(zhuǎn)換到底層的分布式計算平臺Nephele上[20]。由于其專用性語言不夠普及,目前系統(tǒng)對語言接口又做了更多的擴(kuò)充,支持Java、Scala等語言。Flink項目的優(yōu)勢在于其從上到下提供了一整套完整的棧式解決方案,試圖為用戶提供易于使用的數(shù)據(jù)分析系統(tǒng),同時通過一些編譯優(yōu)化手段盡可能地提升程序執(zhí)行的性能;其缺點(diǎn)在于其底層是專用的單一化計算平臺,與目前普遍使用的主流大數(shù)據(jù)平臺Hadoop和Spark尚未能集成使用,且上層的語言接口層也沒有包含現(xiàn)在數(shù)據(jù)分析師廣為使用的R、Python等語言接口。
(4)GraphLab
GraphLab[16]是CMU開發(fā)的一個以頂點(diǎn)為計算單元的大規(guī)模圖處理系統(tǒng),是一個基于圖模型抽象的機(jī)器學(xué)習(xí)系統(tǒng)。設(shè)計初衷主要是解決具有以下特點(diǎn)的機(jī)器學(xué)習(xí)問題:有局部依賴的稀疏數(shù)據(jù)集、迭代可收斂、異步執(zhí)行。為了實現(xiàn)這個目標(biāo),GraphLab把數(shù)據(jù)之間的依賴關(guān)系抽象成Graph結(jié)構(gòu),以頂點(diǎn)為計算單元,將算法的執(zhí)行過程抽象成每個頂點(diǎn)上的GAS(gather、apply、scatter)過程,其并行的核心思想是多個頂點(diǎn)同時執(zhí)行。GraphLab的優(yōu)點(diǎn)是能夠高效地處理大規(guī)模圖算法問題或者可歸結(jié)為圖問題的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法問題;其缺點(diǎn)在于提供的接口細(xì)節(jié)比較復(fù)雜,對于普通的數(shù)據(jù)分析程序員而言,有較大的使用難度。
(5)ParameterServer與Petuum
很多機(jī)器學(xué)習(xí)算法常常要解決學(xué)習(xí)訓(xùn)練過程中模型參數(shù)的高效存儲與更新問題。為了有效應(yīng)對和滿足大數(shù)據(jù)場景下這類機(jī)器學(xué)習(xí)算法的需要,研究者提出了一種稱為ParameterServer的框架[17],提供了一個分布式全局模型參數(shù)存儲和訪問接口,模型參數(shù)存儲在多臺服務(wù)器(server)中,工作節(jié)點(diǎn)(worker)可以通過網(wǎng)絡(luò)訪問API方便地讀取全局參數(shù)。
Li Mu等人開發(fā)了一套基于ParameterServer框架的分布式機(jī)器學(xué)習(xí)系統(tǒng)[17],該系統(tǒng)由一個服務(wù)器組(server group)和多個工作組(worker group)構(gòu)成。其中,服務(wù)器組中包括一個服務(wù)器管理(servermanager)節(jié)點(diǎn)和多個服務(wù)器節(jié)點(diǎn)。每個服務(wù)器節(jié)點(diǎn)存儲部分全局共享參數(shù);服務(wù)器管理節(jié)點(diǎn)用來存儲服務(wù)器節(jié)點(diǎn)的元信息,并通過心跳機(jī)制管理所有服務(wù)器。在該系統(tǒng)中,每個工作組包含一個任務(wù)調(diào)度器(taskscheduler)和多個工作節(jié)點(diǎn),工作節(jié)點(diǎn)只與服務(wù)器節(jié)點(diǎn)通信獲取全局參數(shù)以及推送局部更新,不同的工作組可以同時運(yùn)行不同的應(yīng)用。ParameterServer的優(yōu)點(diǎn)是為大規(guī)模機(jī)器學(xué)習(xí)提供了非常靈活的模型參數(shù)調(diào)優(yōu)和控制機(jī)制;缺點(diǎn)是缺少對大規(guī)模機(jī)器學(xué)習(xí)時的數(shù)據(jù)及編程計算模型的高層抽象,使用較為繁瑣,通常比較適合于機(jī)器學(xué)習(xí)算法研究者或者需要通過調(diào)整參數(shù)深度優(yōu)化機(jī)器學(xué)習(xí)算法的數(shù)據(jù)分析程序員使用。
國際著名的機(jī)器學(xué)習(xí)專家、美國卡耐基梅隆大學(xué)機(jī)器學(xué)習(xí)系EricXing教授是大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的倡導(dǎo)者。他認(rèn)為,傳統(tǒng)的機(jī)器學(xué)習(xí)研究過于簡化機(jī)器學(xué)習(xí)算法本身的問題以及大規(guī)模數(shù)據(jù)機(jī)器學(xué)習(xí)存在的系統(tǒng)問題[21]。由于大規(guī)模機(jī)器學(xué)習(xí)存在很多新的挑戰(zhàn),近幾年來主要致力于大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的研究,并領(lǐng)導(dǎo)其SAILING實驗室研究實現(xiàn)了大數(shù)據(jù)學(xué)習(xí)系統(tǒng)Petuum[18,21]。Petuum也是一個基于Parameter Server框架的系統(tǒng),關(guān)鍵組件包括ParameterServer和調(diào)度器。Petuum的Parameter Server中使用SSP(stale synchronous parallel)一致性模型,允許計算速度慢的節(jié)點(diǎn)從本機(jī)緩存中讀取陳舊的參數(shù)值,以此大大節(jié)省網(wǎng)絡(luò)開銷和網(wǎng)絡(luò)等待時間,使得慢機(jī)器的大部分時間用在計算而不是等待上。Petuum在使用上需要算法設(shè)計者對分布式系統(tǒng)概念和系統(tǒng)有一定了解,其易用性仍有一定的限制,且其底層數(shù)據(jù)存儲和并行計算框架與上層的學(xué)習(xí)算法層以緊耦合的方式全部自己實現(xiàn),系統(tǒng)實現(xiàn)復(fù)雜性和代價較大。
(6)騰訊Peacock與Mariana深度學(xué)習(xí)平臺
Peacock[3]是騰訊公司研發(fā)的一個大規(guī)模LDA主題模型訓(xùn)練系統(tǒng)。該系統(tǒng)通過并行計算可對10億×1億級別的大規(guī)模矩陣進(jìn)行分解,從而從海量文檔樣本數(shù)據(jù)中學(xué)習(xí)10萬~100萬量級的隱含語義。為了完成大規(guī)模處理,Peacock基于吉布斯采樣的LDA訓(xùn)練算法進(jìn)行了并行化設(shè)計,并設(shè)計實現(xiàn)了一個完整的具有大規(guī)模樣本數(shù)據(jù)處理能力的訓(xùn)練系統(tǒng)。Peacock已廣泛應(yīng)用在騰訊的文本語義理解、QQ群推薦、用戶商業(yè)興趣挖掘、相似用戶擴(kuò)展、廣告點(diǎn)擊率轉(zhuǎn)化率預(yù)估等多個業(yè)務(wù)數(shù)據(jù)中,是一個專為LDA并行化計算而定制的大規(guī)模訓(xùn)練系統(tǒng),不是一個通用化的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。
為了提供更為廣泛的大規(guī)模并行化機(jī)器學(xué)習(xí)處理能力,騰訊研究構(gòu)建了一個稱為Mariana的深度學(xué)習(xí)平臺[22],該平臺由3套大規(guī)模深度學(xué)習(xí)系統(tǒng)構(gòu)成,包括基于多GPU的深度神經(jīng)網(wǎng)絡(luò)并行計算系統(tǒng)MarianaDNN、基于多GPU的深度卷積神經(jīng)網(wǎng)絡(luò)并行計算系統(tǒng)Mariana CNN以及基于CPU集群的深度神經(jīng)網(wǎng)絡(luò)并行計算系統(tǒng)Mariana Cluster。Mariana可提供數(shù)據(jù)并行和模型并行計算,基于GPU和CPU集群提升模型規(guī)模,加速訓(xùn)練性能。其中,MarianaDNN在騰訊內(nèi)部用于微信語音識別聲學(xué)模型訓(xùn)練,可訓(xùn)練超過1萬小時的語音數(shù)據(jù)、超過40億的數(shù)據(jù)樣本以及超過5 000萬的參數(shù),相對于單GPU而言,6GPU可實現(xiàn)4.6倍的加速比;而MarianaCNN用于微信圖像識別,可訓(xùn)練2 000個以上的分類、300萬以上的數(shù)據(jù)樣本以及超過6 000萬的參數(shù),相對于單GPU而言,4GPU可實現(xiàn)2.5倍的加速比,在圖文類效果廣告點(diǎn)擊率提升方面也取得初步應(yīng)用;MarianaCluster實現(xiàn)了一個基于Parameter Server模型的大規(guī)模通用化機(jī)器學(xué)習(xí)和訓(xùn)練系統(tǒng),主要用于進(jìn)行大規(guī)模廣告并行化訓(xùn)練,完成廣告點(diǎn)擊率預(yù)估模型訓(xùn)練和廣告點(diǎn)擊性能優(yōu)化。
(7)百度ELF與百度機(jī)器學(xué)習(xí)云平臺BML
百度公司研發(fā)了一個大規(guī)模分布式機(jī)器學(xué)習(xí)框架和系統(tǒng)ELF(essential learningframework)[23]。ELF是一個基于Parameter Server模型的通用化大規(guī)模機(jī)器學(xué)習(xí)系統(tǒng),可允許用戶方便快速地設(shè)計實現(xiàn)大數(shù)據(jù)機(jī)器學(xué)習(xí)算法,在系統(tǒng)設(shè)計上吸收了Hadoop、Spark和MPI等大數(shù)據(jù)平臺的優(yōu)點(diǎn),用類似于Spark的全內(nèi)存DAG計算引擎,可基于數(shù)據(jù)流的編程模式,通過高度抽象的編程接口,讓用戶方便地完成各種機(jī)器學(xué)習(xí)算法的并行化設(shè)計和快速計算。
在ELF的基礎(chǔ)上,百度進(jìn)一步開發(fā)了一個機(jī)器學(xué)習(xí)云平臺BML(Baidumachine learning),該平臺支持豐富的機(jī)器學(xué)習(xí)算法,可支持20多種大規(guī)模并行機(jī)器學(xué)習(xí)算法,提供包括數(shù)據(jù)預(yù)處理算法、分類算法、聚類算法、主題模型、推薦算法、深度學(xué)習(xí)、序列模型、在線學(xué)習(xí)在內(nèi)的各種機(jī)器學(xué)習(xí)算法支持,并通過分布和并行化計算實現(xiàn)優(yōu)異的計算性能。BML在百度內(nèi)部的業(yè)務(wù)系統(tǒng)中經(jīng)歷了線上大規(guī)模使用部署考驗,承載公司內(nèi)各種重要的在線業(yè)務(wù)線應(yīng)用,包括鳳巢廣告CTR預(yù)估、搜索LTR排名等。
了解詳情或下載文章請點(diǎn)擊閱讀原文(安卓用戶請選擇“在瀏覽器中打開”)
總結(jié)
以上是生活随笔為你收集整理的《大数据》第1期“专题”——大数据机器学习系统研究进展(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: libevent事件驱动库的学习视频教程
- 下一篇: 作者:张志恒(1990-),男,兰州大学