亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)研究進(jìn)展

        2015-04-06 08:24:40黃宜華
        大數(shù)據(jù) 2015年1期
        關(guān)鍵詞:編程機(jī)器矩陣

        黃宜華

        1.南京大學(xué)計(jì)算機(jī)軟件新技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室 南京 210023;2.南京大學(xué)PASA大數(shù)據(jù)技術(shù)實(shí)驗(yàn)室 南京 210023

        大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)研究進(jìn)展

        黃宜華1,2

        1.南京大學(xué)計(jì)算機(jī)軟件新技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室 南京 210023;2.南京大學(xué)PASA大數(shù)據(jù)技術(shù)實(shí)驗(yàn)室 南京 210023

        要實(shí)現(xiàn)高效的大數(shù)據(jù)機(jī)器學(xué)習(xí),需要構(gòu)建一個(gè)能同時(shí)支持機(jī)器學(xué)習(xí)算法設(shè)計(jì)和大規(guī)模數(shù)據(jù)處理的一體化大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。研究設(shè)計(jì)高效、可擴(kuò)展且易于使用的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)面臨諸多技術(shù)挑戰(zhàn)。近年來,大數(shù)據(jù)浪潮的興起,推動(dòng)了大數(shù)據(jù)機(jī)器學(xué)習(xí)的迅猛發(fā)展,使大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)成為大數(shù)據(jù)領(lǐng)域的一個(gè)熱點(diǎn)研究問題。介紹了國(guó)內(nèi)外大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的基本概念、基本研究問題、技術(shù)特征、系統(tǒng)分類以及典型系統(tǒng);在此基礎(chǔ)上,進(jìn)一步介紹了本實(shí)驗(yàn)室研究設(shè)計(jì)的一個(gè)跨平臺(tái)統(tǒng)一大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)——Octopus(大章魚)。

        大數(shù)據(jù);機(jī)器學(xué)習(xí);分布并行計(jì)算;大數(shù)據(jù)處理平臺(tái)

        1 大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)研究背景

        近年來,大數(shù)據(jù)技術(shù)在全球發(fā)展迅猛,掀起了巨大的研究熱潮,引起全球業(yè)界、學(xué)術(shù)界和各國(guó)政府的高度關(guān)注。隨著計(jì)算機(jī)和信息技術(shù)的迅猛發(fā)展和普及應(yīng)用,行業(yè)應(yīng)用數(shù)據(jù)呈爆炸性增長(zhǎng)。動(dòng)輒達(dá)到數(shù)百TB甚至數(shù)PB規(guī)模的行業(yè)/企業(yè)大數(shù)據(jù)已經(jīng)遠(yuǎn)遠(yuǎn)超出了傳統(tǒng)計(jì)算技術(shù)和信息系統(tǒng)的處理能力。與此同時(shí),大數(shù)據(jù)往往隱含著很多在小數(shù)據(jù)量時(shí)不具備的深度知識(shí)和價(jià)值,大數(shù)據(jù)智能化分析挖掘?qū)樾袠I(yè)/企業(yè)帶來巨大的商業(yè)價(jià)值,實(shí)現(xiàn)多種高附加值的增值服務(wù),從而提升行業(yè)/企業(yè)生產(chǎn)管理決策水平和經(jīng)濟(jì)效益。

        大數(shù)據(jù)分析挖掘處理主要分為簡(jiǎn)單分析和智能化復(fù)雜分析兩大類。簡(jiǎn)單分析主要采用類似于傳統(tǒng)數(shù)據(jù)庫OLAP的處理技術(shù)和方法,用SQL完成各種常規(guī)的查詢統(tǒng)計(jì)分析;而大數(shù)據(jù)的深度價(jià)值僅通過簡(jiǎn)單分析是難以發(fā)現(xiàn)的,通常需要使用基于機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的智能化復(fù)雜分析才能實(shí)現(xiàn)。

        機(jī)器學(xué)習(xí)和數(shù)據(jù)分析是將大數(shù)據(jù)轉(zhuǎn)換成有用知識(shí)的關(guān)鍵技術(shù),并且有研究表明,在很多情況下,處理的數(shù)據(jù)規(guī)模越大,機(jī)器學(xué)習(xí)模型的效果會(huì)越好[1~3]。目前,國(guó)內(nèi)外業(yè)界和學(xué)術(shù)界專家普遍認(rèn)同的觀點(diǎn)是,越來越多的海量數(shù)據(jù)資源加上越來越強(qiáng)大的計(jì)算能力,已經(jīng)成為推動(dòng)大數(shù)據(jù)時(shí)代人工智能技術(shù)和應(yīng)用發(fā)展的動(dòng)力,將基于大數(shù)據(jù)的機(jī)器學(xué)習(xí)和人工智能推上了新一輪發(fā)展浪潮,讓大數(shù)據(jù)機(jī)器學(xué)習(xí)(big data machine learning)成為全球業(yè)界和學(xué)術(shù)界高度關(guān)注的熱點(diǎn)研究領(lǐng)域。隨著大數(shù)據(jù)時(shí)代的來臨,Google、Facebook、微軟、百度、騰訊等國(guó)內(nèi)外著名企業(yè)均紛紛成立專門的基于大數(shù)據(jù)的機(jī)器學(xué)習(xí)與人工智能研發(fā)機(jī)構(gòu),深入系統(tǒng)地研究基于大數(shù)據(jù)的機(jī)器學(xué)習(xí)和智能化計(jì)算技術(shù)。

        由于大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘等智能計(jì)算技術(shù)在大數(shù)據(jù)智能化分析處理應(yīng)用中具有極其重要的作用,在2014年12月中國(guó)計(jì)算機(jī)學(xué)會(huì)(CCF)大數(shù)據(jù)專家委員會(huì)上百位大數(shù)據(jù)相關(guān)領(lǐng)域?qū)W者和技術(shù)專家投票推選出的“2015年大數(shù)據(jù)十大熱點(diǎn)技術(shù)與發(fā)展趨勢(shì)”中,結(jié)合機(jī)器學(xué)習(xí)等智能計(jì)算技術(shù)的大數(shù)據(jù)分析技術(shù)被推選為大數(shù)據(jù)領(lǐng)域第一大研究熱點(diǎn)和發(fā)展趨勢(shì)[4]。

        由于大數(shù)據(jù)機(jī)器學(xué)習(xí)在具體實(shí)現(xiàn)時(shí)通常需要使用分布式和并行化大數(shù)據(jù)處理技術(shù)方法,也有人將大數(shù)據(jù)機(jī)器學(xué)習(xí)稱為“分布式機(jī)器學(xué)習(xí)”(distributed machine learning)或“大規(guī)模機(jī)器學(xué)習(xí)”(largescale machine learning)。

        大數(shù)據(jù)機(jī)器學(xué)習(xí),不僅是機(jī)器學(xué)習(xí)和算法設(shè)計(jì)問題,還是一個(gè)大規(guī)模系統(tǒng)問題。它既不是單純的機(jī)器學(xué)習(xí),也不是單純的大數(shù)據(jù)處理技術(shù)所能解決的問題,而是一個(gè)同時(shí)涉及機(jī)器學(xué)習(xí)和大數(shù)據(jù)處理兩個(gè)主要方面的交叉性研究課題。一方面,它仍然需要繼續(xù)關(guān)注機(jī)器學(xué)習(xí)的方法和算法本身,即需要繼續(xù)研究新的或改進(jìn)的學(xué)習(xí)模型和學(xué)習(xí)方法,以不斷提升分析預(yù)測(cè)結(jié)果的準(zhǔn)確性;與此同時(shí),由于數(shù)據(jù)規(guī)模巨大,大數(shù)據(jù)機(jī)器學(xué)習(xí)會(huì)使幾乎所有的傳統(tǒng)串行化機(jī)器學(xué)習(xí)算法難以在可接受的時(shí)間內(nèi)完成計(jì)算,從而使得算法在實(shí)際應(yīng)用場(chǎng)景中失效。因此,大數(shù)據(jù)機(jī)器學(xué)習(xí)在關(guān)注機(jī)器學(xué)習(xí)方法和算法研究的同時(shí),還要關(guān)注如何結(jié)合分布式和并行化的大數(shù)據(jù)處理技術(shù),以便在可接受的時(shí)間內(nèi)完成計(jì)算。為了能有效完成大數(shù)據(jù)機(jī)器學(xué)習(xí)過程,需要研究并構(gòu)建兼具機(jī)器學(xué)習(xí)和大規(guī)模分布并行計(jì)算處理能力的一體化系統(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ù)特征

        [5,6]專門介紹了大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的技術(shù)特征。

        如圖1所示,一個(gè)大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)會(huì)同時(shí)涉及機(jī)器學(xué)習(xí)和大數(shù)據(jù)處理兩方面的諸多復(fù)雜技術(shù)問題,包括機(jī)器學(xué)習(xí)方面的模型、訓(xùn)練、精度問題以及大數(shù)據(jù)處理方面的分布式存儲(chǔ)、并行化計(jì)算、網(wǎng)絡(luò)通信、局部性計(jì)算、任務(wù)調(diào)度、容錯(cuò)等諸多因素。這些因素互相影響,交織在一起,大大增加了系統(tǒng)設(shè)計(jì)的復(fù)雜性。因此,大數(shù)據(jù)機(jī)器學(xué)習(xí)已經(jīng)不僅僅是一個(gè)算法研究問題,而是需要針對(duì)大數(shù)據(jù)集,考慮從底層的大數(shù)據(jù)分布存儲(chǔ)到中層的大數(shù)據(jù)并行化計(jì)算,再到上層的機(jī)器學(xué)習(xí)算法,設(shè)計(jì)一種一體化的支撐系統(tǒng),形成易于為數(shù)據(jù)分析程序員和機(jī)器學(xué)習(xí)研究者使用的、完整的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。

        一個(gè)理想的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)通常需要具備以下幾個(gè)方面的技術(shù)要素和特征[5~7]。

        ● 應(yīng)當(dāng)從整個(gè)學(xué)習(xí)的生命周期/流水線來考慮,包括訓(xùn)練數(shù)據(jù)和特征的提取、并行學(xué)習(xí)算法的設(shè)計(jì)、訓(xùn)練模型和參數(shù)的查詢管理、分布式訓(xùn)練計(jì)算過程,都應(yīng)在一個(gè)一體化的學(xué)習(xí)系統(tǒng)平臺(tái)上完成。

        ● 應(yīng)提供多種并行訓(xùn)練模式,支持不同的機(jī)器學(xué)習(xí)模型和算法。

        ● 需要提供對(duì)底層系統(tǒng)的抽象,以實(shí)現(xiàn)對(duì)底層通用大數(shù)據(jù)處理引擎的支持,并提供數(shù)據(jù)科學(xué)中常用的編程語言接口(API)。

        ● 應(yīng)該擁有開放和豐富的生態(tài)、廣泛的應(yīng)用和快速的進(jìn)化能力。

        在上述技術(shù)特征中,一個(gè)非常重要的思路是,要通過系統(tǒng)抽象來降低系統(tǒng)設(shè)計(jì)的復(fù)雜性。如圖2所示,一個(gè)設(shè)計(jì)良好的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng),應(yīng)當(dāng)通過定義特定的機(jī)器學(xué)習(xí)編程計(jì)算和系統(tǒng)抽象接口,將上層機(jī)器學(xué)習(xí)和底層分布式系統(tǒng)解耦開來,將機(jī)器學(xué)習(xí)實(shí)現(xiàn)在現(xiàn)有的大數(shù)據(jù)計(jì)算平臺(tái)之上,而不需要考慮底層系統(tǒng)層面的因素,以此實(shí)現(xiàn)底層大數(shù)據(jù)處理平臺(tái)對(duì)上層用戶的透明化,讓上層用戶從諸多底層的分布和并行化大數(shù)據(jù)編程計(jì)算細(xì)節(jié)中解放出來,以便他們致力于上層的機(jī)器學(xué)習(xí)模型和算法的設(shè)計(jì)實(shí)現(xiàn)。通過編程計(jì)算和系統(tǒng)抽象層API,向上提供各種機(jī)器學(xué)習(xí)編程計(jì)算接口以及學(xué)習(xí)模型和訓(xùn)練數(shù)據(jù)的表示,向下由底層分布式系統(tǒng)負(fù)責(zé)處理并提供高效的分布和并行化計(jì)算實(shí)現(xiàn)。

        圖1 大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)所涉及的復(fù)雜因素[5]

        圖2 大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)抽象

        3 大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的主要研究問題

        知名的Apache Flink大數(shù)據(jù)分析系統(tǒng)研究者在2014年VLDB會(huì)議主題報(bào)告和論文中[8],從數(shù)據(jù)分析的復(fù)雜程度和數(shù)據(jù)規(guī)模的維度,考察了現(xiàn)有的相關(guān)研究工作和系統(tǒng),如圖3所示?,F(xiàn)有的系統(tǒng)要么主要用于小規(guī)模復(fù)雜分析,要么主要用于大規(guī)模的簡(jiǎn)單統(tǒng)計(jì)分析,缺少既具有復(fù)雜數(shù)據(jù)分析能力又具有強(qiáng)大的大數(shù)據(jù)處理能力的大數(shù)據(jù)分析系統(tǒng);文章作者甚至認(rèn)為,對(duì)于行業(yè)大數(shù)據(jù)分析人員而言,現(xiàn)有的工具還處于“石器時(shí)代”[8]。

        與此同時(shí),著名的UC Berkeley AMPLab在研究基于Spark的機(jī)器學(xué)習(xí)庫MLBase[9]時(shí),從計(jì)算性能和系統(tǒng)易用性兩個(gè)重要維度,考察了現(xiàn)有的大數(shù)據(jù)機(jī)器學(xué)習(xí)研究工作和系統(tǒng),如圖4所示。面向機(jī)器學(xué)習(xí)和數(shù)據(jù)分析時(shí),目前已有的工作和系統(tǒng),絕大多數(shù)都未能同時(shí)具備大規(guī)模分析處理能力和良好的系統(tǒng)易用性。

        因此,大數(shù)據(jù)機(jī)器學(xué)習(xí)除了需要繼續(xù)關(guān)注和研究傳統(tǒng)意義上的學(xué)習(xí)方法和算法問題,以不斷提高學(xué)習(xí)精度外,還需要重點(diǎn)關(guān)注和研究解決大數(shù)據(jù)場(chǎng)景下所特有的兩大技術(shù)問題:一是大數(shù)據(jù)復(fù)雜分析時(shí)的計(jì)算性能問題;二是大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的可編程性和易用性問題。

        (1)大數(shù)據(jù)復(fù)雜分析時(shí)的計(jì)算性能問題

        圖3 研究者Apache Flink提出的分析維度和研究現(xiàn)狀[8]

        在計(jì)算性能方面,大規(guī)模數(shù)據(jù)集給很多傳統(tǒng)串行的機(jī)器學(xué)習(xí)和數(shù)據(jù)分析挖掘算法帶來很大的挑戰(zhàn),需要研究解決面向大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析的高效計(jì)算方法和系統(tǒng)。在數(shù)據(jù)集較小時(shí),很多復(fù)雜度在O(n log n)、O(n2)甚至O(n3)的傳統(tǒng)串行化機(jī)器學(xué)習(xí)算法都可以有效工作;但當(dāng)數(shù)據(jù)規(guī)模增長(zhǎng)到極大尺度時(shí),現(xiàn)有的串行化算法將花費(fèi)難以接受的時(shí)間開銷,使得算法在實(shí)際應(yīng)用場(chǎng)景中失效,這給業(yè)界大量實(shí)際的大數(shù)據(jù)復(fù)雜分析應(yīng)用帶來很多新的挑戰(zhàn)和問題[10]。正如微軟全球副總裁陸奇博士在2012年指出的,“大數(shù)據(jù)使得現(xiàn)有的大多數(shù)機(jī)器學(xué)習(xí)算法失效,面向大數(shù)據(jù)處理時(shí)這些算法都需要重寫”1http://www. china-cloud. com/zt/2012i COME/。

        圖4 Spark系統(tǒng)研究者提出的分析維度和研究現(xiàn)狀[9]

        在大型互聯(lián)網(wǎng)企業(yè),大規(guī)模機(jī)器學(xué)習(xí)算法經(jīng)常用于處理十億至千億級(jí)別的樣本以及一億至數(shù)十億數(shù)據(jù)特征的大規(guī)模數(shù)據(jù)集。例如,Google著名的Seti太空搜索項(xiàng)目需要進(jìn)行高達(dá)千億樣本、十億特征數(shù)據(jù)的大規(guī)模機(jī)器學(xué)習(xí)2http://google research. blogspot.com/ 2010/04/ lessonslearneddevelopingpractical.html,騰訊Peacock主題模型分析系統(tǒng)需要進(jìn)行高達(dá)十億文檔、百萬詞匯、百萬主題的主題模型訓(xùn)練,而僅一個(gè)百萬詞匯乘以百萬主題的矩陣,其數(shù)據(jù)存儲(chǔ)量即高達(dá)3 TB,如果再考慮十億文檔乘以百萬主題的矩陣,其數(shù)據(jù)量更是高達(dá)3 PB[3]。如此大量的訓(xùn)練樣本,加上機(jī)器學(xué)習(xí)算法本身的復(fù)雜性,導(dǎo)致難以在傳統(tǒng)的串行化計(jì)算平臺(tái)上、在可接受的時(shí)間內(nèi)完成如此巨大的復(fù)雜分析計(jì)算任務(wù),因而帶來了十分突出的計(jì)算性能問題。因此,大數(shù)據(jù)機(jī)器學(xué)習(xí)算法和系統(tǒng)需要研究解決大規(guī)模場(chǎng)景下高效的分布式和并行化算法設(shè)計(jì)以及計(jì)算問題,以保證算法和系統(tǒng)可以在可接受的時(shí)間內(nèi)完成大規(guī)模數(shù)據(jù)的學(xué)習(xí)和訓(xùn)練。

        (2)大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的可編程性和易用性問題

        為了滿足急劇增長(zhǎng)的大數(shù)據(jù)處理需求,過去幾年來,全球推出了Hadoop[11]和Spark[12]等多種主流大數(shù)據(jù)處理技術(shù)和系統(tǒng)平臺(tái)。這些主流技術(shù)和平臺(tái)的出現(xiàn)為大數(shù)據(jù)的處理提供了良好的技術(shù)手段和方法。Hadoop的出現(xiàn)使得大數(shù)據(jù)處理技術(shù)和平臺(tái)從無到有,而基于內(nèi)存計(jì)算的Spark系統(tǒng)的出現(xiàn)使得大數(shù)據(jù)分析計(jì)算從慢到快。然而,現(xiàn)有的大數(shù)據(jù)處理技術(shù)和系統(tǒng)平臺(tái)都存在很大的易用性問題,難以為普通的程序員掌握和使用,尤其是面向復(fù)雜的大規(guī)模機(jī)器學(xué)習(xí)和數(shù)據(jù)分析時(shí),這個(gè)問題更為突出。

        大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析的并行化程序設(shè)計(jì),比傳統(tǒng)的串行化算法設(shè)計(jì)復(fù)雜很多、對(duì)程序員的技術(shù)要求更高。對(duì)于普通的數(shù)據(jù)分析程序員或機(jī)器學(xué)習(xí)研究者來說,在特定的大數(shù)據(jù)編程模型和平臺(tái)下進(jìn)行并行化機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法設(shè)計(jì),需要掌握很多分布式系統(tǒng)背景知識(shí)和并行程序設(shè)計(jì)技巧,這對(duì)他們來說難度較大,經(jīng)常要把實(shí)際工作的大部分時(shí)間花費(fèi)在底層復(fù)雜的并行化和分布式編程和調(diào)試上,給上層數(shù)據(jù)分析和算法設(shè)計(jì)工作帶來很大的不便和困難,導(dǎo)致普通程序員與現(xiàn)有的各種大數(shù)據(jù)處理平臺(tái)之間存在一個(gè)難以逾越的鴻溝[8,9,13~15]。

        另一方面,即使對(duì)于諸如Google、百度等具有強(qiáng)大技術(shù)力量的互聯(lián)網(wǎng)企業(yè)程序員來說,隨著多種大數(shù)據(jù)處理與編程平臺(tái)的出現(xiàn)以及各種分析應(yīng)用問題需求的不同,他們也常常需要針對(duì)不同平臺(tái),重復(fù)編寫和測(cè)試各種并行化機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法,這種在多個(gè)大數(shù)據(jù)平臺(tái)上重復(fù)編寫和嘗試數(shù)以百計(jì)的機(jī)器學(xué)習(xí)算法的工作負(fù)擔(dān)也很重。正如阿里巴巴集團(tuán)副總裁、高級(jí)研究員章文嵩博士在中國(guó)計(jì)算機(jī)學(xué)會(huì)第一屆大數(shù)據(jù)學(xué)術(shù)會(huì)議上所指出的,“淘寶內(nèi)部需要使用的并行化機(jī)器學(xué)習(xí)算法很多,隨著新型的并行化計(jì)算框架的逐步出現(xiàn),需要將其逐個(gè)實(shí)現(xiàn)到MPI、MapReduce、Spark等并行計(jì)算框架上;如果后面出現(xiàn)更先進(jìn)的框架,又面臨著將這些算法重新實(shí)現(xiàn)一遍的負(fù)擔(dān)”。

        針對(duì)大數(shù)據(jù)的機(jī)器學(xué)習(xí)和數(shù)據(jù)分析,現(xiàn)有的大數(shù)據(jù)處理技術(shù)和平臺(tái)存在很大的可編程性和易用性問題,導(dǎo)致普通程序員和常規(guī)的程序設(shè)計(jì)方法與現(xiàn)有的大數(shù)據(jù)分析處理編程技術(shù)之間存在著一個(gè)很大的鴻溝。正如CCF大數(shù)據(jù)專家委員會(huì)《2015年大數(shù)據(jù)發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告》指出的那樣,“由于現(xiàn)有的大數(shù)據(jù)平臺(tái)易用性差,而垂直應(yīng)用行業(yè)的數(shù)據(jù)分析又涉及領(lǐng)域?qū)<抑R(shí)和領(lǐng)域建模,目前在大數(shù)據(jù)行業(yè)分析應(yīng)用與通用的大數(shù)據(jù)技術(shù)之間存在很大的鴻溝,缺少相互的交叉融合”[4]。

        因此,大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)要解決的一個(gè)重要問題是,讓不易使用的大數(shù)據(jù)處理技術(shù)和平臺(tái)變得易于使用,要填平普通程序員和常規(guī)程序設(shè)計(jì)方法與現(xiàn)有的大數(shù)據(jù)處理技術(shù)之間的鴻溝,盡可能讓普通程序員用常規(guī)程序設(shè)計(jì)方法便能有效完成大數(shù)據(jù)的復(fù)雜分析處理。

        根據(jù)Google Seti項(xiàng)目研究人員在開發(fā)實(shí)際的大型機(jī)器學(xué)習(xí)系統(tǒng)上的經(jīng)驗(yàn),在面向大數(shù)據(jù)時(shí),考慮到用戶開發(fā)效率問題,系統(tǒng)易用性與提高機(jī)器學(xué)習(xí)精度幾乎同等重要,有時(shí)甚至比精度問題更為重要,“也許過去學(xué)術(shù)界很少關(guān)心設(shè)計(jì)一個(gè)精度稍差、但有更好易用性和系統(tǒng)可靠性的學(xué)習(xí)算法,但在實(shí)際應(yīng)用中,這會(huì)體現(xiàn)出非常重要的價(jià)值”。

        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ù)界在嘗試多種途徑和方法,在不同的并行計(jì)算模型和平臺(tái)下,在實(shí)際的數(shù)據(jù)分析挖掘中得到應(yīng)用。

        較早出現(xiàn)以及現(xiàn)有的一些大數(shù)據(jù)機(jī)器學(xué)習(xí)算法和系統(tǒng)大多采用較為低層的緊耦合、定制化方法構(gòu)建。這些算法和系統(tǒng)大都針對(duì)特定的應(yīng)用,選擇特定的平臺(tái)和模型,針對(duì)特定的機(jī)器學(xué)習(xí)模型和特定的計(jì)算模式,從串行算法和原型到分布并行化算法和原型,自底層向上進(jìn)行緊耦合和定制化的開發(fā)和優(yōu)化。盡管這可以最大化利用系統(tǒng)資源以達(dá)到最佳的性能,但這種低層的緊耦合定制化實(shí)現(xiàn)方法,將學(xué)習(xí)和系統(tǒng)混雜在一起,實(shí)現(xiàn)難度大,算法和系統(tǒng)也難以調(diào)試和維護(hù)[5,6]。

        從前述的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)特征來看,一個(gè)設(shè)計(jì)良好的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)應(yīng)當(dāng)考慮高層的系統(tǒng)層抽象,向上為程序員提供易于使用的高層機(jī)器學(xué)習(xí)算法編程接口,向下基于現(xiàn)有的通用化大數(shù)據(jù)處理平臺(tái)提供大規(guī)模數(shù)據(jù)的分布和并行化計(jì)算能力。為此,近年來已經(jīng)開始出現(xiàn)基于各種高層編程計(jì)算和系統(tǒng)抽象設(shè)計(jì)大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的研究工作。

        在高層編程計(jì)算和系統(tǒng)抽象上,目前的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)大致可分為3種主要的編程計(jì)算和系統(tǒng)抽象方法,分別是基于矩陣模型的抽象、基于圖模型的抽象以及基于參數(shù)模型的抽象。

        (1)基于矩陣模型的抽象

        基于矩陣模型的抽象基于這樣一個(gè)事實(shí):大多數(shù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法都可以表示為矩陣或向量代數(shù)計(jì)算,因此可以構(gòu)建一個(gè)基于矩陣計(jì)算模型的機(jī)器學(xué)習(xí)系統(tǒng),允許程序員直接基于矩陣計(jì)算快速構(gòu)建機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法。最典型的基于矩陣模型的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)尚不多見,UC Berkeley AMP Lab推出的Spark MLlib是一個(gè)試圖基于矩陣計(jì)算模型構(gòu)建上層各種機(jī)器學(xué)習(xí)算法的系統(tǒng)3https://spark. apache.org/docs/ 1.2.0/mllib-guide. html;最近Spark系統(tǒng)提出了一個(gè)DataFrame的數(shù)據(jù)抽象機(jī)制,允許基于矩陣和表等數(shù)據(jù)結(jié)構(gòu),設(shè)計(jì)各種機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法。此外,國(guó)內(nèi)由南京大學(xué)PASA大數(shù)據(jù)實(shí)驗(yàn)室研究開發(fā)的“Octopus(大章魚)”系統(tǒng)是一個(gè)以大規(guī)模矩陣模型為中心的跨平臺(tái)大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)4http://pasabigdata.nju. edu.cn/octopus/。

        (2)基于圖模型的抽象

        雖然矩陣可以表示大多數(shù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法,但對(duì)于一些基于圖模型的社會(huì)網(wǎng)絡(luò)分析問題,基于矩陣模型進(jìn)行計(jì)算并非最有效的方法(雖然圖和矩陣表示具有理論上的等價(jià)性)。矩陣模型對(duì)于圖數(shù)據(jù)的表達(dá)不如圖模型,且通常會(huì)面臨稀疏性的問題。因此,一些社會(huì)網(wǎng)絡(luò)分析類的實(shí)際應(yīng)用需要基于更為高效的圖模型的學(xué)習(xí)和分析方法,為此出現(xiàn)了相應(yīng)的基于圖模型的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。最典型的基于圖模型的系統(tǒng)是美國(guó)卡耐基梅隆大學(xué)(CMU)推出的GraphLab系統(tǒng)[16]以及基于Spark構(gòu)建的GraphX系統(tǒng)。

        (3)基于參數(shù)模型的抽象

        基于矩陣模型和圖模型的系統(tǒng)主要是從數(shù)據(jù)表示模型的角度來構(gòu)建系統(tǒng),這兩種方法的特點(diǎn)是更接近于實(shí)際學(xué)習(xí)問題中自然化的數(shù)據(jù)表示和計(jì)算模型,因此對(duì)于數(shù)據(jù)分析人員方便快速地構(gòu)建機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法比較自然和直觀。但是,大數(shù)據(jù)機(jī)器學(xué)習(xí)常常還需要涉及大規(guī)模模型,例如,近幾年發(fā)展迅猛的深度神經(jīng)網(wǎng)絡(luò)算法,常常需要通過對(duì)大量模型參數(shù)的調(diào)優(yōu)來提高學(xué)習(xí)精度,在這種情況下,上述兩種方法會(huì)缺少靈活性,難以讓算法設(shè)計(jì)者通過控制模型參數(shù)進(jìn)行算法優(yōu)化。為此,有研究者提出了一種基于模型參數(shù)的抽象方法,即把所有機(jī)器學(xué)習(xí)算法抽象為對(duì)學(xué)習(xí)過程中一組模型參數(shù)的管理和控制,并提供對(duì)大規(guī)模場(chǎng)景下大量模型參數(shù)的有效管理和訪問。目前參數(shù)模型最典型的方法是最初由美國(guó)卡耐基梅隆大學(xué)的Li Mu等人提出的、后在很多系統(tǒng)中得到進(jìn)一步應(yīng)用的Parameter Server[17,18]。

        實(shí)際的系統(tǒng)也可能會(huì)是一種兼有上述多種類型的混合系統(tǒng)。此外,也有不少系統(tǒng)從并行模式角度來區(qū)分,分為數(shù)據(jù)并行和模型并行兩種方式,且一些系統(tǒng)只提供數(shù)據(jù)并行方式,另一些系統(tǒng)會(huì)同時(shí)提供數(shù)據(jù)并行和模型并行兩種方式。

        5 典型大數(shù)據(jù)學(xué)習(xí)方法和系統(tǒng)介紹

        5.1 基于特定平臺(tái)的定制式并行化機(jī)器學(xué)習(xí)算法與算法庫

        隨著Hadoop MapReduce[11]和Spark[12]大數(shù)據(jù)并行計(jì)算與編程平臺(tái)的出現(xiàn)和成熟應(yīng)用,Hadoop和Spark已經(jīng)成為目前大數(shù)據(jù)分析處理的主流平臺(tái)。為了解決大規(guī)模機(jī)器學(xué)習(xí)問題,有大量的研究工作致力于基于Hadoop MapReduce和Spark以及傳統(tǒng)的MPI并行計(jì)算框架,完成各種并行化機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法的設(shè)計(jì)。在諸如TPDS、JPDC、IPDPS、ICPP、ICPADS、IEEE BigData等大數(shù)據(jù)和分布并行計(jì)算領(lǐng)域的知名期刊和國(guó)際會(huì)議上,這些并行化算法研究工作不勝枚舉。由于需要同時(shí)顧及上層機(jī)器學(xué)習(xí)算法設(shè)計(jì)和底層分布并行化大數(shù)據(jù)處理系統(tǒng)層細(xì)節(jié),總體而言,基于上述不同的并行化編程方法和平臺(tái)進(jìn)行并行化機(jī)器學(xué)習(xí)算法設(shè)計(jì),仍屬于一種專業(yè)性較強(qiáng)、技術(shù)要求較高、過程較為繁瑣的工作,難以為缺少分布式和并行計(jì)算知識(shí)背景的普通程序員使用。

        為了讓普通數(shù)據(jù)分析程序員能夠直接使用并行化機(jī)器學(xué)習(xí)算法,目前普遍的一種做法是,在不同的并行化計(jì)算平臺(tái)上,由專業(yè)的機(jī)器學(xué)習(xí)算法設(shè)計(jì)者實(shí)現(xiàn)并行化機(jī)器學(xué)習(xí)算法,提供一個(gè)機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘工具包以供一般的數(shù)據(jù)分析和應(yīng)用開發(fā)程序員直接使用,如Hadoop下的Mahout5http://mahout. apache.org/以及Spark環(huán)境下的MLlib。

        Mahout的主要任務(wù)是設(shè)計(jì)并提供一些基于MapReduce的可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法庫,包括聚類、分類、推薦過濾、頻繁項(xiàng)集挖掘等。這些并行化算法都是基于Hadoop MapReduce平臺(tái)完成的,用戶可直接調(diào)用Mahout算法庫實(shí)現(xiàn)好的算法。然而,Mahout提供的并行化機(jī)器學(xué)習(xí)算法數(shù)量有限,而且作為標(biāo)準(zhǔn)的軟件包,其所提供的算法幾乎都是標(biāo)準(zhǔn)的,在算法精度和性能上不一定能滿足用戶的需要。進(jìn)一步,MapReduce的設(shè)計(jì)目標(biāo)是解決數(shù)據(jù)密集但計(jì)算邏輯相對(duì)簡(jiǎn)單的批處理問題。然而,大多數(shù)機(jī)器學(xué)習(xí)算法的計(jì)算流程都比較復(fù)雜,模型的訓(xùn)練過程往往需要多次迭代計(jì)算(如梯度下降算法)、有中間數(shù)據(jù)集需要共享等。MapReduce模型處理這類問題時(shí),額外的調(diào)度和初始化開銷導(dǎo)致其處理性能偏低。

        為了克服MapReduce在計(jì)算性能上的缺陷,不斷地有新的并行化計(jì)算模型和框架出現(xiàn),UC Berkeley AMP實(shí)驗(yàn)室推出的、目前已成為Apache開源項(xiàng)目的Spark[12]系統(tǒng)是目前最有影響力的大數(shù)據(jù)處理平臺(tái)之一。Spark使用基于內(nèi)存計(jì)算的并行化計(jì)算模型RDD(resilient distributed dataset)[12],提供了一個(gè)強(qiáng)大的分布式內(nèi)存并行計(jì)算引擎,實(shí)現(xiàn)了優(yōu)異的計(jì)算性能,同時(shí)還保持與Hadoop平臺(tái)在底層分布式數(shù)據(jù)存儲(chǔ)上的兼容性。在Spark執(zhí)行引擎上,AMP實(shí)驗(yàn)室實(shí)現(xiàn)了很多機(jī)器學(xué)習(xí)算法,并逐步整理成Spark下的一個(gè)機(jī)器學(xué)習(xí)算法庫項(xiàng)目MLlib。MLlib目前也包含一些矩陣操作,并希望基于矩陣的表示設(shè)計(jì)開發(fā)一些統(tǒng)計(jì)包和機(jī)器學(xué)習(xí)算法庫。為了加速上層計(jì)算,MLlib底層通過Breeze使用了BLAS(basic linear 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ǔ),UC Berkeley還計(jì)劃研發(fā)MLBase[9]項(xiàng)目,該項(xiàng)目增加了機(jī)器學(xué)習(xí)模型自動(dòng)選擇和參數(shù)自動(dòng)優(yōu)化等功能,提供了以目標(biāo)為導(dǎo)向的高層機(jī)器學(xué)習(xí)方法接口。

        提供機(jī)器學(xué)習(xí)算法庫在一定程度上減輕了程序員進(jìn)行機(jī)器學(xué)習(xí)算法設(shè)計(jì)的負(fù)擔(dān)。但即使如此,程序員編寫程序時(shí)仍然需要熟悉具體的并行編程計(jì)算模型和平臺(tái),而且由于實(shí)際數(shù)據(jù)分析應(yīng)用的需求不同,很多時(shí)候工具包所提供的通用算法在學(xué)習(xí)精度和計(jì)算性能上可能不能滿足需求,需要程序員定制和改進(jìn)某個(gè)并行化機(jī)器學(xué)習(xí)算法或者開發(fā)新的算法,這對(duì)普通數(shù)據(jù)分析程序員仍然是很大的挑戰(zhàn)。

        5.2 結(jié)合傳統(tǒng)數(shù)據(jù)分析平臺(tái)的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)

        雖然有了基于大數(shù)據(jù)處理平臺(tái)的機(jī)器學(xué)習(xí)算法設(shè)計(jì)方法,能夠較好地解決一體化的大數(shù)據(jù)存儲(chǔ)、計(jì)算以及并行化算法設(shè)計(jì)問題,但僅有機(jī)器學(xué)習(xí)系統(tǒng)仍然不能很好地解決各個(gè)平臺(tái)對(duì)終端用戶存在的可編程性和易用性不夠的問題。為此,還需要進(jìn)一步研究解決這些問題。

        從可編程性和易用性角度來說,對(duì)于行業(yè)數(shù)據(jù)分析師,最熟悉使用的分析語言和環(huán)境通常是R、Python、MATLAB等系統(tǒng)。R是目前在數(shù)據(jù)分析應(yīng)用領(lǐng)域最廣為使用的數(shù)據(jù)分析、統(tǒng)計(jì)計(jì)算及制圖的開源軟件系統(tǒng),提供了大量的專業(yè)模塊和實(shí)用工具。為了盡可能縮小R語言環(huán)境與現(xiàn)有大數(shù)據(jù)平臺(tái)間的鴻溝,工業(yè)界和研究界已經(jīng)嘗試在R中利用分布式并行計(jì)算引擎來處理大數(shù)據(jù)。最早的工作和系統(tǒng)RHadoop6https://github.com/ Revolution Analytics/ RHadoop,是由Revolution Analytics發(fā)起的一個(gè)開源項(xiàng)目,其目標(biāo)是將統(tǒng)計(jì)語言R與Hadoop結(jié)合起來,目前該項(xiàng)目包括3個(gè)R package(包),分別為支持用R語言編寫MapReduce應(yīng)用的rmr、用于R語言訪問HDFS的rhdfs以及用于R語言訪問HBase的rhbase。其中,Hadoop主要用來存儲(chǔ)和處理底層的海量數(shù)據(jù),用R語言替代Java語言完成MapReduce算法的設(shè)計(jì)實(shí)現(xiàn)。

        類似地,UC Berkeley AMP實(shí)驗(yàn)室在2014年1月也推出了一個(gè)稱為SparkR的項(xiàng)目7S park R. https:// github.com/ amplab-extras/ SparkR-pkg。SparkR也是作為一個(gè)R的擴(kuò)展包,為R用戶提供一個(gè)輕量級(jí)的、在R環(huán)境里使用Spark RDD API編寫程序的接口。它允許用戶在R的shell環(huán)境里交互式地向Spark集群提交運(yùn)行作業(yè)。

        然而,目前的RHadoop和SparkR都還存在一個(gè)同樣的問題:仍要求用戶熟悉MapReduce或Spark RDD的編程框架和程序結(jié)構(gòu),然后將自己的MapReduce或Spark程序?qū)崿F(xiàn)到基于R的編程接口上,這和在Hadoop或Spark上寫應(yīng)用程序沒有太大的區(qū)別,只是編程接口用R語言封裝了一下。此外,這些工作都是基于單一平臺(tái),無法解決跨平臺(tái)統(tǒng)一大數(shù)據(jù)機(jī)器學(xué)習(xí)算法設(shè)計(jì)的問題。

        5.3 基于特定平臺(tái)的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)

        為了克服前述做法的缺陷,近年來,學(xué)術(shù)界和業(yè)界開始嘗試總結(jié)機(jī)器學(xué)習(xí)算法設(shè)計(jì)的共同特性,結(jié)合大規(guī)模學(xué)習(xí)時(shí)所需要考慮的底層分布式數(shù)據(jù)存儲(chǔ)和并行化計(jì)算等系統(tǒng)問題,專門研究能同時(shí)兼顧并支持大數(shù)據(jù)機(jī)器學(xué)習(xí)和大數(shù)據(jù)分布并行處理的一體化大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。

        在國(guó)內(nèi)外的機(jī)器學(xué)習(xí)和大數(shù)據(jù)技術(shù)方面的會(huì)議中,已經(jīng)頻繁出現(xiàn)大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)相關(guān)的研究工作,如Spark MLlib、IBM的SystemML、Apache Flink、GraphLab、Parameter Server、Petuum等;此外,騰訊、百度等國(guó)內(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í)云平臺(tái)BML。

        (1)Spark MLlib

        MLLib與Spark環(huán)境整合后可完整解決大數(shù)據(jù)的分布式存儲(chǔ)、并行化計(jì)算以及上層的機(jī)器學(xué)習(xí)算法設(shè)計(jì)和使用問題,因此,可將其視為一個(gè)基本的機(jī)器學(xué)習(xí)系統(tǒng)。目前其已經(jīng)向上層提供多種優(yōu)化方法、分類算法、回歸算法、推薦算法、聚類算法。但其算法數(shù)目和接口有限,難以完全滿足用戶各種各樣的需求,且作為一個(gè)算法庫,用戶難以對(duì)內(nèi)部算法進(jìn)行深層定制優(yōu)化。因此,其在靈活性方面仍然存在不足。

        (2)SystemML

        SystemML[14,15]是由IBM Waston Research Center 和IBM Almaden Research Center聯(lián)合研發(fā)的一款大數(shù)據(jù)學(xué)習(xí)系統(tǒng)。對(duì)用戶提供了一個(gè)類似于R語言的高層聲明式語言,基于這種語言編寫的程序可以被自動(dòng)編譯轉(zhuǎn)化為MapReduce作業(yè)在Hadoop集群上運(yùn)行。這種高層語言提供了大量的監(jiān)督和非監(jiān)督的機(jī)器學(xué)習(xí)算法所需要的線性代數(shù)操作算子,包括高層算子HOP(high-level operator)和底層算子LOP(low-level operator)。SystemML最大的優(yōu)勢(shì)是其具有較好的可編程性和易用性,用戶不需要具備任何分布式系統(tǒng)的概念或編程經(jīng)驗(yàn),即可利用其寫出可擴(kuò)展的機(jī)器學(xué)習(xí)算法;其最大的缺點(diǎn)在于底層計(jì)算平臺(tái)單一,只采用了MapReduce作為底層分布式執(zhí)行平臺(tái),而底層的MapReduce作業(yè)本身執(zhí)行性能并不高,近年來涌現(xiàn)出的高效分布式計(jì)算框架如Spark、Flink等,在眾多性能指標(biāo)上遠(yuǎn)遠(yuǎn)高于MapReduce。

        (3)Apache Flink

        Apache Flink[19]是由歐洲的多名研究者和多家資助單位(如EIT1 ICT Labs、DFG2、IBM、Oracle、HP等)聯(lián)合研發(fā)的一款開源的并行化數(shù)據(jù)分析軟件棧,項(xiàng)目早期的名稱是Stratosphere。經(jīng)過一段時(shí)間的發(fā)展,目前已經(jīng)成為Apache開源項(xiàng)目。Flink同樣意識(shí)到,數(shù)據(jù)分析人員在分布式系統(tǒng)上編寫大數(shù)據(jù)分析算法時(shí),需要有大量的精力耗費(fèi)在分布式程序調(diào)試以及底層調(diào)優(yōu)上。為了使數(shù)據(jù)分析人員能夠在無需顧及各種并行化優(yōu)化問題的情況下就可以進(jìn)行深度數(shù)據(jù)分析,F(xiàn)link提供了一款數(shù)據(jù)分析棧式軟件。它向用戶提供了一種專用的腳本式語言MeteorScript,并且會(huì)自動(dòng)將基于該語言開發(fā)的程序轉(zhuǎn)換到底層的分布式計(jì)算平臺(tái)Nephele上[20]。由于其專用性語言不夠普及,目前系統(tǒng)對(duì)語言接口又做了更多的擴(kuò)充,支持Java、Scala等語言。Flink項(xiàng)目的優(yōu)勢(shì)在于其從上到下提供了一整套完整的棧式解決方案,試圖為用戶提供易于使用的數(shù)據(jù)分析系統(tǒng),同時(shí)通過一些編譯優(yōu)化手段盡可能地提升程序執(zhí)行的性能;其缺點(diǎn)在于其底層是專用的單一化計(jì)算平臺(tái),與目前普遍使用的主流大數(shù)據(jù)平臺(tái)Hadoop和Spark尚未能集成使用,且上層的語言接口層也沒有包含現(xiàn)在數(shù)據(jù)分析師廣為使用的R、Python等語言接口。

        (4)GraphLab

        GraphLab[16]是CMU開發(fā)的一個(gè)以頂點(diǎn)為計(jì)算單元的大規(guī)模圖處理系統(tǒng),是一個(gè)基于圖模型抽象的機(jī)器學(xué)習(xí)系統(tǒng)。設(shè)計(jì)初衷主要是解決具有以下特點(diǎn)的機(jī)器學(xué)習(xí)問題:有局部依賴的稀疏數(shù)據(jù)集、迭代可收斂、異步執(zhí)行。為了實(shí)現(xiàn)這個(gè)目標(biāo),GraphLab把數(shù)據(jù)之間的依賴關(guān)系抽象成Graph結(jié)構(gòu),以頂點(diǎn)為計(jì)算單元,將算法的執(zhí)行過程抽象成每個(gè)頂點(diǎn)上的GAS(gather、apply、scatter)過程,其并行的核心思想是多個(gè)頂點(diǎn)同時(shí)執(zhí)行。GraphLab的優(yōu)點(diǎn)是能夠高效地處理大規(guī)模圖算法問題或者可歸結(jié)為圖問題的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法問題;其缺點(diǎn)在于提供的接口細(xì)節(jié)比較復(fù)雜,對(duì)于普通的數(shù)據(jù)分析程序員而言,有較大的使用難度。

        (5)Parameter Server與Petuum

        很多機(jī)器學(xué)習(xí)算法常常要解決學(xué)習(xí)訓(xùn)練過程中模型參數(shù)的高效存儲(chǔ)與更新問題。為了有效應(yīng)對(duì)和滿足大數(shù)據(jù)場(chǎng)景下這類機(jī)器學(xué)習(xí)算法的需要,研究者提出了一種稱為Parameter Server的框架[17],提供了一個(gè)分布式全局模型參數(shù)存儲(chǔ)和訪問接口,模型參數(shù)存儲(chǔ)在多臺(tái)服務(wù)器(server)中,工作節(jié)點(diǎn)(worker)可以通過網(wǎng)絡(luò)訪問 API方便地讀取全局參數(shù)。

        Li Mu等人開發(fā)了一套基于Parameter Server框架的分布式機(jī)器學(xué)習(xí)系統(tǒng)[17],該系統(tǒng)由一個(gè)服務(wù)器組(server group)和多個(gè)工作組(worker group)構(gòu)成。其中,服務(wù)器組中包括一個(gè)服務(wù)器管理(server manager)節(jié)點(diǎn)和多個(gè)服務(wù)器節(jié)點(diǎn)。每個(gè)服務(wù)器節(jié)點(diǎn)存儲(chǔ)部分全局共享參數(shù);服務(wù)器管理節(jié)點(diǎn)用來存儲(chǔ)服務(wù)器節(jié)點(diǎn)的元信息,并通過心跳機(jī)制管理所有服務(wù)器。在該系統(tǒng)中,每個(gè)工作組包含一個(gè)任務(wù)調(diào)度器(task scheduler)和多個(gè)工作節(jié)點(diǎn),工作節(jié)點(diǎn)只與服務(wù)器節(jié)點(diǎn)通信獲取全局參數(shù)以及推送局部更新,不同的工作組可以同時(shí)運(yùn)行不同的應(yīng)用。Parameter Server的優(yōu)點(diǎn)是為大規(guī)模機(jī)器學(xué)習(xí)提供了非常靈活的模型參數(shù)調(diào)優(yōu)和控制機(jī)制;缺點(diǎn)是缺少對(duì)大規(guī)模機(jī)器學(xué)習(xí)時(shí)的數(shù)據(jù)及編程計(jì)算模型的高層抽象,使用較為繁瑣,通常比較適合于機(jī)器學(xué)習(xí)算法研究者或者需要通過調(diào)整參數(shù)深度優(yōu)化機(jī)器學(xué)習(xí)算法的數(shù)據(jù)分析程序員使用。

        國(guó)際著名的機(jī)器學(xué)習(xí)專家、美國(guó)卡耐基梅隆大學(xué)機(jī)器學(xué)習(xí)系Eric Xing教授是大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的倡導(dǎo)者。他認(rèn)為,傳統(tǒng)的機(jī)器學(xué)習(xí)研究過于簡(jiǎn)化機(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 實(shí)驗(yàn)室研究實(shí)現(xiàn)了大數(shù)據(jù)學(xué)習(xí)系統(tǒng)Petuum[18,21]。Petuum也是一個(gè)基于Parameter Server框架的系統(tǒng),關(guān)鍵組件包括Parameter Server和調(diào)度器。Petuum的Parameter Server中使用SSP(stale synchronous parallel)一致性模型,允許計(jì)算速度慢的節(jié)點(diǎn)從本機(jī)緩存中讀取陳舊的參數(shù)值,以此大大節(jié)省網(wǎng)絡(luò)開銷和網(wǎng)絡(luò)等待時(shí)間,使得慢機(jī)器的大部分時(shí)間用在計(jì)算而不是等待上。Petuum在使用上需要算法設(shè)計(jì)者對(duì)分布式系統(tǒng)概念和系統(tǒng)有一定了解,其易用性仍有一定的限制,且其底層數(shù)據(jù)存儲(chǔ)和并行計(jì)算框架與上層的學(xué)習(xí)算法層以緊耦合的方式全部自己實(shí)現(xiàn),系統(tǒng)實(shí)現(xiàn)復(fù)雜性和代價(jià)較大。

        (6)騰訊Peacock與Mariana深度學(xué)習(xí)平臺(tái)

        Peacock[3]是騰訊公司研發(fā)的一個(gè)大規(guī)模LDA主題模型訓(xùn)練系統(tǒng)。該系統(tǒng)通過并行計(jì)算可對(duì)10億×1億級(jí)別的大規(guī)模矩陣進(jìn)行分解,從而從海量文檔樣本數(shù)據(jù)中學(xué)習(xí)10萬~100萬量級(jí)的隱含語義。為了完成大規(guī)模處理,Peacock基于吉布斯采樣的LDA訓(xùn)練算法進(jìn)行了并行化設(shè)計(jì),并設(shè)計(jì)實(shí)現(xiàn)了一個(gè)完整的具有大規(guī)模樣本數(shù)據(jù)處理能力的訓(xùn)練系統(tǒng)。Peacock已廣泛應(yīng)用在騰訊的文本語義理解、QQ群推薦、用戶商業(yè)興趣挖掘、相似用戶擴(kuò)展、廣告點(diǎn)擊率轉(zhuǎn)化率預(yù)估等多個(gè)業(yè)務(wù)數(shù)據(jù)中,是一個(gè)專為L(zhǎng)DA并行化計(jì)算而定制的大規(guī)模訓(xùn)練系統(tǒng),不是一個(gè)通用化的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。

        為了提供更為廣泛的大規(guī)模并行化機(jī)器學(xué)習(xí)處理能力,騰訊研究構(gòu)建了一個(gè)稱為Mariana的深度學(xué)習(xí)平臺(tái)[22],該平臺(tái)由3套大規(guī)模深度學(xué)習(xí)系統(tǒng)構(gòu)成,包括基于多GPU的深度神經(jīng)網(wǎng)絡(luò)并行計(jì)算系統(tǒng)Mariana DNN、基于多GPU的深度卷積神經(jīng)網(wǎng)絡(luò)并行計(jì)算系統(tǒng)Mariana CNN以及基于CPU集群的深度神經(jīng)網(wǎng)絡(luò)并行計(jì)算系統(tǒng)Mariana Cluster。Mariana可提供數(shù)據(jù)并行和模型并行計(jì)算,基于GPU和CPU集群提升模型規(guī)模,加速訓(xùn)練性能。其中,Mariana DNN在騰訊內(nèi)部用于微信語音識(shí)別聲學(xué)模型訓(xùn)練,可訓(xùn)練超過1萬小時(shí)的語音數(shù)據(jù)、超過40億的數(shù)據(jù)樣本以及超過5 000萬的參數(shù),相對(duì)于單GPU而言,6GPU可實(shí)現(xiàn)4.6倍的加速比;而Mariana CNN用于微信圖像識(shí)別,可訓(xùn)練2 000個(gè)以上的分類、300萬以上的數(shù)據(jù)樣本以及超過6 000萬的參數(shù),相對(duì)于單GPU而言,4GPU可實(shí)現(xiàn)2.5倍的加速比,在圖文類效果廣告點(diǎn)擊率提升方面也取得初步應(yīng)用;Mariana Cluster實(shí)現(xiàn)了一個(gè)基于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í)云平臺(tái)BML

        百度公司研發(fā)了一個(gè)大規(guī)模分布式機(jī)器學(xué)習(xí)框架和系統(tǒng)ELF(essential learning framework)[23]。ELF是一個(gè)基于Parameter Server模型的通用化大規(guī)模機(jī)器學(xué)習(xí)系統(tǒng),可允許用戶方便快速地設(shè)計(jì)實(shí)現(xiàn)大數(shù)據(jù)機(jī)器學(xué)習(xí)算法,在系統(tǒng)設(shè)計(jì)上吸收了Hadoop、Spark和MPI等大數(shù)據(jù)平臺(tái)的優(yōu)點(diǎn),用類似于Spark的全內(nèi)存DAG計(jì)算引擎,可基于數(shù)據(jù)流的編程模式,通過高度抽象的編程接口,讓用戶方便地完成各種機(jī)器學(xué)習(xí)算法的并行化設(shè)計(jì)和快速計(jì)算。

        在ELF的基礎(chǔ)上,百度進(jìn)一步開發(fā)了一個(gè)機(jī)器學(xué)習(xí)云平臺(tái)BML(Baidu machine learning),該平臺(tái)支持豐富的機(jī)器學(xué)習(xí)算法,可支持20多種大規(guī)模并行機(jī)器學(xué)習(xí)算法,提供包括數(shù)據(jù)預(yù)處理算法、分類算法、聚類算法、主題模型、推薦算法、深度學(xué)習(xí)、序列模型、在線學(xué)習(xí)在內(nèi)的各種機(jī)器學(xué)習(xí)算法支持,并通過分布和并行化計(jì)算實(shí)現(xiàn)優(yōu)異的計(jì)算性能。BML在百度內(nèi)部的業(yè)務(wù)系統(tǒng)中經(jīng)歷了線上大規(guī)模使用部署考驗(yàn),承載公司內(nèi)各種重要的在線業(yè)務(wù)線應(yīng)用,包括鳳巢廣告CTR 預(yù)估、搜索LTR排名等。

        6 跨平臺(tái)統(tǒng)一大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)Octopus的研究設(shè)計(jì)

        6.1 Octopus的基本設(shè)計(jì)思想

        上述絕大多數(shù)大數(shù)據(jù)機(jī)器學(xué)習(xí)方法和系統(tǒng)都是基于特定平臺(tái)構(gòu)建的,難以集成和兼容現(xiàn)有和未來出現(xiàn)的多種大數(shù)據(jù)處理引擎和平臺(tái)?,F(xiàn)實(shí)世界中的各種大數(shù)據(jù)分析處理應(yīng)用通常會(huì)有不同的分析處理需求和特征,例如,有些可能是極大規(guī)模數(shù)據(jù)的離線分析處理,有些可能是要求高實(shí)時(shí)性響應(yīng)的聯(lián)機(jī)分析處理,這些不同的分析需求要求底層有不同特性的大數(shù)據(jù)處理平臺(tái)支持;此外,隨著大數(shù)據(jù)處理技術(shù)和平臺(tái)的不斷發(fā)展,目前和未來不斷有新的大數(shù)據(jù)編程方法和處理平臺(tái)出現(xiàn)。因此,企業(yè)內(nèi)需要將其原有平臺(tái)上已經(jīng)開發(fā)好的機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法,改寫和移植到新的平臺(tái)上,這將給企業(yè)帶來很大的重復(fù)性勞動(dòng)和開發(fā)負(fù)擔(dān)。

        為此,一個(gè)理想的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)還需要擁有能夠支持現(xiàn)有和未來出現(xiàn)的不同大數(shù)據(jù)處理平臺(tái)的能力,實(shí)現(xiàn)跨平臺(tái)大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法的設(shè)計(jì)能力,達(dá)到“Write Once,Run Anywhere”的跨平臺(tái)算法設(shè)計(jì)和運(yùn)行目標(biāo)。

        針對(duì)大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)需要重點(diǎn)研究解決的計(jì)算性能以及可編程性與易用性問題,并考慮上述的跨平臺(tái)需求特性,南京大學(xué)PASA大數(shù)據(jù)實(shí)驗(yàn)室正在研究設(shè)計(jì)一個(gè)跨平臺(tái)大數(shù)據(jù)機(jī)器學(xué)習(xí)的統(tǒng)一編程模型和系統(tǒng)平臺(tái)。該系統(tǒng)基于矩陣編程計(jì)算模型,結(jié)合R編程語言和編程方法,設(shè)計(jì)提供一個(gè)跨平臺(tái)的統(tǒng)一編程計(jì)算框架,最終研究實(shí)現(xiàn)一個(gè)跨平臺(tái)大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)Octopus(大章魚)。

        分析發(fā)現(xiàn),機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法中的主體計(jì)算大多可表示為矩陣或向量運(yùn)算,這通常也是算法中最耗時(shí)的部分。矩陣操作也是機(jī)器學(xué)習(xí)研究者用來描述問題和算法最為自然和常用的方式,基于矩陣可以表示和刻畫大多數(shù)實(shí)際應(yīng)用中涉及的機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法問題?;谶@樣的事實(shí),為了給大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析提供一種自然和統(tǒng)一的編程計(jì)算模型和編程方法,類似于MapReduce中基于數(shù)據(jù)記錄列表的抽象編程計(jì)算模型,將研究建立一種基于矩陣模型的抽象編程計(jì)算模型,以此作為大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法設(shè)計(jì)的統(tǒng)一編程計(jì)算模型和接口。

        Octopus是一個(gè)高層的大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析統(tǒng)一編程模型和系統(tǒng)平臺(tái),允許數(shù)據(jù)分析和大數(shù)據(jù)應(yīng)用開發(fā)程序員輕松地設(shè)計(jì)和開發(fā)各種大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法與應(yīng)用程序。通過提供基于矩陣的統(tǒng)一編程計(jì)算模型,使用基于R語言的數(shù)據(jù)分析程序設(shè)計(jì)語言和程序設(shè)計(jì)方法,允許用戶方便地編寫和運(yùn)行常規(guī)的R語言程序,而無需了解底層大數(shù)據(jù)平臺(tái)的分布和并行化編程計(jì)算知識(shí),使底層的分布并行計(jì)算框架和大數(shù)據(jù)平臺(tái)對(duì)用戶完全透明;底層平臺(tái)上,通過良好的系統(tǒng)層抽象,可以快速集成Hadoop和Spark等通用大數(shù)據(jù)并行計(jì)算框架和系統(tǒng)平臺(tái),而且程序僅需編寫一次,不需要有任何修改即可根據(jù)需要選擇并平滑運(yùn)行于任何一個(gè)平臺(tái),從而實(shí)現(xiàn)“Write Once,Run Anywhere”的跨平臺(tái)特性。

        6.2 基于矩陣模型的統(tǒng)一編程和計(jì)算模型

        分析發(fā)現(xiàn),一方面,大數(shù)據(jù)機(jī)器學(xué)習(xí)算法中的主體計(jì)算很多可表示為矩陣或向量運(yùn)算(向量可視為退化為1維的特殊矩陣),通常這也是算法中最耗時(shí)的部分;另一方面,矩陣操作通常也是機(jī)器學(xué)習(xí)研究者用來描述問題和算法最為自然和常用的方式。例如,訓(xùn)練樣本特征值的歸一化往往是通過對(duì)矩陣行或列求和后再除以該求和的值;KNN算法(最近鄰算法)的核心操作是矩陣相減和矩陣元素求平方操作;PCA(主成分分析)算法可以通過矩陣相乘或矩陣的SVD分解進(jìn)行求解;最小二乘法的解析法涉及矩陣的相乘和求逆操作;互聯(lián)網(wǎng)企業(yè)推薦系統(tǒng)中,相似性分析的核心是高達(dá)數(shù)億用戶乘以數(shù)億物品的矩陣分解計(jì)算問題;而騰訊Peacock主題模型訓(xùn)練系統(tǒng)則涉及數(shù)十億文檔乘以數(shù)百萬詞匯的巨大矩陣計(jì)算問題;在信息檢索領(lǐng)域,著名的PageRank算法也可以表示成矩陣的迭代相乘;社會(huì)網(wǎng)絡(luò)中可以通過計(jì)算朋友關(guān)系矩陣的冪,從而進(jìn)行基于共同好友的推薦;電子商務(wù)中可以通過對(duì)用戶對(duì)商品的購買記錄進(jìn)行矩陣分解,得到商品和用戶的聚類并分析其潛在語義主題模型。很多其他的數(shù)據(jù)分析和大數(shù)據(jù)科學(xué)計(jì)算問題也常常要基于矩陣模型完成問題的描述和分析計(jì)算過程。因此,基于矩陣可以表示和刻畫大多數(shù)實(shí)際應(yīng)用中涉及的機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法問題。

        基于這樣的事實(shí),為了給大數(shù)據(jù)機(jī)器學(xué)習(xí)提供一種統(tǒng)一的編程計(jì)算模型以及編程方法,類似于MapReduce采用了基于數(shù)據(jù)記錄列表的抽象編程計(jì)算模型,研究建立了一種基于矩陣模型的抽象編程計(jì)算模型,以此作為大數(shù)據(jù)機(jī)器學(xué)習(xí)算法設(shè)計(jì)的統(tǒng)一編程計(jì)算模型和接口。

        這種抽象矩陣編程計(jì)算模型將成為統(tǒng)一機(jī)器學(xué)習(xí)算法設(shè)計(jì)和編程計(jì)算的核心,它具有如下3個(gè)重要作用。

        ● 基于機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法中主體計(jì)算大多可表示為矩陣或向量運(yùn)算的事實(shí),為數(shù)據(jù)分析用戶提供一種自然和統(tǒng)一化的大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法建模和表示方法。

        ● 作為一個(gè)隔離和解耦上層數(shù)據(jù)分析算法與下層各種大數(shù)據(jù)平臺(tái)的中間接口,實(shí)現(xiàn)底層平臺(tái)對(duì)上層程序員及其程序的透明性,以此提高統(tǒng)一平臺(tái)對(duì)上層程序員的易用性。

        ● 為實(shí)現(xiàn)統(tǒng)一大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)開放式集成框架提供一種接口標(biāo)準(zhǔn)。針對(duì)任意一個(gè)擬集成使用的底層大數(shù)據(jù)平臺(tái),只要遵照所建立的統(tǒng)一矩陣編程接口,實(shí)現(xiàn)一個(gè)完成該接口程序計(jì)算任務(wù)的適配器或插件,即可以博采眾長(zhǎng)和兼容并蓄的開放式框架,連接和集成使用各種主流的大數(shù)據(jù)平臺(tái),使得上層的機(jī)器學(xué)習(xí)算法具有處理大規(guī)模數(shù)據(jù)的能力。

        6.3 Octopus軟件框架和系統(tǒng)設(shè)計(jì)

        如圖5所示,Octopus是一種基于良好的系統(tǒng)抽象的層次化系統(tǒng)。其最底層是分布式文件系統(tǒng),如HDFS和分布式內(nèi)存文件系統(tǒng)Tachyon,它們被用來存儲(chǔ)和索引大規(guī)模的矩陣數(shù)據(jù)。在存儲(chǔ)層之上,Octopus可以用多種大數(shù)據(jù)計(jì)算引擎和單機(jī)R引擎來執(zhí)行不同規(guī)模的矩陣操作。Octopus提供給用戶的編程API是基于R語言的高層矩陣計(jì)算接口,基于該接口,用戶不需要了解分布和并行計(jì)算系統(tǒng)知識(shí),就可以很容易地設(shè)計(jì)實(shí)現(xiàn)大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法或應(yīng)用。

        6.4 Octopus系統(tǒng)的技術(shù)特征

        圖5 Octopus(大章魚)軟件系統(tǒng)框架

        Octopus具有以下技術(shù)特征。

        (1)易于使用的高層編程API

        Octopus提供給用戶一組基于R語言的大規(guī)模矩陣運(yùn)算API,稱為OctMatrix。這些API提供各種大規(guī)模分布式矩陣計(jì)算操作,其形式上與標(biāo)準(zhǔn)R語言中的單機(jī)矩陣/向量操作API很相似。程序員可基于這些矩陣運(yùn)算接口,用R語言快速編寫各種機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法。除了最常用的大規(guī)模矩陣乘法,Octopus也提供了其他各種矩陣操作,如矩陣與矩陣的加法和減法、矩陣元素級(jí)別的乘法和除法、子矩陣運(yùn)算等。這些API定義了高層矩陣操作符(operator)和操作(operation),因此熟悉R編程語言和編程方法的用戶可以很容易地用其編程實(shí)現(xiàn)大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法,且不需要了解底層大數(shù)據(jù)處理平臺(tái)及其并行化編程方法。

        (2)一次編寫,隨處運(yùn)行

        用Octopus編寫完成的算法和程序,可以運(yùn)行在不同的底層大數(shù)據(jù)計(jì)算引擎和平臺(tái)上。用OctMatrix API實(shí)現(xiàn)的機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法,用戶可以在單機(jī)R上用小數(shù)據(jù)進(jìn)行測(cè)試,不需要修改代碼就可以用大數(shù)據(jù)在底層的大數(shù)據(jù)計(jì)算引擎和平臺(tái)上執(zhí)行,只需要簡(jiǎn)單切換底層的大數(shù)據(jù)計(jì)算引擎如Spark、Hadoop MapReduce或MPI即可。此外,Octopus通過提供通用接口可實(shí)現(xiàn)對(duì)底層不同文件系統(tǒng)的集成,并實(shí)現(xiàn)基于不同文件系統(tǒng)的大規(guī)模矩陣數(shù)據(jù)存儲(chǔ)訪問接口,包括HDFS、Tachyon以及基于單機(jī)本地的文件系統(tǒng)。

        (3)無縫融合R生態(tài)系統(tǒng)

        Octopus可運(yùn)行于標(biāo)準(zhǔn)的R環(huán)境下,實(shí)現(xiàn)與R環(huán)境的無縫融合,因此可以利用R生態(tài)系統(tǒng)中的豐富資源,比如第三方R包。除了傳統(tǒng)的矩陣/向量函數(shù),Octopus也在OctMatrix中提供apply函數(shù),傳入apply函數(shù)的參數(shù)可以是任意的R函數(shù),包括UDF(user defined function)。當(dāng)OctMatrix運(yùn)行在分布式環(huán)境中時(shí),函數(shù)參數(shù)可以在集群中被應(yīng)用于OctMatrix的每個(gè)元素、每行或每列,函數(shù)參數(shù)在集群的每個(gè)節(jié)點(diǎn)并行執(zhí)行。

        6.5 Octopus中分布式矩陣計(jì)算優(yōu)化

        大規(guī)模數(shù)據(jù)通常會(huì)導(dǎo)致整個(gè)數(shù)據(jù)分析計(jì)算時(shí)間過長(zhǎng),難以在可接受的時(shí)間內(nèi)完成分析任務(wù),為此需要借助于分布式和并行化計(jì)算技術(shù)實(shí)現(xiàn)大規(guī)模數(shù)據(jù)分析計(jì)算時(shí)的加速和性能提升,以提高數(shù)據(jù)分析的響應(yīng)時(shí)間。由于采用大規(guī)模矩陣作為大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析的編程計(jì)算接口,在底層大數(shù)據(jù)平臺(tái)上的大規(guī)模矩陣運(yùn)算的性能將直接關(guān)系到上層算法執(zhí)行的性能。為此,大規(guī)模矩陣計(jì)算性能優(yōu)化是需要重點(diǎn)研究解決的關(guān)鍵技術(shù)問題之一。

        在所有矩陣計(jì)算中,矩陣乘法是使用最多且最為耗時(shí)的計(jì)算,許多矩陣的因子分解操作也都可以由矩陣乘法近似實(shí)現(xiàn)。因此,矩陣乘法的優(yōu)化是整個(gè)矩陣計(jì)算優(yōu)化中最為重要的問題。兩個(gè)大規(guī)模矩陣進(jìn)行分布和并行化相乘運(yùn)算時(shí),一個(gè)重要問題是如何合理劃分矩陣數(shù)據(jù),以便利用多個(gè)計(jì)算節(jié)點(diǎn)分布和并行化地完成計(jì)算。不同大小和形狀的矩陣,其劃分方法可能會(huì)造成計(jì)算性能上的差異,例如,方形矩陣與長(zhǎng)條形矩陣需要考慮不同的劃分方法,而一個(gè)大矩陣與一個(gè)小矩陣相乘時(shí),當(dāng)小矩陣可存放在單節(jié)點(diǎn)的內(nèi)存中時(shí),對(duì)小矩陣可不進(jìn)行劃分,而改用廣播方式將小矩陣發(fā)送到每個(gè)計(jì)算節(jié)點(diǎn)上,以此完成兩個(gè)矩陣的運(yùn)算,這樣可以避免大量的網(wǎng)絡(luò)數(shù)據(jù)傳輸。因此,需要根據(jù)矩陣的大小和形狀,合理劃分矩陣,以便以最小的計(jì)算代價(jià)完成乘法運(yùn)算。

        除了不同形狀和大小的矩陣劃分策略優(yōu)化外,被劃分后落到每個(gè)計(jì)算節(jié)點(diǎn)上分布處理的子矩陣計(jì)算也需要進(jìn)行優(yōu)化。矩陣乘法是典型的計(jì)算密集型任務(wù)并且存在許多單機(jī)的高性能的線性代數(shù)庫,如BLAS、Lapack和MKL。由于在JVM中執(zhí)行線性代數(shù)計(jì)算性能較低,Octopus將計(jì)算密集的矩陣計(jì)算從JVM中通過JNILoader裝載到本地線性代數(shù)庫(如BLAS、Lapack)中執(zhí)行,這樣可顯著加速子矩陣的計(jì)算性能。

        圖6 基于R語言和Octopus的跨平臺(tái)統(tǒng)一大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)

        6.6 Octopus系統(tǒng)的編程使用

        圖6顯示了Octopus系統(tǒng)的使用方式。Octopus使用標(biāo)準(zhǔn)的R編程和開發(fā)環(huán)境,允許用戶使用R語言,并基于大規(guī)模矩陣計(jì)算模型編寫各種機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法。系統(tǒng)可實(shí)現(xiàn)與Spark、Hadoop MapReduce和MPI的集成,底層可無縫切換運(yùn)行于不同的大數(shù)據(jù)平臺(tái)上?;贠ctopus所設(shè)計(jì)實(shí)現(xiàn)的算法或程序代碼,無需修改即可平滑切換并運(yùn)行于上述任意一個(gè)底層大數(shù)據(jù)計(jì)算引擎和平臺(tái)上,只要簡(jiǎn)單地修改程序代碼中的計(jì)算引擎類型選擇參數(shù)即可。

        基于R語言和初步研究設(shè)計(jì)的Octopus,設(shè)計(jì)實(shí)現(xiàn)了多個(gè)典型的機(jī)器學(xué)習(xí)算法,包括LR、SVM、聚類、深度學(xué)習(xí)等,以驗(yàn)證研究設(shè)計(jì)的原型系統(tǒng)的有效性。

        圖7是基于常規(guī)R語言所實(shí)現(xiàn)的Linear Regression算法與基于Octopus所實(shí)現(xiàn)的Linear Regression算法的示例代碼。由代碼比較可見,兩者在形式上非常接近,僅在有關(guān)矩陣運(yùn)算調(diào)用的API上有微小差異。

        由圖7可見,在R語言中基于矩陣進(jìn)行機(jī)器學(xué)習(xí)的算法設(shè)計(jì)較為簡(jiǎn)潔和方便,Linear Regression代碼僅僅需要20行左右即可實(shí)現(xiàn)完整的算法。

        圖7 基于Octopus和常規(guī)R語言的Linear Regresssion算法代碼比較

        7 結(jié)束語

        近幾年來,大數(shù)據(jù)技術(shù)的發(fā)展推動(dòng)了大數(shù)據(jù)機(jī)器學(xué)習(xí)和智能計(jì)算技術(shù)的發(fā)展熱潮。大數(shù)據(jù)機(jī)器學(xué)習(xí)不僅是一個(gè)單純的機(jī)器學(xué)習(xí)問題,更是一個(gè)大規(guī)模的復(fù)雜系統(tǒng)問題;是一個(gè)同時(shí)涉及機(jī)器學(xué)習(xí)和大數(shù)據(jù)處理兩個(gè)領(lǐng)域的交叉研究課題。要實(shí)現(xiàn)有效的大數(shù)據(jù)機(jī)器學(xué)習(xí)處理,需要構(gòu)建一個(gè)能同時(shí)支持機(jī)器學(xué)習(xí)算法設(shè)計(jì)和大規(guī)模數(shù)據(jù)處理的一體化大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)。

        本文介紹了國(guó)內(nèi)外大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)的基本概念、基本研究問題、技術(shù)特征、系統(tǒng)分類以及典型系統(tǒng)。在此基礎(chǔ)上,進(jìn)一步介紹了研究設(shè)計(jì)的跨平臺(tái)統(tǒng)一大數(shù)據(jù)機(jī)器學(xué)習(xí)原型系統(tǒng)Octopus?;诖蠖鄶?shù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法可表示為矩陣運(yùn)算的事實(shí),Octopus采用矩陣模型作為大數(shù)據(jù)機(jī)器學(xué)習(xí)和數(shù)據(jù)分析抽象編程計(jì)算模型,提供了一個(gè)基于矩陣的高層編程模型和接口,并基于R語言和開發(fā)環(huán)境向用戶提供了一個(gè)矩陣運(yùn)算R擴(kuò)展包,為用戶提供可擴(kuò)展性好且易于使用的矩陣運(yùn)算操作,允許用戶基于所提供的大規(guī)模矩陣運(yùn)算操作,快速設(shè)計(jì)實(shí)現(xiàn)各種機(jī)器學(xué)習(xí)和數(shù)據(jù)分析算法。Octopus能在底層無縫地集成和使用不同的大數(shù)據(jù)計(jì)算引擎和平臺(tái),完成大數(shù)據(jù)機(jī)器學(xué)習(xí)算法的分布和并行化執(zhí)行,并支持單節(jié)點(diǎn)R環(huán)境以及Spark、Hadoop MapReduce和MPI等多種大數(shù)據(jù)計(jì)算引擎和平臺(tái),并能實(shí)現(xiàn)這些平臺(tái)間的無縫切換,實(shí)現(xiàn)“Write Once,Run Anywhere”的跨平臺(tái)特征。就我們所知,Octopus是目前世界上第一個(gè)具有跨平臺(tái)特性,同時(shí)還能實(shí)現(xiàn)底層大數(shù)據(jù)平臺(tái)對(duì)上層程序員透明化的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)研究工作。

        正如CCF大數(shù)據(jù)專家委員會(huì)發(fā)布的2014年《中國(guó)大數(shù)據(jù)技術(shù)與產(chǎn)業(yè)發(fā)展白皮書》中所說,目前大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)尚處在一個(gè)初期的探索和研究階段,盡管國(guó)內(nèi)外已經(jīng)有不少研究開發(fā)工作,但研究設(shè)計(jì)高效、可擴(kuò)展且易于使用的大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)仍面臨諸多的技術(shù)挑戰(zhàn)。因此,大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)將是目前和未來幾年的熱點(diǎn)研究領(lǐng)域,工業(yè)界和學(xué)術(shù)界都將持續(xù)地投入相當(dāng)多的資源進(jìn)行深入的研究開發(fā)工作。

        同樣,雖然初步研究設(shè)計(jì)了跨平臺(tái)大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)Octopus,但其中仍然有大量需要進(jìn)一步深入研究解決和完善的技術(shù)問題,例如大規(guī)模矩陣運(yùn)算的深度優(yōu)化、稀疏矩陣的存儲(chǔ)管理和計(jì)算優(yōu)化、異構(gòu)大數(shù)據(jù)處理平臺(tái)環(huán)境下不同矩陣計(jì)算時(shí)的平臺(tái)自動(dòng)選擇、基于矩陣計(jì)算表達(dá)式和計(jì)算流圖的計(jì)算優(yōu)化等。此外,僅有矩陣計(jì)算模型還不能滿足所有的大數(shù)據(jù)機(jī)器學(xué)習(xí)計(jì)算需求,還需要考慮其他計(jì)算模型,如圖模型和參數(shù)模型(parameter server)的混合使用,形成一個(gè)能滿足各種大數(shù)據(jù)機(jī)器學(xué)習(xí)算法設(shè)計(jì)需求的綜合系統(tǒng)。

        致謝

        本文工作受到江蘇省科技支撐計(jì)劃基金項(xiàng)目(No.BE2014131)和江蘇省軟件技術(shù)產(chǎn)業(yè)協(xié)同創(chuàng)新中心的資助。

        參考文獻(xiàn)

        [1] Banko M, Brill E. Scaling to very large corpora for natural language disambiguation. Proceedings of the 39th Annual Meeting on Association for Computational Linguistics (ACL), Toulouse, France, 2001: 26~33

        [2] Brants T, Popat C A, Xu P, et al. Large language models in machine translation. Proceedings of the 2007 Joint Conference on Empirical Methods in Natural Language Processing and Computational Language Learning, Prague, Czech Republic, 2007: 858~867

        [3] Wang Y, Zhao X M, Sun Z L, et al. Peacock: learning long-tail topic features for industrial applications. ACM Transactions on Intelligent Systems and Technology, 2014, 9(4)

        [4] 中國(guó)計(jì)算機(jī)學(xué)會(huì)大數(shù)據(jù)專家委員會(huì). 2015年中國(guó)大數(shù)據(jù)發(fā)展趨勢(shì)預(yù)測(cè). 中國(guó)計(jì)算機(jī)學(xué)會(huì)通訊, 2015, 11(1): 48~52 CCF Task Force on Big Data. Forecast for the development trend of big data in 2015. Communications of the China Computer Federation (CCCF), 2015, 11(1): 48~52

        [5] Gonzalez J E. Emerging systems for large-scale machine learning. Proceedings of Tutorial on International Conference for Machine Learning(ICML) 2014, Beijing, China, 2014

        [6] 中國(guó)計(jì)算機(jī)學(xué)會(huì)大數(shù)據(jù)專家委員會(huì). 2014年中國(guó)大數(shù)據(jù)技術(shù)與產(chǎn)業(yè)發(fā)展白皮書. 2014中國(guó)大數(shù)據(jù)技術(shù)大會(huì), 北京, 中國(guó), 2014 CCF Task Force on Big Data. White paper of China’s big data technology and industrial development in 2014. Proceedings of Big Data Conference China, Beijing, China, 2014

        [7] Boehm M, Tatikonda S, Reinwald B, et al. Hybrid parallelization strategiesfor large-scale machine learning in systemML. Proceedings of the VLDB Endowment, Hangzhou, China, 2014

        [8] Markl V. Breaking the chains: on declarative data analysis and data independence in the big data era. Proceedings of the VLDB Endowment, Hangzhou, China, 2014

        [9] Kraska T T. MLbase: a distributed machine-learning system. Proceedings of the 6th Conference on Innovative Data Systems Research(CIDR), Asilomar, CA, USA, 2013

        [10] Fan W F, Geerts F, Neven F. Making queries tractable on big data with preprocessing: through the eyes of complexity theory. Proceedings of the VLDB Endowment, Trento, Italy, 2013: 685~696

        [11] Dean J, Ghemawat S. MapReduce: simplified data processing on large clusters. Communications of the ACM, 2004, 51(1): 107~113

        [12] Zaharia M, Chowdhury M, Das T, et al. Resilient distributed datasets: a fault-tolerant abstraction for inmemory cluster computing. Proceedings of the 9th USENIX Conference on Networked Systems Design and Implementation(NSDI), San Jose, CA, USA, 2012: 141~146

        [13] Venkataraman S, Bodzsar E, Roy I, et al. Presto: distributed machine learning and graph processing with sparse matrices. Proceedings of the 8th ACM European Conference on Computer Systems(EuroSys), Prague, Czech Republic, 2013: 197~210

        [14] Ghoting A, Krishnamurthy R, Pednault E, et al. SystemML: declarative machine learning on MapReduce. Proceedings of International Conference on Data Engineering (ICDE), Hannover, Germany, 2011: 231~242

        [15] Boehm M, Tatikonda S, Reinwald B, et al. Hybrid parallelization strategies for large-scale machine learning in SystemML. Proceedings of the VLDB Endowment, Hangzhou, China, 2014

        [16] Low Y, Bickson D, Gonzalez J, et al. Distributed graphLab: a framework for machine learning and data mining in the cloud. Proceedings of the VLDB Endowment, Istanbul, Turkey, 2012: 716~727

        [17] Li M, Andersen G D, Park W J, et al. Scaling distributed machine learning with the parameter server. Proceedings of Operating Systems Design and Implementation (OSDI), Broomfield, CD, USA, 2014: 583~598

        [18] Ho Q, Cipar J, Cui H, et al. More effective distributed ml via a stale synchronous parallel parameter server. Proceedings of Advances in Neural Information Processing Systems (NIPS), Nevada, USA, 2013: 1223~1231

        [19] Alexandrov A, Bergmann R, Ewen S, et al. The stratosphere platform for big data analytics. Vldb Journal, 2014, 23(6): 939~964

        [20] Battré D, Ewen S, Hueske F, et al. Nephele/PACTs: a programming model and execution framework for web-scale analytical processing. Proceedings of ACM Symposium on Cloud Computing(SoCC), Indianapolis, Indiana, USA, 2010: 119~130

        [21] Dai W, Wei J, Zheng X, et al. Petuum: a framework for iterative-convergent distributed ML. Proceedings of Advances in Neural Information Processing Systems 26, Big Learning Workshop, California, USA, 2013

        [22] 鄒永強(qiáng). Mariana—騰訊深度學(xué)習(xí)平臺(tái)的進(jìn)展與應(yīng)用. 2014年中國(guó)大數(shù)據(jù)技術(shù)大會(huì),北京,中國(guó),2014 Zou Y Q. Marina-the progress and application of deep learning platform of Tencent. Proceedings of DatabaseTechnology Conference China 2015, Beijing, China, 2014

        [23] 劉偉. 百度機(jī)器學(xué)習(xí)云平臺(tái). 2015年中國(guó)數(shù)據(jù)庫技術(shù)大會(huì), 北京, 中國(guó), 2015 Liu W. Machine learning cloud platform of Baidu. Proceedings of Database Technology Conference China 2015, Beijing, China, 2015

        Huang Y H. Research progress on big data machine learning system. Big Data Research, 2015004

        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

        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.

        big data, machine learning, distributed and parallel computing, big data processing platform

        黃宜華,男,博士,南京大學(xué)計(jì)算機(jī)系教授、博士生導(dǎo)師,中國(guó)計(jì)算機(jī)學(xué)會(huì)大數(shù)據(jù)專家委員會(huì)委員、副秘書長(zhǎng),江蘇省計(jì)算機(jī)學(xué)會(huì)大數(shù)據(jù)專家委員會(huì)主任,CCF高級(jí)會(huì)員,南京大學(xué)PASA大數(shù)據(jù)技術(shù)實(shí)驗(yàn)室學(xué)術(shù)帶頭人。主要研究方向?yàn)榇髷?shù)據(jù)并行處理、大數(shù)據(jù)機(jī)器學(xué)習(xí)、Web信息抽取與挖掘技術(shù),在國(guó)內(nèi)外學(xué)術(shù)刊物和國(guó)際會(huì)議上發(fā)表學(xué)術(shù)論文60多篇,撰寫并出版大數(shù)據(jù)處理方向書籍兩部,是近年來出版的《深入理解大數(shù)據(jù)—大數(shù)據(jù)處理與編程實(shí)踐》一書的作者。目前正在大數(shù)據(jù)并行化算法、大數(shù)據(jù)系統(tǒng)平臺(tái)和應(yīng)用方面開展深入的研究工作,主持或參與多項(xiàng)國(guó)家級(jí)和省部級(jí)科研項(xiàng)目,并在大數(shù)據(jù)領(lǐng)域開展了與Intel、UC Berkeley AMP Lab、微軟亞洲研究院、百度、中興通訊等國(guó)內(nèi)外知名企業(yè)和研究機(jī)構(gòu)的合作研究工作。

        2015-05-03;

        2015-05-11

        江蘇省科技支撐計(jì)劃基金資助項(xiàng)目(No.BE2014131)

        Foundation Item:Jiangsu Province Science and Technology Support Program(No.BE2014131)

        黃宜華. 大數(shù)據(jù)機(jī)器學(xué)習(xí)系統(tǒng)研究進(jìn)展. 大數(shù)據(jù), 2015004

        猜你喜歡
        編程機(jī)器矩陣
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        機(jī)器狗
        機(jī)器狗
        未來機(jī)器城
        電影(2018年8期)2018-09-21 08:00:06
        初等行變換與初等列變換并用求逆矩陣
        矩陣
        南都周刊(2015年4期)2015-09-10 07:22:44
        矩陣
        南都周刊(2015年3期)2015-09-10 07:22:44
        国产高级黄区18勿进一区二区| 国产精品毛片va一区二区三区| 精品久久久无码中字| 屁屁影院一区二区三区| 日韩av在线不卡一区二区三区| 一区二区三区日本高清| 亚洲成aⅴ人片久青草影院| 丰满爆乳无码一区二区三区| 麻豆国产成人AV网| 丰满又紧又爽又丰满视频| 大学生粉嫩无套流白浆| av无码久久久久久不卡网站| 国产成人综合亚洲av| 黑人玩弄极品人妻系列视频| 2020无码专区人妻系列日韩| 日日摸夜夜添夜夜添无码免费视频 | 久久无码专区国产精品s| 成人激情四射网| 一区二区三区视频偷拍| 日本中文字幕一区二区有码在线| 久久综合九色综合网站| 99精品国产闺蜜国产在线闺蜜| 日本午夜艺术一区二区| aⅴ精品无码无卡在线观看| 国产成人午夜精品免费视频| 国产av一区二区三区香蕉| 亚洲中文字幕人妻av在线 | 日本高清一区二区三区水蜜桃| 亚洲高清一区二区三区在线观看| 不卡av网站一区二区三区| 亚洲国产成人片在线观看无码| 久久av无码精品人妻糸列| 久久久噜噜噜噜久久熟女m| 无码人妻久久一区二区三区蜜桃| 无码人妻精品一区二区三18禁| 青青青草国产熟女大香蕉| 在线a亚洲视频播放在线播放| 国产一区二区三精品久久久无广告| 国产精品天天看大片特色视频 | 中文字幕一区二区三区人妻少妇| 精品九九视频|