大規(guī)模機(jī)器學(xué)習(xí)工程上最大的挑戰(zhàn)是模型的規(guī)模。在計(jì)算廣告,推薦系統(tǒng)的場(chǎng)景下,運(yùn)用Logistic Regression算法時(shí)常需要做特征交叉。原來(lái)兩組,三組特征的數(shù)量可能并不是太大,但是通過(guò)交叉后可能會(huì)特征數(shù)會(huì)爆炸。例如,用戶特征數(shù)1萬(wàn),廣告特征數(shù)1萬(wàn),那么交叉后總特征數(shù)就是1億,如果再與幾十個(gè)廣告位特征交叉,總特征數(shù)就會(huì)達(dá)到幾十億。有些情況下,特征交叉后,總數(shù)甚至能達(dá)到上千億。特征數(shù)量的爆炸,也帶來(lái)模型規(guī)模的爆炸,這給機(jī)器學(xué)習(xí)帶來(lái)的挑戰(zhàn)比龐大的訓(xùn)練數(shù)據(jù)量更大。 通常認(rèn)為,當(dāng)模型的規(guī)模超過(guò)單節(jié)點(diǎn)的容量后,基于MapReduce計(jì)算模型的Spark, Hadoop MapReduce就無(wú)法支持了。為了解決這一問(wèn)題,Parameter Server應(yīng)運(yùn)而生,目前是大規(guī)模機(jī)器學(xué)習(xí)研究方面的前沿。目前Parameter Server還在發(fā)展的過(guò)程中,其使用,開(kāi)發(fā)門檻相較于Spark來(lái)說(shuō)都是較高的,而且在大數(shù)據(jù)平臺(tái)中再引入一套新的計(jì)算平臺(tái),對(duì)整個(gè)體系的管理,運(yùn)維都將帶來(lái)更大點(diǎn)挑戰(zhàn)。 Fregata致力于在Spark上解決大規(guī)模機(jī)器學(xué)習(xí)的問(wèn)題,F(xiàn)regata目前已經(jīng)公開(kāi)發(fā)布的版本已經(jīng)能支持億級(jí)維度的模型,而目前內(nèi)部最新版本已經(jīng)在一個(gè)月內(nèi)連續(xù)突破了10億,100億,1000億和10000億4個(gè)臺(tái)階。在模型規(guī)模提高了4個(gè)數(shù)量級(jí)的同時(shí)保持了訓(xùn)練的高效性。下面是 Fregata的Logistic Regression算法在511412394個(gè)樣本的訓(xùn)練集下的訓(xùn)練時(shí)間: 從上表可以看出,對(duì)于5億多樣本的訓(xùn)練集,在僅使用48個(gè)Executor的情況下,千億維度以內(nèi)的問(wèn)題,都可在500秒內(nèi)完成,而且每個(gè)Executor僅需最多2G內(nèi)存。對(duì)于萬(wàn)億維度的問(wèn)題,訓(xùn)練時(shí)間也僅需800秒多一點(diǎn),只是Executor的內(nèi)存加到了8G。Fregata最近的突破,打破了在Spark上無(wú)法支持超大規(guī)模模型的瓶頸,將進(jìn)一步降低大規(guī)模機(jī)器學(xué)習(xí)的使用門檻和成本。 Fregata 項(xiàng)目地址:https://github.com/TalkingData/Fregata |
|