編輯:嘗試重新整理自己:過慢或出在機器學習/數據挖掘內存的問題
工具,比如R,Weka的功能豐富,但很慢,在他們可以處理的數據的大小限制。像Mahout,Vowpal Wabbit(VW)和它的擴展AllReduce這樣的工具是針對1K節點集羣的,它們的功能有限。例如,大衆只能通過減少一些損失函數來「學習」。
我沒有任何流行的軟件看到的是使用並行編程(好醇」並行線程,MPI等)爲加快。我認爲這對羣集可能是一種矯枉過正的問題很有用,但是等待程序完成而其他處理器核心處於空閒狀態時這種情況太糟糕了。 [作爲一個例子,可以在AWS得到26核機器和88核簇,和良好的並行算法可以給的,比方說,20X速度向上和60X不訴諸像系統重重量的hadoop]
我的意思是從社區學習:(主觀)你的真實生活問題/算法不太大,不能稱爲大數據,但仍然足夠大,你覺得更快會更好。 (客觀地)沿着「算法X對具有特徵C和大小D的數據的觀點,你的經驗花費了T時間,並且如果有算法X的並行版本可用,我有我可能拋出的M個處理器內核」。
而且我問了,原因當然是要學會在這一領域並行編程的需要,也許有一個社區驅動的努力來解決這個問題。下面詳細介紹了我幾次遇到的問題。
什麼是一些在機器學習,數據挖掘的問題和您有因爲速度太慢或需要過大的記憶困難相關的領域?
作爲一種業餘愛好研究項目,我們建立了一個徹頭徹尾的核心編程模型來處理大於系統內存更大的數據和它本身支持並行/分佈式執行。它在一些問題上表現出色(見下文),我們希望將這項技術(希望由社區驅動)擴展到現實生活中的問題。
一些基準(對Weka中,亨利馬烏和R):
一個)Apriori算法頻繁項目集挖掘[CPU結合但平均存儲器]用1.7M交易超過5.2M
Webdocs數據集獨特的物品(1.4GB)。該算法會查找在交易中頻繁出現的一組項目。對於10%的支持,Weka3無法在3天內完成。我們的版本在4小時24分(儘管公平起見,我們使用Tries而不是Weka中的哈希表)。更重要的是,一個8芯機上花了39分鐘,在8臺機 - >6分鐘30秒(= 40倍)
B)SlopeOne推薦引擎 [高內存使用]
MovieLens數據集10K電影的10K評級從70K。 SlopeOne推薦基於協作過濾的新電影。 Apache Mahout的「Taste」非分佈式推薦程序會因內存小於6GB而失敗。爲了對核心外性能進行基準測試,我們將版本限制在此限制的1/10(600MB),並且在執行時間內完成了11%的開銷(由於核心外)。
c)中降維與主成分分析(PCA)[CPU和內存綁定]的32K樣品用5400
突變體 「的p53」 蛋白數據集屬性各自(1.1GB)。 PCA用於通過以非常小的方差刪除變量來減少數據集的維數。雖然我們的版本可以處理比系統虛擬內存大的數據,但是我們對這個數據集進行了基準測試,因爲R軟件可以處理它。 R完成86分鐘的工作。我們的核心版本沒有額外的開銷;實際上,它在單核上在67分鐘內完成,在8核機器上完成14分鐘。
當今優秀的軟件可以通過將數據加載到內存(R,Weka,numpy)或數據中心(Mahout,SPSS,SAS)的tera/petabytes範圍內以兆字節爲單位進行工作。在千兆字節範圍內似乎存在差距 - 大於虛擬內存但小於「大數據」。雖然像numpy的Blaze,R大內存,scalapack等項目正在滿足這種需求。
根據您的經驗,您能否將這樣一個更快速的核心外工具應用於數據挖掘/機器學習社區的例子?
這不難打敗Weka或R(當也使用BLAS)。兩者都很慢。 – 2013-03-15 08:20:08