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