天天看點

千億特征流式學習在大規模推薦排序場景的應用電商個性化推薦挑戰和解決方案阿裡Parameter Server (鲲鵬,SIGKDD'17)優化千億特征流式算法體系總結

2017雲栖大會機器學習平台PAI專場,阿裡巴巴進階技術專家陳緒帶來千億特征流式學習在大規模推薦排序場景的應用的演講。主要從電商個性化推薦開始談起,進而描述了技術挑戰和PAI解決方案,重點分享了鲲鵬架構和算法調優,最好作了簡要總結。

以下是精彩内容整理:

千億特征流式學習在大規模推薦排序場景的應用電商個性化推薦挑戰和解決方案阿裡Parameter Server (鲲鵬,SIGKDD'17)優化千億特征流式算法體系總結

淘寶、天貓在無線、PC端各個場景的商品個性化推薦大家都很熟悉,這些展示都是由個性化推薦排序算法決定的。根據每個使用者不同的興趣,做到千人千面的個性化展示,比如手淘首頁的猜你喜歡,它是阿裡電商最大的推薦場景,還有人群導購、看了又看、買了又買等頁面,背後都是由機器學習算法來規劃商品個性化排序。

商品的個性化排序一般都轉化成點選率預估問題,給定一個目前使用者,并且給定使用者相關上下文的一些特征,來預測對于一個特定的商品的點選機率有多大,我們希望使用者點選率越高的商品排在前面,點選或者不點選是二分類問題,通過采集使用者商品各種次元特征進行模組化,最終訓練排序模型。

千億特征流式學習在大規模推薦排序場景的應用電商個性化推薦挑戰和解決方案阿裡Parameter Server (鲲鵬,SIGKDD'17)優化千億特征流式算法體系總結

點選率預估算法是經典的研究課題,很早以前就有邏輯回歸:Logistic Regression(LBFGS、FTRL)線性算法,還有決策樹GBDT、XGBOOST提供非線性分類能力,近幾年逐漸往更深層次發展研究,比如Factorization Machine、DNN、Wide&Deep。

具體到阿裡電商場景,我們也有特定的問題和挑戰。

阿裡電商推薦的業務特點:最大場景達到百億級别的PV/天,訓練樣本很大,億級别使用者次元和億級别商品次元使我們做特征工程交叉組合時非常容易形成爆炸式天文數字的特征次元,還有快速實時變化的使用者興趣和熱門商品。

傳統的點選率預估算法和平台的挑戰是特征規模有限(10億~100億)難以刻畫全網使用者行為和商品特征,熱門商品每天也在快速變化,離線訓練難以捕捉使用者短期内興趣模式。

千億特征流式學習在大規模推薦排序場景的應用電商個性化推薦挑戰和解決方案阿裡Parameter Server (鲲鵬,SIGKDD'17)優化千億特征流式算法體系總結

基于以上問題,我們做了大量算法架構和平台優化,在PAI平台上開發千億特征流式學習這樣的機器學習架構。

千億特征流式學習在大規模推薦排序場景的應用電商個性化推薦挑戰和解決方案阿裡Parameter Server (鲲鵬,SIGKDD'17)優化千億特征流式算法體系總結

PS支撐阿裡集團最大規模的分布式算法訓練,我們從2014年開始研發,到目前為止服務廣告、推薦、搜尋等多個重要場景,支撐PAI平台大規模算法,Owlqn-LR:300億特征、1千億樣本,LDA:1萬億word - topic矩陣等,我們也逐漸向公有雲使用者開放算法訓練服務。

PS架構面臨的挑戰有很多,包括參數規模和樣本規模巨大,為了能夠更精确的學習商品特征,我們需要将規模提升到幾千億甚至上萬億級别;模型更新間隔短(分鐘級别)才能盡快捕捉線上使用者變化資訊特征;算法效果穩定性要求高,在鲲鵬基礎上做了大量針對性功能和優化來适應新型算法場景。

PS架構具備以下特點:

邁向千億特征規模

200~400台Server,平均35GB記憶體。

特征集合高頻率變化

使用定制的ArrayHashMap存儲特征權重向量,去除特征ID化環節,插入、疊代性能較std::unordered_map提升300%。我們以高頻率向模型中插入新特征到模型中,也會以非常高的頻率剔除過期特征,在工程實踐上做了大量改進,能夠适應高頻率特征集合的高頻率變化。

通信性能優化

當并行server數量非常高時,我們做了大量通信性能優化,使得我們對大量特征樣本量實時訓練更新,Sparse、Dense參數合并通信,通信鍊路無鎖。

千億特征流式學習在大規模推薦排序場景的應用電商個性化推薦挑戰和解決方案阿裡Parameter Server (鲲鵬,SIGKDD'17)優化千億特征流式算法體系總結

我們将以前離線batch方式轉換成實時線上訓練,由全量樣本訓練向流式增量訓練(Online Learning)演化,由訓練Job轉化為不間斷訓練Service,整個過程中記憶體資料不落盤,實時感覺新資料分區觸發訓練,将訓練樣本讀到訓練程序中,将更新後的模型實時推到線上預測服務中去。同時,架構還支援靈活控制實時訓練觸發間隔,如果某些場景需要高頻模型,最高可以精确到分鐘級觸發。

我們在多資料源支援統一checkpoint、Exactly Once Failover,所有資料保證嚴格訓練一遍;支援單節點異步failover,在訓練過程中,如果有個别程序crash,整個程序不需要打斷,可以繼續不受影響繼續更新模型;我們也可以靈活斷點調參,結合流式預估、流式評價算子,加速調參過程。

千億特征流式學習在大規模推薦排序場景的應用電商個性化推薦挑戰和解決方案阿裡Parameter Server (鲲鵬,SIGKDD'17)優化千億特征流式算法體系總結

我們在鲲鵬平台上打造了一系列千億特征流式學習系列算法。包括XFtrl是線性模型+千億級寬特征;XSVD是千億規模Embedding向量召回模型,融合了許多矩陣算法;XNN也是千億特征DNN算法。我們具備了從線性到淺層Embedding再到深層DNN網絡的算法建設,實際上涵蓋了個性化推薦在算法場景下的粗排召回模型以及精排的ranking模型,在平台上都可以支援。

我們對于參數更新模式進行了相應改進,不間斷實時模型更新算法優化(XFtrl為例),比如在樣本量累積到很大時很容易遇到數值穩定性問題和參數抖動問題,我們做了動态梯度平均政策和正則政策來彌補甚至消除動态抖動影響;此外,我們需要把特征進行高頻增删,我們通過特征權重動态衰減政策及時從模型中剔除,保證模型始終是正向更新。

我們也進行了抽象算子(Operator)體系,比如參數Optimizer,支援稀疏梯度矩陣,減少計算量;參數Initializer,支援Lazy initialization,一直到參數第一次出現時我們才會進行随機初始化;我們還有很多的模型評估operator。

千億特征流式學習在大規模推薦排序場景的應用電商個性化推薦挑戰和解決方案阿裡Parameter Server (鲲鵬,SIGKDD'17)優化千億特征流式算法體系總結

正常模型評價方式是準備一個驗證資料集,每次訓練完後在模型上計算Loss、AUC等名額,這樣會帶來流式場景下的問題:使用者點選行為和商品快速變化;靜态測試集無法回報模型動态效果。

千億特征流式學習在大規模推薦排序場景的應用電商個性化推薦挑戰和解決方案阿裡Parameter Server (鲲鵬,SIGKDD'17)優化千億特征流式算法體系總結

流式模型評估:對“未來”資料實時評估目前模型準度:AUC、PCOPC、MAE、...,提高了算法工程師對離線調參的效率。

PAI平台鲲鵬架構在手淘、天貓多個大規模推薦場景上線,單場景1天100億+訓練樣本,累積2000億+特征;平台訓練速度達到500萬Sample/s疊代性能,模型持續增量線上訓練超過60天;有了大規模特征和實時應用更新,使引導點選率和客單價顯著提升。

我們在千億特征流式學習模式下訓練架構和實作算法的革新,PAI平台鲲鵬架構是推薦、廣告、搜尋排序算法的利器,而且我們以算法元件形式即将通過PAI平台提供公有雲服務。

繼續閱讀