當今我們正處于一個大數(shù)據(jù)時代弛随,Google每天產(chǎn)生30億查詢筝野、300億Served廣告硅堆、30萬億indexed網(wǎng)頁;FaceBook目前全球超過14億用戶扭勉,每天分享43億內(nèi)容;推特每天產(chǎn)生4.3萬億Tweets;Apple Store每天App下載量達到1億左右。國內(nèi)的互聯(lián)網(wǎng)公司店展,阿里巴巴一年產(chǎn)生86億包裹养篓,平均每天2356萬個;螞蟻金服/支付寶在2015年雙十一當天共產(chǎn)生7.1億筆支付。
這么多數(shù)據(jù)如何才能有價值地將其利用起來呢?
設(shè)計理念
用戶在不同場景下有不同的響應(yīng)赂蕴,結(jié)合這些數(shù)據(jù)通過機器學(xué)習(xí)得到模型柳弄,然后進行智能決策,如個性化推薦概说、搜索個性化等语御。上圖中顯示的監(jiān)督學(xué)習(xí)的案例,監(jiān)督學(xué)習(xí)通過搜集大量用戶的日志席怪、用戶行為应闯,然后抽取成特征,然后將特征送入機器學(xué)習(xí)系統(tǒng)中挂捻,系統(tǒng)通過一定的方式得到相應(yīng)的模型碉纺。一個用戶到來之后,對用戶特征進行提取刻撒,將用戶特征送入模型中骨田,得到預(yù)測結(jié)果。例如記錄用戶的點擊声怔。購買态贤、收藏等行為,經(jīng)過模型的預(yù)測醋火,根據(jù)用戶之前的偏好悠汽,進行個性化推薦箱吕。
大數(shù)據(jù)帶來的挑戰(zhàn)
大數(shù)據(jù)給機器學(xué)習(xí)帶來機遇的同時也帶來了相應(yīng)的挑戰(zhàn)。第一個挑戰(zhàn)是模型會非常大柿冲,谷歌的大型機器學(xué)習(xí)系統(tǒng)Sibyl茬高,五年前的訓(xùn)練數(shù)據(jù)在1T到1P左右,特征級別達到百億到千億級別;樣本同樣是百億到千億級別假抄。
大數(shù)據(jù)與大規(guī)模模型結(jié)合
如此大的數(shù)據(jù)和如此大的模型如何進行結(jié)合呢?思路是采用分布式學(xué)習(xí)系統(tǒng)怎栽,結(jié)合算法和系統(tǒng)兩方面入手。
正如上文所提到的宿饱,在大數(shù)據(jù)上熏瞄,利用機器學(xué)習(xí)從中學(xué)習(xí)到知識,是人工智能取得突破的主要手段谬以,也是系統(tǒng)架構(gòu)師面臨的重要挑戰(zhàn)之一强饮。很多的模型和抽象先后用于解決這一任務(wù),從最早期的MPI,到后來的MapReduce蛉签,再到當前使用較多的Graph、Spark等沥寥。
分布學(xué)習(xí)系統(tǒng)包括兩大模塊:模型和分布式系統(tǒng)碍舍。其中模型需要解決訓(xùn)練和正確率的問題,分布式系統(tǒng)需要考慮并行邑雅、網(wǎng)絡(luò)片橡、慢機、故障處理淮野、調(diào)度捧书。
如上圖所示,分布式學(xué)習(xí)系統(tǒng)將兩者的復(fù)雜度結(jié)合起來骤星。每一個維度和算法都有融合经瓷、交疊。在網(wǎng)絡(luò)方面洞难,需要考慮網(wǎng)絡(luò)的通信效率舆吮,因為模型非常大,如果直接預(yù)發(fā)會造成網(wǎng)絡(luò)的巨大負擔队贱,如果有些流量不發(fā)色冀,又會影響訓(xùn)練和模型的正確率。
慢機方面柱嫌,在數(shù)千臺機器中锋恬,肯定會存在機器處理速度的差異,如果采用完全同步的方法编丘,迭代的速度是取決于最慢的機器与学,這就造成了資源的巨大浪費彤悔。第三故障處理,數(shù)千臺機器中一定會出現(xiàn)機器掛掉的現(xiàn)象癣防,機器掛掉之后如何讓訓(xùn)練繼續(xù)進行蜗巧,獲得正確的訓(xùn)練模型這也是一個非常大的挑戰(zhàn)。
工業(yè)界現(xiàn)有系統(tǒng)的不足
首先看一下現(xiàn)有工業(yè)界系統(tǒng)的缺點:
MapReduce:迭代式計算低效蕾盯,節(jié)點之間通信效率不高;
MPI:無法支撐大數(shù)據(jù)幕屹,任意節(jié)點掛掉,任務(wù)就失敗;
Graph:用圖來做抽象级遭,類似深度學(xué)習(xí)無法高效求解望拖,只能同步,不支持異步;
Spark:通用框架挫鸽,高維度和稀疏數(shù)據(jù)支持不夠;
綜合考慮模型訓(xùn)練正確率说敏、故障處理、慢機等因素丢郊,性價比高的選擇是參數(shù)服務(wù)器(Parameter Sever)盔沫。
大規(guī)模機器學(xué)習(xí)框架-參數(shù)服務(wù)器
參數(shù)服務(wù)器是機器學(xué)習(xí)的核心競爭力和技術(shù)壁壘之一,之所以這么說是因為:首先枫匾,它需要使用大數(shù)據(jù)(1T-1P)快速訓(xùn)練架诞、快速迭代優(yōu)化;同時需要考慮failover、通信/計算效率干茉、收斂速度等多個特性谴忧。
在之前的分析中,阿里巴巴的ODPS中的MPI為例角虫,統(tǒng)計了MPI中的Job的成功率(上圖所示)沾谓,當Work數(shù)超過1000時,成功率低于30%戳鹅,從而導(dǎo)致穩(wěn)定性很差均驶,浪費大量的資源和費用。由于存在穩(wěn)定性和成功率等問題枫虏,我們自己設(shè)計了一套參數(shù)服務(wù)器框架辣恋。
框架的大致結(jié)構(gòu)如上圖所示,包括三大模塊:Server Node模软、Worker Node伟骨、Coordinator,分別用于模型分片存儲燃异、數(shù)據(jù)分片存儲和總體流程控制携狭。該結(jié)構(gòu)相對于MPI的優(yōu)勢在于:
內(nèi)置Failover機制,穩(wěn)健性大大提升;
架構(gòu)中有多個Server回俐,模型的可擴展性非常強;
完美支持同步和異步逛腿,可以達到更快的收斂速度稀并,同時不影響模型的精度;
同時在稀疏性的上支持,讓worker和server節(jié)點在通信效率上大幅度提升单默。
參數(shù)服務(wù)器具體框架
具體來講碘举,Coordinator主要進行迭代控制,同時完成Failover管理搁廓,當Worker或Server掛掉時引颈,由Coordinator進行處理;當Worker、Server和整個Job都失敗的情況下境蜕,通過Checkpoint機制蝙场,在下一次啟動時從上一次保存的中間結(jié)果繼續(xù)前進。
Sever本質(zhì)上是分布式Key-value存儲系統(tǒng)粱年,它將一個非常大的模型售滤,通過一致性Hash切成多片,在多個Server上分擔壓力台诗,進行模型分片完箩。
Worker是將數(shù)據(jù)源的不同行加載到不同的Worker上,實現(xiàn)數(shù)據(jù)分片拉队,同時通過計算接口完成梯度計算弊知。
Worker和server通過Pull和Push兩個接口進行通信,完成模型的迭代更新氏仗。Push主要是將worker上的Weight推到server上吉捶,從而節(jié)省大量的流量夺鲜,提高網(wǎng)絡(luò)利用率;server更新之后皆尔,worker通過Pull動作從server上拉去Weight到本地。
Sever更新策略
Server有三種更新策略币励。
完全同步更新策略
第一種完全同步更新慷蠕,圖中所示的機器1和機器3雖然很早就完成了Iteration,但由于機器2是慢機食呻,所以機器1流炕、機器2、機器3需要等待最慢的機器完成iteration仅胞,才可以與server進行通信每辟,這中間存在大量的資源浪費,但也有一定的優(yōu)點:收斂性很好干旧,多次運行后模型差別不大渠欺,同時還便于調(diào)試。
完全異步更新策略
第二種更新機制完全與第一種更新機制相反:完全異步更新椎眯。完全異步是說機器1挠将、機器2胳岂、機器3隨到隨走,三者之間互相不可見舔稀,唯一的交互點是Parameter Server乳丰。這種更新策略的效率非常高,各機器之間沒有任何等待内贮。同時也會帶來一些問題产园,收斂很困難。
有界異步更新策略
第三種更新策略介于完全同步和完全異步之間贺归,稱之為有界異步淆两。有界異步可以從機器1和機器2上看出,最快的機器不能比最慢的機器快太多拂酣,兩者之間有一定的界限秋冰。通過這種機制提高模型的穩(wěn)定性。
參數(shù)服務(wù)器在算法上的優(yōu)化
邏輯回歸是一種線性回歸模型婶熬,在分類上應(yīng)用廣泛剑勾,通過logit函數(shù)將線性回歸的值限制在[0,1]范圍內(nèi),增強了模型的魯棒性赵颅。在工業(yè)界應(yīng)用較多的是稀疏邏輯回歸虽另,通過L1正則化構(gòu)造稀疏模型,具有簡單饺谬、實用捂刺、可擴展、特征操作性強等特點募寨,適合大規(guī)模問題族展,同時應(yīng)用場景非常豐富(如點擊率估算),是應(yīng)用非常廣泛的機器學(xué)習(xí)模型拔鹰。
如何結(jié)合Parameter Server對邏輯回歸進行改進呢?
目前仪缸,我們實現(xiàn)了超大規(guī)模的CTR預(yù)估算法,結(jié)合Server的更新動作列肢,實現(xiàn)同步/異步的控制恰画。
在算法優(yōu)化方面:
應(yīng)用Proximal算法,進行二階瓷马、異步Filter拴还,提高了效率;
開發(fā)增量學(xué)習(xí),提升模型利用更長歷史窗口數(shù)據(jù)的能力欧聘。
全鏈路優(yōu)化方面:
稀疏化片林、特征序列化加速、慢機處理、次要特征過濾(screen rule)等拇厢。
通過上述機制爱谁,最終實現(xiàn)提速超500%,支持千億級別樣本跟特征的效果孝偎。
邏輯回歸與在線學(xué)習(xí)結(jié)合
在線學(xué)習(xí)是工業(yè)界常用的另一類算法访敌。在線學(xué)習(xí)是指每來一個(批)訓(xùn)練樣本,就用該樣本的梯度對模型迭代一次衣盾,時效性較好寺旺。
那如何通過Parameter Server對在線學(xué)習(xí)進行改進呢?
目前,我們實現(xiàn)了超大規(guī)模在線機器學(xué)習(xí)算法(異步FTRL)势决。通過有界異步ASGD提高效率阻塑,同時模型的收斂性有較強的保證;同時基于mini batch的稀疏通信,在百億特征下果复,每個mini batch通信為毫秒級別;此外陈莽,在模型中加入類似Trust region的方式,提高模型穩(wěn)定性虽抄。
最終達到100億/100億樣本幾十分鐘內(nèi)就可以收斂的效果走搁。
算法大規(guī)模擴展
除了在線和離線之外,還有一些大規(guī)模的算法擴展:
深度學(xué)習(xí)迈窟,通過在參數(shù)服務(wù)器上支持深度學(xué)習(xí)私植,形成了通用的深度學(xué)習(xí)框架,擴展性很強车酣,例如曲稼,通過從大量click log中學(xué)習(xí),提高搜索相關(guān)性的DSSM模型加DNN語義模型湖员。
其他常用算法贫悄,包括LTR的GBDTLambdaMART、GBRank和NLP的LDA破衔、Word2Vec等等清女。
提供了通用SDK钱烟,用于降低門檻晰筛,便于開發(fā)各類算法。
典型應(yīng)用場景
第一個應(yīng)用場景是支付寶錢包內(nèi)的刮刮卡業(yè)務(wù)拴袭,螞蟻會員在支付寶客戶端內(nèi)轉(zhuǎn)賬到卡读第、繳費、余額寶轉(zhuǎn)入拥刻、信用卡還款等場景下怜瞒,使用支付寶支付,都能獲得一次刮獎機會。
這其中的實現(xiàn)過程是基于大規(guī)模學(xué)習(xí)平臺吴汪,通過協(xié)同過濾惠窄、監(jiān)督學(xué)習(xí)、特征迭代優(yōu)化漾橙,來滿足用戶個性化需求杆融,提升用戶體驗。
在阿里媽媽的應(yīng)用主要是阿里媽媽直通車搜索廣告霜运。計算廣告學(xué)的核心問題就是在給定的環(huán)境下脾歇,用戶與廣告的最佳匹配。它的傳統(tǒng)實現(xiàn)方法是通過機器學(xué)習(xí)和歷史數(shù)據(jù)淘捡,進行精準的CTR預(yù)估藕各。
結(jié)合上圖來看,當搜索鮮花時焦除,界面右側(cè)和下側(cè)會顯示掌柜熱賣的廣告激况,通過采集大量的用戶特征、廣告特征和場景特征等交叉特征膘魄,通過加大特征和樣本規(guī)模誉碴,同時算法和系統(tǒng)協(xié)同提升,基于大規(guī)模機器學(xué)習(xí)平臺瓣距,提升CTR黔帕。
未來展望
不論是人工智能還是其他前沿技術(shù),都離不開高質(zhì)量的數(shù)據(jù)和強大的計算平臺以及高效的算法平臺蹈丸,需要三者協(xié)同提升成黄。未來的發(fā)展方向主要集中在以下三個方面:
1.支持更多的通用模式,如Graph及其升級版逻杖。
2.正確率和效率的折中奋岁,是否可以進行采樣丟棄部分數(shù)據(jù)?是否可以通過更好的異步算法充分利用數(shù)據(jù)?是否可以簡化算法本身,更好的適配參數(shù)服務(wù)器框架?
3.是否需要更加通用化的DataFlow荸百,支持多種軟硬件平臺闻伶,降低大規(guī)模機器學(xué)習(xí)的門檻。
本文根據(jù)螞蟻金服的資深技術(shù)專家周俊在螞蟻金服&阿里云在線金融技術(shù)峰會上《大規(guī)模機器學(xué)習(xí)在螞蟻+阿里的應(yīng)用》的分享整理而成够话。
文章來源:36dsj
深度閱讀:基于spark的參數(shù)服務(wù)器開源實現(xiàn)