Fregata: Spark上支持萬億維機器學習模型

大規模機器學習工程上最大的挑戰是模型的規模。在計算廣告,推薦系統的場景下,運用Logistic Regression算法時常需要做特征交叉。原來兩組,三組特征的數量可能并不是太大,但是通過交叉后可能會特征數會爆炸。例如,用戶特征數1萬,廣告特征數1萬,那么交叉后總特征數就是1億,如果再與幾十個廣告位特征交叉,總特征數就會達到幾十億。有些情況下,特征交叉后,總數甚至能達到上千億。特征數量的爆炸,也帶來模型規模的爆炸,這給機器學習帶來的挑戰比龐大的訓練數據量更大。

通常認為,當模型的規模超過單節點的容量后,基于MapReduce計算模型的Spark, Hadoop MapReduce就無法支持了。為了解決這一問題,Parameter Server應運而生,目前是大規模機器學習研究方面的前沿。目前Parameter Server還在發展的過程中,其使用,開發門檻相較于Spark來說都是較高的,而且在大數據平臺中再引入一套新的計算平臺,對整個體系的管理,運維都將帶來更大點挑戰。

Fregata致力于在Spark上解決大規模機器學習的問題,Fregata目前已經公開發布的版本已經能支持億級維度的模型,而目前內部最新版本已經在一個月內連續突破了10億,100億,1000億和10000億4個臺階。在模型規模提高了4個數量級的同時保持了訓練的高效性。下面是 Fregata的Logistic Regression算法在511412394個樣本的訓練集下的訓練時間:

從上表可以看出,對于5億多樣本的訓練集,在僅使用48個Executor的情況下,千億維度以內的問題,都可在500秒內完成,而且每個Executor僅需最多2G內存。對于萬億維度的問題,訓練時間也僅需800秒多一點,只是Executor的內存加到了8G。Fregata最近的突破,打破了在Spark上無法支持超大規模模型的瓶頸,將進一步降低大規模機器學習的使用門檻和成本。

 

 

 本文由用戶 Mar89Z 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!