如何搭建大規模機器學習平臺?以阿里和螞蟻的多個實際場景為例
導讀:近年來,隨著“大”資料及“大”模型的出現,學術界和工業界對分散式機器學習演算法引起了廣泛關注。針對這一剛需,本論文設計了一個獨一無二的分散式平臺——鯤鵬。它無縫的結合了分散式系統及並行優化演算法,解決了大規模機器學習演算法帶來的一系列問題。鯤鵬不僅囊括了資料/模型並行、負載平衡、模型同步、稀疏表示、工業容錯等特性,而且還提供了封閉好的、宜於呼叫的API供普通的機器學習者開發分散式演算法,降低使用成本並提升效率。
本論文的實驗在十億級別的樣本和特徵資料上進行,結果表示,鯤鵬這一設計使得一系列演算法的效能都得到了極大的提升,包括FTRL,Sparse-LR,以及MART。此外,鯤鵬在阿里巴巴雙11狂歡購物節及螞蟻金服的交易風險檢測中體現出了其巨大的應用價值。
研究背景
現在是個大資料的時代,各個平臺的資料量都與時俱進。舉例而言,國外的Twitter每天新增5億條Tweets,阿里巴巴每天有5000萬個包裹,螞蟻金服的支付寶交易峰會達到12萬筆/秒,僅僅在2016年雙11當天就產生了10.5億條交易。如此大的資料量使得機器學習不得不面臨著樣本及特徵規模巨大的挑戰。例如,阿里巴巴內部的模型會達到千億樣本,百億特徵,TB-TP級的訓練資料量。因此,如果搭建能夠訓練如此大規模資料的機器學習平臺是工業介面臨的一個巨大問題。
已有方法介紹
目前,業界已經有一些比較成熟的分散式處理框架,如Hadoop,Spark,GraphLab和GraphX。雖然它們可以支援機器學習演算法並行化,但它們很難讓開發人員設計出更有效率且支援更大規模的機器學習演算法。具體而言,Hadoop和Spark雖然提供了一些同步和粗粒度運算子(例如,Map,Reduce 和 Join 等),但主要還停留在解決中小規模機器學習的問題。
GraphLab/GraphX主要是為了圖儲存和計算,並不適用於普通的大規模機器學習演算法。MPI雖然能夠支援普通的分散式計算,但其缺乏容錯機制。特別是在worker很大的情況下,MPI的執行成功率會大大降低,如圖1所示。因此,如何設計更有效率且支援更大規模的機器學習演算法成為一個業界難題。
鯤鵬的研究動機及創新性
鯤鵬取名自《莊子·逍遙遊》,文中記載“北冥有魚,其名曰鯤。鯤之大,不知其幾千裡也;化而為鳥,其名為鵬。鵬之背,不知其幾千裡也。怒而飛,其翼若垂天之雲。”在我們的鯤鵬系統中,“鯤”即是超大規模分散式計算系統,它擁有超強的計算能力;而“鵬”即是超大規模分散式優化演算法,它建立在“鯤”之上。“鯤鵬”即同時擁有超大規模分散式計算系統及超大規模分散式優化演算法,合二為一使得它有“一飛沖天”的能力,如圖2所示。
系統創新
鯤鵬的創新在於它擁有了以下功能:
(1) 強大的容錯功能,甚至在複雜且忙碌的線上叢集環境中
(2) Backup Instancefor Straggler Management
(3) 支援有向無迴圈圖形式的排程和同步,包括BSP/SSP/ASP
(4) 使用者友好的介面和程式設計
演算法創新
鯤鵬架構使得常用的機器學習演算法的大規模化成為了可能,截止目前,已經有眾多機器學習演算法在鯤鵬上得以實現和應用,包括但不限於LR,FTRL,MART,FM,HashMF,DSSM,DNN,LDA。
鯤鵬的架構
總體架構
鯤鵬的架構如圖3所示,它建立在阿里巴巴集團內部的大規模分散式 Apasra 平臺上面,擁有Robust Failover、Backup Instance,以及 DGA for Scheduling &Synchronization等特性。圖3中的核心模組包括以下幾部分:
(1) Server nodes:對模型做分片儲存
(2) Worker nodes:對訓練資料做分片並計算
(3) Coordinator:控制演算法整體流程,如初始化,迭代,終止等
(4) ML Bridge:使用指令碼形式的工作流對資料進行預處理
(5) PS-Core:核心的引數伺服器元件(servers/workers/coordinator)
(6) Fuxi:監控所有機器執行狀態,必要時進行容錯
使用者視角
鯤鵬系統的呼叫,對普通使用者而言也非常簡單。使用者只需要使用簡單的幾行指令碼形式的命令,即可完成整個演算法的排程。整個過程主要包括:
(1) 資料預處理,準備成演算法接受格式
(2) 構建演算法的輸入/出表
(3) 呼叫鯤鵬演算法,ps_train -i demo_batch_input -o demo_batch_result -a xxAlgo -t
(4) xxTermination;
(5) 評估演算法效果
(6) 進行A/B測試
從圖4中可以看出,整個流程對使用者而言都是透明的,使用過程也“如絲般順滑”,不用感知演算法背後複雜的優化及排程過程。
開發者視角
鯤鵬架構對普通的機器學習演算法開發者而言也非常簡單。它將複雜的通訊及排程過程包裝成了API。如,Worker.PullFrom(Server),開發者只需要這一行簡單的程式碼即可把模型從server端pull到worker端。再如,SyncBarrier(),這開發者只需要這一行簡單的程式碼即可完成server端模型的同步。
實驗結果
與Spark和MPI的比較
圖6顯示了在七個不同資料集上(D1-D7),鯤鵬與Spark和MPI的邏輯迴歸演算法(LR)訓練時間及記憶體消耗對比。如D1(460K,20M)指該資料集包含了46萬特徵,2000萬樣本。從中可以看出,Spark和MPI的LR在特徵超大的情況下(D7)會出錯,而鯤鵬的LR則可順利訓練成功。
Kunpeng-MART與XGBoost比較
圖7顯示了基於鯤鵬實現的MultipleAdditive Regression Trees(MART)與開源的XGBoost在四個不同資料集上的對比結果。從中可以看出,基於鯤鵬的MART記憶體使用情況要穩定的低於XGBoost。此外,我們在Ads CVR2資料上重複跑了10次XGBoost,但無一成功得到結果。圖8顯示了基於鯤鵬的MART和XGBoost在相同資料集上執行時間的對比,其中也可以看出基於鯤鵬的MART訓練時間要優於XGBoost。
Worker數量對演算法的影響實驗
圖9顯示了Worker數量與演算法加速及單Worker記憶體使用的關係。在該實驗中,我們使用的是基於鯤鵬的稀疏LR演算法,特徵約有70億個,樣本約有180億個。從中可以看出,25個worker就能訓練這些資料。而且隨著worker的增多,演算法訓練速度倍增,同時單機上的記憶體使用會倍降。
總結
本文所提出的分散式學習系統——鯤鵬,擁有強大的分散式計算能力和演算法優化能力,同時也有使用者友好的介面和介面。在實際的線上或離線任務中,它能接受百億特徵,千億樣本和萬億引數。同時,它在生產叢集中,有著很好的健壯性、靈活性、擴充套件性及高效性。此外,它在阿里和螞蟻眾多實際場景中發揮出了巨大的優勢。例如,在2015年“雙11”中,鯤鵬系統上實現的“樓層”排序(LR演算法)使得UV CTR提升了21%,GMV提升了10%。
再如,基於鯤鵬實現的GBDT+DNN演算法應用在支付寶交易風險評估業務中,該演算法上線以來,相同覆蓋度的情況下,案件召回率從 91% 增加到 98%,每天減少了幾千萬次使用者的打擾。此外,在鯤鵬上實現的Deep Structured Semantic Model(DSSM)模型,已經廣泛被應用於神馬搜尋,淘寶搜尋,1688廣告,螞蟻智慧客服等業務中。
總體來說,鯤鵬系統上的10+個成熟演算法已經被廣泛應用於120+個產品中,這些無一不是阿里生態體系內最大規模的演算法。
相關文章
- FLINK 在螞蟻大規模金融場景的平臺建設
- 螞蟻大規模 Sigma 叢集 Etcd 拆分實踐
- 流式圖計算在螞蟻大資料場景的應用大資料
- 螞蟻金服 Service Mesh 大規模落地系列 - 核心篇
- 螞蟻流場景狀態演進和最佳化
- 螞蟻數科mPaaS被列為Gartner《多體驗開發平臺市場指南》代表產品
- 螞蟻金服 Service Mesh 大規模落地系列 - RPC 篇RPC
- 螞蟻金服 Service Mesh 大規模落地系列 - 運維篇運維
- 阿里同意入股螞蟻金服33%股權 為螞蟻上市鋪路阿里
- BES 在大規模向量資料庫場景的探索和實踐資料庫
- 大規模機器學習平臺的整體架構和實現細節(萬字解析,附PPT)機器學習架構
- DLRover:螞蟻開源大規模智慧分散式訓練系統分散式
- Flink 在螞蟻實時特徵平臺的深度應用特徵
- 入職阿里螞蟻三個月有感阿里
- 螞蟻大規模 Kubernetes 叢集無損升級實踐指南【探索篇】
- 螞蟻區塊鏈BaaS平臺架構與實踐區塊鏈架構
- 從平臺到中臺 | Elasticsearch 在螞蟻金服的實踐經驗Elasticsearch
- 目前的低程式碼開發平臺市場規模如何?
- 螞蟻區塊鏈平臺BaaS技術解析與實踐區塊鏈
- 深度 | 螞蟻金服自動化運維大規模 Kubernetes 叢集的實踐之路運維
- 以企業級實時資料平臺為例,瞭解何為敏捷大資料敏捷大資料
- 如何在微信小程式上開發一個「螞蟻森林」和「螞蟻莊園」結合體?微信小程式
- EMQ X 助力運營商搭建大規模 NB-IoT 平臺MQ
- [如何在微信小程式上開發一個「螞蟻森林」和「螞蟻莊園」結合體?](轉)微信小程式
- 螞蟻金服楊軍:螞蟻資料分析平臺的演進及資料分析方法的應用
- 移動化轉型後時代 誰有望成為阿里的下一個“螞蟻”?阿里
- 螞蟻金服雙11大促全面揭秘:深入洞察OceanBase雲平臺
- Serverless 如何落地?揭秘阿里核心業務大規模落地實現Server阿里
- RocketMQ Streams在雲安全及 IoT 場景下的大規模最佳實踐MQ
- 私有化場景下大規模雲原生應用的交付實踐
- 網路螞蟻的廣告條如何實現和破解的! (74字)
- 螞蟻金服成功立項“生物特徵識別多模態融合”IEEE國際標準特徵
- Apollo模擬平臺如何Hold住99.9999%的複雜場景?
- 大規模微服務場景下灰度釋出與流量染色實踐微服務
- 使用colmap對大規模場景進行分組重建
- SVO實時全域性光照:中等規模場景的GI實現
- 代理IP的三個實際應用場景
- IDC:2019年中國機器學習開發平臺市場市場規模達2.05億美元機器學習