《大数据》第1期“专题”——大数据机器学习系统研究进展(下)
6 跨平臺統一大數據機器學習系統Octopus的研究設計
6.1 Octopus的基本設計思想
上述絕大多數大數據機器學習方法和系統都是基于特定平臺構建的,難以集成和兼容現有和未來出現的多種大數據處理引擎和平臺。現實世界中的各種大數據分析處理應用通常會有不同的分析處理需求和特征,例如,有些可能是極大規模數據的離線分析處理,有些可能是要求高實時性響應的聯機分析處理,這些不同的分析需求要求底層有不同特性的大數據處理平臺支持;此外,隨著大數據處理技術和平臺的不斷發展,目前和未來不斷有新的大數據編程方法和處理平臺出現。因此,企業內需要將其原有平臺上已經開發好的機器學習和數據分析算法,改寫和移植到新的平臺上,這將給企業帶來很大的重復性勞動和開發負擔。
為此,一個理想的大數據機器學習系統還需要擁有能夠支持現有和未來出現的不同大數據處理平臺的能力,實現跨平臺大數據機器學習和數據分析算法的設計能力,達到“WriteOnce,Run Anywhere”的跨平臺算法設計和運行目標。
針對大數據機器學習系統需要重點研究解決的計算性能以及可編程性與易用性問題,并考慮上述的跨平臺需求特性,南京大學PASA大數據實驗室正在研究設計一個跨平臺大數據機器學習的統一編程模型和系統平臺。該系統基于矩陣編程計算模型,結合R編程語言和編程方法,設計提供一個跨平臺的統一編程計算框架,最終研究實現一個跨平臺大數據機器學習系統Octopus(大章魚)。
分析發現,機器學習和數據挖掘算法中的主體計算大多可表示為矩陣或向量運算,這通常也是算法中最耗時的部分。矩陣操作也是機器學習研究者用來描述問題和算法最為自然和常用的方式,基于矩陣可以表示和刻畫大多數實際應用中涉及的機器學習和數據分析算法問題?;谶@樣的事實,為了給大數據機器學習和數據分析提供一種自然和統一的編程計算模型和編程方法,類似于MapReduce中基于數據記錄列表的抽象編程計算模型,將研究建立一種基于矩陣模型的抽象編程計算模型,以此作為大數據機器學習和數據分析算法設計的統一編程計算模型和接口。
Octopus是一個高層的大數據機器學習和數據分析統一編程模型和系統平臺,允許數據分析和大數據應用開發程序員輕松地設計和開發各種大數據機器學習和數據分析算法與應用程序。通過提供基于矩陣的統一編程計算模型,使用基于R語言的數據分析程序設計語言和程序設計方法,允許用戶方便地編寫和運行常規的R語言程序,而無需了解底層大數據平臺的分布和并行化編程計算知識,使底層的分布并行計算框架和大數據平臺對用戶完全透明;底層平臺上,通過良好的系統層抽象,可以快速集成Hadoop和Spark等通用大數據并行計算框架和系統平臺,而且程序僅需編寫一次,不需要有任何修改即可根據需要選擇并平滑運行于任何一個平臺,從而實現“WriteOnce,Run Anywhere”的跨平臺特性。
6.2 基于矩陣模型的統一編程和計算模型
分析發現,一方面,大數據機器學習算法中的主體計算很多可表示為矩陣或向量運算(向量可視為退化為1維的特殊矩陣),通常這也是算法中最耗時的部分;另一方面,矩陣操作通常也是機器學習研究者用來描述問題和算法最為自然和常用的方式。例如,訓練樣本特征值的歸一化往往是通過對矩陣行或列求和后再除以該求和的值;KNN算法(最近鄰算法)的核心操作是矩陣相減和矩陣元素求平方操作;PCA(主成分分析)算法可以通過矩陣相乘或矩陣的SVD分解進行求解;最小二乘法的解析法涉及矩陣的相乘和求逆操作;互聯網企業推薦系統中,相似性分析的核心是高達數億用戶乘以數億物品的矩陣分解計算問題;而騰訊Peacock主題模型訓練系統則涉及數十億文檔乘以數百萬詞匯的巨大矩陣計算問題;在信息檢索領域,著名的PageRank算法也可以表示成矩陣的迭代相乘;社會網絡中可以通過計算朋友關系矩陣的冪,從而進行基于共同好友的推薦;電子商務中可以通過對用戶對商品的購買記錄進行矩陣分解,得到商品和用戶的聚類并分析其潛在語義主題模型。很多其他的數據分析和大數據科學計算問題也常常要基于矩陣模型完成問題的描述和分析計算過程。因此,基于矩陣可以表示和刻畫大多數實際應用中涉及的機器學習和數據分析算法問題。
基于這樣的事實,為了給大數據機器學習提供一種統一的編程計算模型以及編程方法,類似于MapReduce采用了基于數據記錄列表的抽象編程計算模型,研究建立了一種基于矩陣模型的抽象編程計算模型,以此作為大數據機器學習算法設計的統一編程計算模型和接口。
這種抽象矩陣編程計算模型將成為統一機器學習算法設計和編程計算的核心,它具有如下3個重要作用。
● 基于機器學習和數據挖掘算法中主體計算大多可表示為矩陣或向量運算的事實,為數據分析用戶提供一種自然和統一化的大數據機器學習和數據分析算法建模和表示方法。
● 作為一個隔離和解耦上層數據分析算法與下層各種大數據平臺的中間接口,實現底層平臺對上層程序員及其程序的透明性,以此提高統一平臺對上層程序員的易用性。
● 為實現統一大數據機器學習系統開放式集成框架提供一種接口標準。針對任意一個擬集成使用的底層大數據平臺,只要遵照所建立的統一矩陣編程接口,實現一個完成該接口程序計算任務的適配器或插件,即可以博采眾長和兼容并蓄的開放式框架,連接和集成使用各種主流的大數據平臺,使得上層的機器學習算法具有處理大規模數據的能力。
6.3 Octopus軟件框架和系統設計
如圖5所示,Octopus是一種基于良好的系統抽象的層次化系統。其最底層是分布式文件系統,如HDFS和分布式內存文件系統Tachyon,它們被用來存儲和索引大規模的矩陣數據。在存儲層之上,Octopus可以用多種大數據計算引擎和單機R引擎來執行不同規模的矩陣操作。Octopus提供給用戶的編程API是基于R語言的高層矩陣計算接口,基于該接口,用戶不需要了解分布和并行計算系統知識,就可以很容易地設計實現大數據機器學習和數據分析算法或應用。
圖5 Octopus(大章魚)軟件系統框架
6.4 Octopus系統的技術特征
Octopus具有以下技術特征。
(1)易于使用的高層編程API
Octopus提供給用戶一組基于R語言的大規模矩陣運算API,稱為OctMatrix。這些API提供各種大規模分布式矩陣計算操作,其形式上與標準R語言中的單機矩陣/向量操作API很相似。程序員可基于這些矩陣運算接口,用R語言快速編寫各種機器學習和數據分析算法。除了最常用的大規模矩陣乘法,Octopus也提供了其他各種矩陣操作,如矩陣與矩陣的加法和減法、矩陣元素級別的乘法和除法、子矩陣運算等。這些API定義了高層矩陣操作符(operator)和操作(operation),因此熟悉R編程語言和編程方法的用戶可以很容易地用其編程實現大數據機器學習和數據分析算法,且不需要了解底層大數據處理平臺及其并行化編程方法。
(2)一次編寫,隨處運行
用Octopus編寫完成的算法和程序,可以運行在不同的底層大數據計算引擎和平臺上。用OctMatrixAPI實現的機器學習和數據分析算法,用戶可以在單機R上用小數據進行測試,不需要修改代碼就可以用大數據在底層的大數據計算引擎和平臺上執行,只需要簡單切換底層的大數據計算引擎如Spark、HadoopMapReduce或MPI即可。此外,Octopus通過提供通用接口可實現對底層不同文件系統的集成,并實現基于不同文件系統的大規模矩陣數據存儲訪問接口,包括HDFS、Tachyon以及基于單機本地的文件系統。
(3)無縫融合R生態系統
Octopus可運行于標準的R環境下,實現與R環境的無縫融合,因此可以利用R生態系統中的豐富資源,比如第三方R包。除了傳統的矩陣/向量函數,Octopus也在OctMatrix中提供apply函數,傳入apply函數的參數可以是任意的R函數,包括UDF(userdefined function)。當OctMatrix運行在分布式環境中時,函數參數可以在集群中被應用于OctMatrix的每個元素、每行或每列,函數參數在集群的每個節點并行執行。
6.5 Octopus中分布式矩陣計算優化
大規模數據通常會導致整個數據分析計算時間過長,難以在可接受的時間內完成分析任務,為此需要借助于分布式和并行化計算技術實現大規模數據分析計算時的加速和性能提升,以提高數據分析的響應時間。由于采用大規模矩陣作為大數據機器學習和數據分析的編程計算接口,在底層大數據平臺上的大規模矩陣運算的性能將直接關系到上層算法執行的性能。為此,大規模矩陣計算性能優化是需要重點研究解決的關鍵技術問題之一。
在所有矩陣計算中,矩陣乘法是使用最多且最為耗時的計算,許多矩陣的因子分解操作也都可以由矩陣乘法近似實現。因此,矩陣乘法的優化是整個矩陣計算優化中最為重要的問題。兩個大規模矩陣進行分布和并行化相乘運算時,一個重要問題是如何合理劃分矩陣數據,以便利用多個計算節點分布和并行化地完成計算。不同大小和形狀的矩陣,其劃分方法可能會造成計算性能上的差異,例如,方形矩陣與長條形矩陣需要考慮不同的劃分方法,而一個大矩陣與一個小矩陣相乘時,當小矩陣可存放在單節點的內存中時,對小矩陣可不進行劃分,而改用廣播方式將小矩陣發送到每個計算節點上,以此完成兩個矩陣的運算,這樣可以避免大量的網絡數據傳輸。因此,需要根據矩陣的大小和形狀,合理劃分矩陣,以便以最小的計算代價完成乘法運算。
除了不同形狀和大小的矩陣劃分策略優化外,被劃分后落到每個計算節點上分布處理的子矩陣計算也需要進行優化。矩陣乘法是典型的計算密集型任務并且存在許多單機的高性能的線性代數庫,如BLAS、Lapack和MKL。由于在JVM中執行線性代數計算性能較低,Octopus將計算密集的矩陣計算從JVM中通過JNILoader裝載到本地線性代數庫(如BLAS、Lapack)中執行,這樣可顯著加速子矩陣的計算性能。
6.6 Octopus系統的編程使用
圖6顯示了Octopus系統的使用方式。Octopus使用標準的R編程和開發環境,允許用戶使用R語言,并基于大規模矩陣計算模型編寫各種機器學習和數據分析算法。系統可實現與Spark、HadoopMapReduce和MPI的集成,底層可無縫切換運行于不同的大數據平臺上。基于Octopus所設計實現的算法或程序代碼,無需修改即可平滑切換并運行于上述任意一個底層大數據計算引擎和平臺上,只要簡單地修改程序代碼中的計算引擎類型選擇參數即可。
圖6 基于R語言和Octopus的跨平臺統一大數據機器學習系統
基于R語言和初步研究設計的Octopus,設計實現了多個典型的機器學習算法,包括LR、SVM、聚類、深度學習等,以驗證研究設計的原型系統的有效性。
圖7是基于常規R語言所實現的LinearRegression算法與基于Octopus所實現的Linear Regression算法的示例代碼。由代碼比較可見,兩者在形式上非常接近,僅在有關矩陣運算調用的API上有微小差異。
圖7 基于Octopus和常規R語言的Linear Regresssion算法代碼比較
由圖7可見,在R語言中基于矩陣進行機器學習的算法設計較為簡潔和方便,LinearRegression代碼僅僅需要20行左右即可實現完整的算法。
7 結束語
近幾年來,大數據技術的發展推動了大數據機器學習和智能計算技術的發展熱潮。大數據機器學習不僅是一個單純的機器學習問題,更是一個大規模的復雜系統問題;是一個同時涉及機器學習和大數據處理兩個領域的交叉研究課題。要實現有效的大數據機器學習處理,需要構建一個能同時支持機器學習算法設計和大規模數據處理的一體化大數據機器學習系統。
本文介紹了國內外大數據機器學習系統的基本概念、基本研究問題、技術特征、系統分類以及典型系統。在此基礎上,進一步介紹了研究設計的跨平臺統一大數據機器學習原型系統Octopus?;诖蠖鄶禉C器學習和數據分析算法可表示為矩陣運算的事實,Octopus采用矩陣模型作為大數據機器學習和數據分析抽象編程計算模型,提供了一個基于矩陣的高層編程模型和接口,并基于R語言和開發環境向用戶提供了一個矩陣運算R擴展包,為用戶提供可擴展性好且易于使用的矩陣運算操作,允許用戶基于所提供的大規模矩陣運算操作,快速設計實現各種機器學習和數據分析算法。Octopus能在底層無縫地集成和使用不同的大數據計算引擎和平臺,完成大數據機器學習算法的分布和并行化執行,并支持單節點R環境以及Spark、HadoopMapReduce和MPI等多種大數據計算引擎和平臺,并能實現這些平臺間的無縫切換,實現“Write Once,Run Anywhere”的跨平臺特征。就我們所知,Octopus是目前世界上第一個具有跨平臺特性,同時還能實現底層大數據平臺對上層程序員透明化的大數據機器學習系統研究工作。
正如CCF大數據專家委員會發布的2014年《中國大數據技術與產業發展白皮書》中所說,目前大數據機器學習系統尚處在一個初期的探索和研究階段,盡管國內外已經有不少研究開發工作,但研究設計高效、可擴展且易于使用的大數據機器學習系統仍面臨諸多的技術挑戰。因此,大數據機器學習系統將是目前和未來幾年的熱點研究領域,工業界和學術界都將持續地投入相當多的資源進行深入的研究開發工作。
同樣,雖然初步研究設計了跨平臺大數據機器學習系統Octopus,但其中仍然有大量需要進一步深入研究解決和完善的技術問題,例如大規模矩陣運算的深度優化、稀疏矩陣的存儲管理和計算優化、異構大數據處理平臺環境下不同矩陣計算時的平臺自動選擇、基于矩陣計算表達式和計算流圖的計算優化等。此外,僅有矩陣計算模型還不能滿足所有的大數據機器學習計算需求,還需要考慮其他計算模型,如圖模型和參數模型(parameterserver)的混合使用,形成一個能滿足各種大數據機器學習算法設計需求的綜合系統。
致謝
本文工作受到江蘇省科技支撐計劃基金項目(No.BE2014131)和江蘇省軟件技術產業協同創新中心的資助。
參考文獻
[1] BankoM, Brill E. Scaling to very largecorpora for natural language disambiguation. Proceedings of the 39thAnnual Meeting on Association for Computational Linguistics (ACL), Toulouse,France, 2001: 26~33
[2] BrantsT, Popat C A, Xu P, et al. Large language models in machinetranslation. Proceedings of the 2007 Joint Conference on Empirical Methods inNatural Language Processing and Computational Language Learning, Prague, CzechRepublic, 2007: 858~867
[3] WangY, Zhao X M, Sun Z L, et al. Peacock: learning long-tail topic features forindustrial applications. ACM Transactions on Intelligent Systems andTechnology, 2014, 9(4)
[4] 中國計算機學會大數據專家委員會. 2015年中國大數據發展趨勢預測. 中國計算機學會通訊, 2015, 11(1): 48~52
CCFTask 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] GonzalezJ E. Emerging systems for large-scale machine learning. Proceedings of Tutorialon International Conference for Machine Learning(ICML) 2014, Beijing, China,2014
[6] 中國計算機學會大數據專家委員會. 2014年中國大數據技術與產業發展白皮書. 2014中國大數據技術大會, 北京, 中國, 2014
CCFTask Force on Big Data. White paper of China’s big data technology andindustrial development in 2014. Proceedings of Big Data Conference China,Beijing, China, 2014
[7] BoehmM, Tatikonda S, Reinwald B, et al. Hybrid parallelization strategies for large-scalemachine learning in systemML. Proceedings of the VLDB Endowment, Hangzhou,China, 2014
[8] MarklV. Breaking the chains: on declarative data analysis and data independence inthe big data era. Proceedings of the VLDB Endowment, Hangzhou, China, 2014
[9] KraskaT T. MLbase: a distributed machine-learning system. Proceedings of the 6thConference on Innovative Data Systems Research(CIDR), Asilomar, CA, USA, 2013
[10] FanW F, Geerts F, Neven F. Making queries tractable on big data withpreprocessing: through the eyes of complexity theory. Proceedings of the VLDBEndowment, Trento, Italy, 2013: 685~696
[11] DeanJ, Ghemawat S. MapReduce: simplified data processing on large clusters.Communications of the ACM, 2004, 51(1): 107~113
[12] ZahariaM, Chowdhury M, Das T, et al. Resilient distributed datasets: a fault-tolerantabstraction for in-memory cluster computing. Proceedings of the 9th USENIXConference 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 learningand graph processing with sparse matrices. Proceedings of the 8th ACM EuropeanConference on Computer Systems(EuroSys), Prague, Czech Republic, 2013: 197~210
[14] Ghoting A, Krishnamurthy R, PednaultE,et al. SystemML: declarative machinelearning on MapReduce. Proceedings of International Conference on DataEngineering (ICDE), Hannover, Germany, 2011: 231~242
[15] BoehmM, Tatikonda S, Reinwald B, et al. Hybrid parallelization strategies for large-scalemachine learning in SystemML. Proceedings of the VLDB Endowment, Hangzhou,China, 2014
[16] LowY, Bickson D, Gonzalez J, et al. Distributed graphLab: a framework for machinelearning and data mining in the cloud. Proceedings of the VLDB Endowment,Istanbul, Turkey, 2012: 716~727
[17] LiM, Andersen G D, Park W J, et al. Scaling distributed machine learning with theparameter server. Proceedings of Operating Systems Design and Implementation(OSDI), Broomfield, CD, USA, 2014: 583~598
[18] HoQ, Cipar J, Cui H, et al. More effective distributed ml via astale synchronous parallel parameter server. Proceedings of Advances in NeuralInformation Processing Systems (NIPS), Nevada, USA, 2013: 1223~1231
了解詳情或下載文章請點擊閱讀原文(安卓用戶請選擇“在瀏覽器中打開”)
總結
以上是生活随笔為你收集整理的《大数据》第1期“专题”——大数据机器学习系统研究进展(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算机网络】子网划分步骤
- 下一篇: 增加话务系统功能感想