碼農(nóng)福音:一個(gè)專門(mén)開(kāi)發(fā)高性能大數(shù)據(jù)代碼的系統(tǒng)「開(kāi)源了」
賴斯大學(xué)的科研團(tuán)隊(duì)將在本周的 SIGMOD 數(shù)據(jù)管理國(guó)際大會(huì)上推介 PlinyCompute。
每個(gè)精疲力竭的程序員都竭力在 Spark 之類(lèi)的‘大數(shù)據(jù)’平臺(tái)上實(shí)現(xiàn)復(fù)雜的對(duì)象和工作流程,心里想‘有沒(méi)有一種更好的方法?’美國(guó)國(guó)防高級(jí)研究計(jì)劃局(DARPA)資助的賴斯大學(xué) Pliny 項(xiàng)目的計(jì)算機(jī)科學(xué)家們認(rèn)為,他們現(xiàn)已有了解決之道,有望為程序員們帶來(lái)福音。
PlinyCompute 的 logo
賴斯大學(xué)的 PlinyCompute 將于周四在 2018 年 ACM SIGMOD 大會(huì)上公布。該團(tuán)隊(duì)在同行評(píng)審的大會(huì)論文(https://dl.acm.org/citation.cfm?id=3196933)中介紹 PlinyCompute 是“一種專門(mén)用于開(kāi)發(fā)高性能大數(shù)據(jù)代碼的系統(tǒng)”。
賴斯大學(xué)領(lǐng)導(dǎo)開(kāi)發(fā)該平臺(tái)的計(jì)算機(jī)科學(xué)教授克里斯·杰梅恩(Chris Jermaine)表示,與 Spark 一樣,PlinyCompute 力求易于使用、用途廣泛。與 Spark 不一樣,PlinyCompute 旨在支持以前只有超級(jí)計(jì)算機(jī)或高性能計(jì)算機(jī)(HPC)才能實(shí)現(xiàn)的強(qiáng)大計(jì)算。
杰梅恩說(shuō):“借助機(jī)器學(xué)習(xí),尤其是借助深度學(xué)習(xí),人們看到了復(fù)雜的分析算法應(yīng)用于大數(shù)據(jù)時(shí)可以做些什么。從《財(cái)富》500 強(qiáng)企業(yè)高管到神經(jīng)科學(xué)研究人員,每個(gè)人都在渴求越來(lái)越復(fù)雜的算法,而如今系統(tǒng)程序員滿足這個(gè)要求的辦法基本上差強(qiáng)人意。雖然 HPC 能提供這種性能,但要花好幾年才能學(xué)會(huì)為 HPC 編寫(xiě)代碼;也許更糟糕的是,可能要花好幾天才能用 Spark 創(chuàng)建的工具或庫(kù)可能需要好幾個(gè)月才能在 HPC 上編程。”
他說(shuō):“Spark 是為大數(shù)據(jù)構(gòu)建的,它支持 HPC 無(wú)法支持的特性,比如簡(jiǎn)易的負(fù)載均衡、容錯(cuò)和資源分配,這對(duì)于數(shù)據(jù)密集型任務(wù)來(lái)說(shuō)絕對(duì)必不可少。由于這個(gè),又由于開(kāi)發(fā)時(shí)間比 HPC 短得多,人們?cè)跇?gòu)建可以在 Spark 上運(yùn)行的新工具,用于處理機(jī)器學(xué)習(xí)和圖形分析等復(fù)雜任務(wù)。”
鄒佳(Jia Zou)是賴斯大學(xué)的研究科學(xué)家兼描述 PlinyCompute 的 ACM SIGMOD 論文的***作者,她表示,由于 Spark 在設(shè)計(jì)當(dāng)初并未考慮到復(fù)雜計(jì)算,所以它的計(jì)算性能只能提升到目前這個(gè)地步。
鄒佳在 2015 年進(jìn)入賴斯大學(xué)之前已在 IBM 研究中國(guó)院研究了六年的大規(guī)模分析和數(shù)據(jù)管理系統(tǒng),她說(shuō):“Spark 建立在 Java 虛擬機(jī)即 JVM 的基礎(chǔ)上,JVM 負(fù)責(zé)管理運(yùn)行時(shí)環(huán)境,并將關(guān)于內(nèi)存管理的大部分細(xì)節(jié)抽取出來(lái)。Spark 依賴 JVM,因此其性能受到了影響,尤其是像訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)搞深度學(xué)習(xí)這些任務(wù)對(duì)計(jì)算的需求上升后,更是如此。”
賴斯大學(xué)的計(jì)算機(jī)科學(xué)家克里斯·杰梅恩領(lǐng)導(dǎo) PlinyCompute 項(xiàng)目
鄒說(shuō):“PlinyCompute 不一樣,因?yàn)樗耆菫楦咝阅芏O(shè)計(jì)的。我們?cè)诨鶞?zhǔn)測(cè)試中發(fā)現(xiàn),PlinyCompute 的速度至少是 Spark 的兩倍;在一些情況下,實(shí)現(xiàn)復(fù)雜對(duì)象處理和庫(kù)式計(jì)算的速度比 Spark 快 50 倍。”
她表示,測(cè)試已表明,PlinyCompute 在構(gòu)建高性能工具和庫(kù)方面比同類(lèi)工具更勝一籌。
杰梅恩表示,不是所有的程序員都會(huì)覺(jué)得為 PlinyCompute 編寫(xiě)代碼很容易。與 Spark 所需的基于 Java 的編碼不同,PlinyCompute 庫(kù)和模型必須用 C ++ 編寫(xiě)。
杰梅恩說(shuō):“PlinyCompute 具有更大的靈活性。對(duì)于 C ++ 方面經(jīng)驗(yàn)和知識(shí)相對(duì)缺乏的人來(lái)說(shuō),這可能是一個(gè)挑戰(zhàn),但我們還對(duì)完成各種實(shí)現(xiàn)所需的代碼行數(shù)進(jìn)行了一番橫向比較。結(jié)果發(fā)現(xiàn),在大多數(shù)情況下,PlinyCompute 和 Spark 之間沒(méi)有顯著差異。”
賴斯大學(xué)的研究科學(xué)家鄒佳是介紹 PlinyCompute 的同行評(píng)審的新論文的***作者
Pliny 項(xiàng)目于 2014 年啟動(dòng),這個(gè) DARPA 資助的項(xiàng)目拿到了 1100 萬(wàn)美元款項(xiàng),致力于開(kāi)發(fā)先進(jìn)的編程工具,從而能夠?yàn)槌绦騿T們“自動(dòng)完成代碼”和“自動(dòng)糾正代碼”,就像軟件在 Web 瀏覽器和智能手機(jī)上完成搜索查詢、糾正拼寫(xiě)那樣。Pliny 使用機(jī)器學(xué)習(xí)來(lái)讀取數(shù)十億行的開(kāi)源計(jì)算機(jī)程序,并從中學(xué)習(xí);杰梅恩表示,PlinyCompute 脫胎于這個(gè)項(xiàng)目。
他說(shuō):“這是一種計(jì)算復(fù)雜的機(jī)器學(xué)習(xí)應(yīng)用,實(shí)際上沒(méi)有一個(gè)好的工具來(lái)構(gòu)建它。我們一開(kāi)始就認(rèn)識(shí)到,PlinyCompute 這種工具可以用來(lái)解決遠(yuǎn)比我們用 Pliny 項(xiàng)目來(lái)解決的問(wèn)題廣泛得多的問(wèn)題。”
想了解安裝及部署信息、API、FAQ 和教程等更多信息,請(qǐng)?jiān)L問(wèn) plinycompute.rice.edu。
這項(xiàng)研究還得到了國(guó)家科學(xué)基金會(huì)(NSF)的支持。
PlinyCompute SIGMOD 論文的其他作者包括:Matthew Barnett、Tania Lorido-Botran、Shangyu Luo、Carlos Monroy、Sourav Sikdar、Kia Teymourian 和 Binhang Yuan,他們都來(lái)自賴斯大學(xué)。
賴斯大學(xué)的 PlinyCompute 團(tuán)隊(duì)包括(從左往右):Shangyu Luo、Sourav Sikdar、Jia Zou、 Tania Lorido、Binhang Yuan、Jessica Yu、Chris Jermaine、Carlos Monroy、Dimitrije Jankov 和 Matt Barnett。