一個新的項目旨在為實時處理開發(fā)一種速度更快的框架,可用來支持用Python編寫的機器學(xué)習(xí)應(yīng)用。 加州大學(xué)伯克利分校實時智能安全執(zhí)行實驗室(RISELab)的研究人員已開發(fā)出了一種新的分布式框架,該框架旨在讓基于Python的機器學(xué)習(xí)和深度學(xué)習(xí)工作負載能夠?qū)崟r執(zhí)行,并具有類似消息傳遞接口(MPI)的性能和細粒度。這種框架名為Ray,看起來有望取代Spark,業(yè)界認為Spark對于一些現(xiàn)實的人工智能應(yīng)用而言速度太慢了;過不了一年,Ray應(yīng)該會準備好用于生產(chǎn)環(huán)境。 Ray是率先從RISELab誕生的技術(shù)之一,加州大學(xué)伯克利分校的這個研究組織取代了曾大獲成功的AMPLab,后者開發(fā)出了一大批引人入勝的分布式技術(shù),這些技術(shù)影響了高性能和企業(yè)計算,包括Spark、Mesos、Tachyon及其他技術(shù)。 計算機科學(xué)教授邁克爾“喬丹(Michael Jordan)是昔日AMPLab、今日RISAab的顧問之一,最近他在加州圣何塞舉行的Strata + Hadoop World大會上討論了Ray的核心原則和驅(qū)動因素。 喬丹在3月16日的主題演講中說:“之所以開發(fā)Spark,是由于我的學(xué)生抱怨Hadoop差強人意。他們抱怨,每當在邏輯回歸之類的操作中進行迭代,總是要面臨很長的延遲。“ 喬丹繼續(xù)說:“馬泰“扎哈里亞(Matei Zaharia)是實驗室的學(xué)生之一,他聽到他們抱怨后說“我會幫助你們解決這個問題。我會構(gòu)建某種緩存系統(tǒng),那意味著你不必一直去使用磁盤。這就是Spark的起源?!?他的學(xué)生們注意到扎哈里亞開發(fā)Spark后突然變得“多重要、多有名“;扎哈里亞后來順理成章地與他人創(chuàng)辦了Databricks,并成為了加州大學(xué)伯克利分校的對手:斯坦福大學(xué)的助理教授。 喬丹說:“所以現(xiàn)在是著眼于下一代技術(shù)的時候。他們說“我們絕不會將一個項目交給搞系統(tǒng)的人。我們準備自己來搞?!八赃@下一個項目由機器學(xué)習(xí)學(xué)生來搞,開發(fā)之初就抱著要取代Spark的目的?!?Ray由RISELab的兩名博士:菲利浦“莫里茲(Philipp Moritz)和羅伯特“西原(Robert Nishihara)開發(fā)而成。研究人員竭力構(gòu)建一種框架,可以結(jié)合在實際環(huán)境下運行機器學(xué)習(xí)或基于深入學(xué)習(xí)的應(yīng)用所需要的許多不同元素。據(jù)喬丹聲稱,研究人員將應(yīng)用程序分解成了各組成部分,了解如何實際構(gòu)建一個允許實時決策機制的端到端系統(tǒng)。 喬丹說:“你需要靈活性。你需要的不光光是組建神經(jīng)網(wǎng)絡(luò)之類的東西,還需要規(guī)劃、搜索和模擬。這帶來了種種復(fù)雜的任務(wù)依賴關(guān)系。單單編寫MapReduce類型的范例(paradigm,又可譯成模式)就不是很容易。這種范例能編寫得出來,但是如果你有大不一樣的異構(gòu)工作負載和任務(wù),它執(zhí)行起來不會非常高效。它需要適應(yīng)算法的性能,因為系統(tǒng)在不斷學(xué)習(xí)。“ 很顯然,喬丹指派Spark來完成MapReduce風格的編程。雖然Spark的速度比MapReduce快得多,但它仍然是MapReduce面向批處理的工作流程范例的一些核心元素。他表示,Ray避免了Spark使用的“塊同步“(block synchronous)范例,改用了速度更快的范例。 據(jù)喬丹聲稱,Ray的速度很快,處理單個任務(wù)時延遲只有微秒。它還可以處理異構(gòu)硬件,一些應(yīng)用工作負載在CPU上執(zhí)行,另一些工作負載在在GPU上運行。Ray有許多調(diào)度程序可以統(tǒng)籌安排這一切。 它還會借鑒MPI的任務(wù)依賴屬性,MPI是低級分布式編程環(huán)境,高性能計算(HPC)領(lǐng)域的人士使用MPI來構(gòu)建模型,模擬工作負載運行起來非常快。喬丹說:“我們其實也想達到那樣級別的性能。我們不是要取代MPI。但是我們希望能夠獲得與MPI一樣好的性能,但是要簡單得多,強大得大,而且不太依賴分布式平臺?!?喬丹在Strata大會上演示期間展示了Ray如何幫助數(shù)字機器人學(xué)會跑步。 喬丹將讓集群中的各個節(jié)點保持計算狀態(tài),但是狀態(tài)會盡可能少,這將最大限度地提高穩(wěn)定性。他補充道:“不過需要注意可以在諸任務(wù)之間共享的狀態(tài)計算(stateful computation)。然后,我們顯然想要容錯機制,我們也會實現(xiàn)序列化運行,那樣我們就能輕松共享數(shù)據(jù)了?!?Ray框架目前正在開發(fā)中,不過還不是已完成的項目。有興趣的朋友可以看一看該項目放在Github上的初期測試版代碼(https://github.com/ray-project/ray)。 Ray對于開發(fā)一系列需要利用實際數(shù)據(jù)進行快速決策的應(yīng)用將大有用處,比如自主駕駛或某些新興形式的人工智能輔助醫(yī)療所需要的那種應(yīng)用。由于對這個領(lǐng)域做出的巨大貢獻,喬丹已被戲稱為“機器學(xué)習(xí)界的邁克爾“喬丹“,他認為Ray最大的影響力將體現(xiàn)在強化學(xué)習(xí)(reinforcement learning)領(lǐng)域,而不是監(jiān)督式學(xué)習(xí)系統(tǒng)。由于用來解決計算機視覺和分類問題的深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)大行其道,監(jiān)督式學(xué)習(xí)系統(tǒng)隨之流行起來。 他說:“當你開始更接近實際的決策時,不是僅僅想要模仿人類,而是想要找出最好的決策。那就是強化學(xué)習(xí)范例。強化學(xué)習(xí)其實缺乏一種很好的系統(tǒng)級支持。“ Ray是用C ++編寫的,基本上旨在加快用Python開發(fā)的機器學(xué)習(xí)算法的執(zhí)行速度。 Python腳本提交并執(zhí)行作業(yè)(job),Ray使用Python的語法特性來表示對象和作業(yè)是如何運行的。如果你為某個函數(shù)添加了@ray.remote,這表明該函數(shù)可以跨集群異步執(zhí)行。函數(shù)運行時,它會立即返回一個對象ID,之后可以查詢該ID,獲得該函數(shù)生成的任何最終結(jié)果。Ray的說明文檔表明了可以如何結(jié)合Python的列表推導(dǎo)(list comprehension),運行一系列函數(shù),并自動返回結(jié)果。 雖然Ray處于初期測試版狀態(tài),但它顯然是為了支持機器學(xué)習(xí)這個主要任務(wù)而開發(fā)的。說明文檔中給出的主要例子包括:超參數(shù)優(yōu)化(這是機器學(xué)習(xí)框架的一種常見工作負載)和訓(xùn)練人工智能網(wǎng)絡(luò)打乒乓球。還詳細介紹了如何將Ray與TensorFlow結(jié)合使用,包括如何借助深度學(xué)習(xí)系統(tǒng),充分利用Ray的遠程對象模型方面的若干技巧。 喬丹表示,雖然Ray仍處于早期階段,還沒有準備好用于生產(chǎn)環(huán)境,但應(yīng)該在一年內(nèi)作好準備。他說:“我們其實會讓這種框架盡可能強大、穩(wěn)定,但又盡量遵循學(xué)術(shù)界在激動人心的機器學(xué)習(xí)方面所要實現(xiàn)的目標?!?
«
行業(yè)大數(shù)據(jù)營銷公司微步獲瑞領(lǐng)資本2100萬投資
|
神州專車披露廣州車禍案細節(jié):家屬要求賠償2000萬
»