剛剛,阿里開源首個深度學習框架 X-Deep Learning!

阿里技術_發表於2018-12-21

640?wx_fmt=jpeg


剛剛,阿里媽媽正式對外發布了X-Deep Learning(下文簡稱XDL)的開原始碼地址,開發者們可以在Github上自主下載。


此前,在11月底,阿里媽媽就公佈了這項開源計劃,引來了業界的廣泛關注。XDL突破了現有深度學習開源框架大都面向影像、語音等低維稠密資料而設計的現狀,面向高維稀疏資料場景進行了深度優化,並已大規模應用於阿里媽媽的業務及生產場景。本文將為大家詳細介紹XDL的設計理念及關鍵技術。


開源地址



X-DeepLearning(包括核心訓練引擎及演算法解決方案)的程式碼已經在Github開源。

長按識別以下二維碼,關注“阿里技術”官方公眾號,並在對話方塊內回覆“深度學習”,即可獲得Github下載連結、瞭解更多詳情。


640?wx_fmt=jpeg


概述


以深度學習為核心的人工智慧技術,過去的幾年在語音識別、計算機視覺、自然語言處理等領域獲得了巨大的成功,其中以GPU為代表的硬體計算力,以及優秀的開源深度學習框架起到了巨大的推動作用。


儘管以TensorFlow、PyTorch、MxNet等為代表的開源框架已經取得了巨大的成功,但是當我們把深度學習技術應用在廣告、推薦、搜尋等大規模工業級場景時,發現這些框架並不能很好的滿足我們的需求。矛盾點在於開源框架大都面向影像、語音等低維連續資料設計,而網際網路的眾多核心應用場景(如廣告/推薦/搜尋)往往面對的是高維稀疏離散的異構資料,引數的規模動輒百億甚至千億。進一步的,不少產品應用需要大規模深度模型的實時訓練與更新,現有開源框架在分散式效能、計算效率、水平擴充套件能力以及實時系統適配性的等方面往往難以滿足工業級生產應用的需求。


X-DeepLearning正是面向這樣的場景設計與優化的工業級深度學習框架,經過阿里巴巴廣告業務的錘鍊,XDL在訓練規模和效能、水平擴充套件能力上都表現出色,同時內建了大量的面向廣告/推薦/搜尋領域的工業級演算法解決方案。


系統核心能力


1) 為高維稀疏資料場景而生。支援千億引數的超大規模深度模型訓練,支援批學習、線上學習等模式。

2) 工業級分散式訓練能力。支援CPU/GPU的混合排程,具備完整的分散式容災語義,系統的水平擴充套件能力優秀,可以輕鬆做到上千併發的訓練。

3) 高效的結構化壓縮訓練。針對網際網路樣本的資料特點,提出了結構化計算模式。典型場景下,相比傳統的平鋪樣本訓練方式,樣本儲存空間、樣本IO效率、訓練絕對計算量等方面都大幅下降,推薦等場景下整體訓練效率最大可提升10倍以上。

4) 成熟多後端支援。單機內部的稠密網路計算複用了成熟開源框架的能力,只需要少量的分散式驅動程式碼修改,就可以把TensorFlow/MxNet等的單機程式碼執行在XDL上,獲得XDL分散式訓練與高效能稀疏計算的能力。


內建工業級演算法解決方案


1)點選率預估領域的最新演算法,包括深度興趣網路(Deep Interest Network, DIN),使用者興趣演化模型(Deep Interest Evolution Network, DIEN),跨媒介網路(Cross Media Network,CMN)。

2)點選率&轉化率聯合建模的全空間多工模型(Entire Space Multi-task Model, ESMM)。

3)匹配召回領域的最新演算法——深度樹匹配模型(Tree-based Deep Match,TDM)。

4)輕量級通用模型壓縮演算法(Rocket Training)


系統設計與優化


640?wx_fmt=png


XDL-Flow:資料流與分散式執行時  


XDL-Flow驅動整個深度學習計算圖的生成與執行,包括樣本流水線、稀疏表徵學習、稠密網路學習。同時,XDL-Flow也負責分散式模型的儲存與交換控制邏輯,分散式容災與恢復控制等全域性一致性協調的工作。


在搜尋、推薦、廣告等場景下的樣本量巨大,通常達到幾十TB至數百TB,如果不能很好的優化樣本流水線,樣本IO系統很容易成為整個系統的瓶頸,從而導致計算硬體的利用率低下。在大規模稀疏場景下,樣本讀取的特點是IO密集,稀疏表徵計算的特點是引數交換網路通訊密集,稠密深度計算是計算密集型。


XDL-Flow通過把三個主要環節非同步流水線並行,較好的適配了3種不同型別任務的效能。最好的情況下,前兩個階段的延時都被隱藏了。同時,我們也正在嘗試自動化的Tunning非同步流水線的各個引數,包括各個Step的並行度、Buffer大小等,儘可能讓使用者不需要關心整個非同步流水線並行的細節。


640?wx_fmt=png


AMS:高效模型伺服器


AMS是面向稀疏場景專門設計與優化的分散式模型儲存與交換子系統。我們綜合小包網路通訊、引數儲存結構、引數分散式策略等進行了大量的軟硬體優化,使得AMS在吞吐力和水平擴充套件力上都大幅優於傳統的Parameter Server,AMS也支援內建的深度網路計算,使得你可以使用AMS進行表徵子網路的二階計算。


1)AMS通過軟硬體結合在網路通訊層做了大量優化,包括使用Seastar,DPDK,CPUBind,ZeroCopy等技術,充分壓榨硬體效能,經過我們實際測試,大規模併發訓練下,引數交換導致的小包吞吐能力是傳統RPC框架的5倍以上。

2)通過內建的引數動態均衡策略,可以在執行過程中找到最優的稀疏引數分佈策略,有效解決傳統引數伺服器由於引數分散式不均勻帶來的熱點問題,大幅提高了系統在高併發情況下的水平擴充套件能力。

3)AMS同樣支援通過GPU加速大Batch Size場景下的Sparse Embedding計算,針對超大Batch的場景,可以起到很好的加速作用。

4)AMS支援內部定義子網路。例如我們的演算法解決方案中提供的Cross-Media建模,影像部分的表徵子網路就是以AMS內執行的方式定義的,大幅減少了重複計算和網路吞吐。


Backend Engine:橋接技術複用成熟框架的單機能力


為了充分利用現有開源深度學習框架在稠密深度網路上的能力,XDL使用橋接技術(Bridging),把開源深度學習框架(本期開源版XDL支援了TensorFlow、MxNet)作為我們的單機稠密網路的計算引擎後端。使用者可以在保留TensorFlow或MxNet網路開發習慣的同時,通過少量的驅動程式碼修改,就直接獲得XDL在大規模稀疏計算上的分散式訓練能力。換句話說,使用XDL時無需再學習一門新的框架語言,這帶來另一個好處是XDL可以跟現有成熟的開源社群無縫對接——使用者可以很輕鬆地將tensorflow社群的某個開源模型通過XDL擴充到工業級場景。


Compact Computation:結構化計算模式大幅提升訓練效率


工業界稀疏場景下的樣本表徵,往往呈現很強的結構化特點,例如使用者特徵、商品特徵、場景特徵。這種構建方式決定了某些特徵會大量出現在重複的樣本中——隸屬於同一個使用者的多條樣本中,使用者特徵很大一部分是相同的。結構化樣本壓縮正是利用海量樣本中,大量區域性特徵重複這一特點,在儲存和計算兩個維度上對特徵進行壓縮,節省了儲存、計算和通訊頻寬資源。樣本預處理階段,對需要聚合的特徵進行排序(例如按使用者ID排序,聚合使用者特徵);batching階段,在tensor層面進行壓縮;計算階段,壓縮特徵只有在最後一層才會展開,極大節省深層網路的計算開銷。 推薦場景下的效果驗證表示,在典型的生產資料上,使用聚合排序的樣本和完全shuffle的樣本評估AUC指標一致,整體效能提升10倍以上。

640?wx_fmt=png


Online-Learning:大規模線上學習


線上學習近年來在工業界開始被大規模應用,它是工程與演算法的深入結合,賦予模型實時捕捉線上流量變化的能力,在一些對時效性要求很高的場景,有十分大的價值。例如在電商大促等場景下,線上學習可以更加實時的捕捉使用者行為的變化,顯著的提升模型的實時效果。XDL提供了一套完整的線上學習的解決方案,支援基於全量模型,讀取實時訊息佇列裡的樣本進行實時持續學習,我們內建支援了Kafka等作為Message Source,並允許按照使用者設定控制模型寫出的週期。另外,為了避免無限制的新特徵流入導致的實時模型爆炸問題,XDL內建了實時特徵自動選擇與過期特徵淘汰等功能,保證使用者使用XDL進行線上學習的簡便性。


1)去ID化的稀疏特徵學習:傳統的機器學習框架一般要求對稀疏特徵進行ID化表徵(從0開始緊湊編碼),以此來保證訓練的高效性。XDL則允許直接以原始的特徵進行訓練,大幅簡化了特徵工程的複雜度,極大地增加了全鏈路資料處理效率,這一特性在實時線上學習場景下顯得更加有意義。

2)實時特徵頻控:使用者可以設定一個特徵過濾的閾值,例如出現次數大於N次的特徵才納入模型訓練,系統會自動的採用自動概率丟棄的演算法進行特徵選擇,這樣可以大幅降低無效超低頻特徵在模型中的空間佔用。

3)過期特徵淘汰:長週期的線上學習時,使用者也可以通過開啟過期特徵淘汰功能,系統會自動的對影響力弱且長週期沒有碰觸到的特徵引數進行自動淘汰。


X-DeepLearning演算法解決方案



典型的點選率(Click-Through Rate)預估模型


DIN(Deep Interest Network)


傳統的Embedding&MLP類的模型並未對使用者的表達做過多的工作。往往通過embedding的機制將使用者的歷史行為投影到一個定長的向量空間,再經過一個sum/avg pooling操作得到一個定長的使用者向量表達。但是使用者的興趣是多種多樣的,用一個固定的向量去表達使用者不同的興趣是非常難的。事實上使用者在面對不同商品的時候,其興趣表現也不一樣,僅僅和這個商品相關的興趣會影響使用者的決策。


因此我們在預估使用者對一個具體商品的點選率的時候只需要表達其與此商品相關的興趣。在DIN中我們提出了一個興趣啟用機制,通過被預估的商品去啟用使用者歷史行為中相關的部分,從而獲取使用者在這個具體商品上的興趣。


論文地址:https://arxiv.org/abs/1706.06978


DIEN(Deep Interest Evolution Network)


DIEN主要解決兩個問題:興趣提取和興趣演化。在興趣提取這部分,傳統的演算法直接將使用者的歷史行為當做使用者的興趣。同時整個建模過程中的監督資訊全部集中於廣告點選樣本上。而單純的廣告點選樣本只能體現使用者在決策是否點選廣告時的興趣,很難建模好使用者歷史每個行為時刻的興趣。


本文中我們提出了auxiliary loss 用於興趣提取模組,約束模型在對使用者每一個歷史行為時刻的隱層表達能夠推測出後續的行為,我們希望這樣的隱層表達能更好的體現使用者在每一個行為時刻的興趣。在興趣提取模組後我們提出了興趣演化模組,傳統的RNN類似的方法只能建模一個單一的序列,然而在電商場景 使用者不同的興趣其實有不同的演化過程。在本文中我們提出AUGRU(Activation Unit GRU),讓GRU的update門和預估的商品相關。在建模使用者的興趣演化過程中,AUGRU會根據不同的預估目標商品構建不同的興趣演化路徑,推斷出使用者和此商品相關的興趣。


論文地址:https://arxiv.org/abs/1809.03672


CMN(Cross Media Network)


CMN旨在CTR預估模型中引入更多的模態資料,如影像資訊。在原有ID類特徵基礎上,增加了影像視覺特徵,共同加入廣告CTR預估模型,在阿里媽媽大規模資料上取得了顯著的效果提升。CMN包括多項技術特色:第一,影像內容特徵抽取模型與主模型共同訓練,聯合優化; 第二,同時使用影像資訊表達廣告和使用者,其中使用者表達採用使用者歷史行為對應的圖片; 第三,為處理訓練涉及到的海量影像資料,提出了“高階模型服務”的計算正規化,有效減少訓練過程中的計算、通訊、儲存負載。CMN除用於影像特徵引入外,對於文字、視訊等內容特徵也可以以合適的特徵提取網路、用同樣的模型處理。


論文地址:https://arxiv.org/abs/1711.06505


典型的轉化率(Conversion Rate)預估模型


ESMM(Entire Space Multi-task Model)


Entire Space Multi-task Model (ESMM) 是阿里媽媽研發的新型多工聯合訓練演算法正規化。ESMM模型首次提出了利用學習CTR和CTCVR的輔助任務迂迴學習CVR的思路,利用使用者行為序列資料在完整樣本空間建模,避免了傳統CVR模型經常遭遇的樣本選擇偏差和訓練資料稀疏的問題,取得了顯著的效果。


ESMM 可以很容易地推廣到具有序列依賴性的使用者行為(瀏覽、點選、加購、購買等)預估中,構建全鏈路多目標預估模型。ESMM模型中的BASE子網路可以替換為任意的學習模型,因此ESMM的框架可以非常容易地和其他學習模型整合,從而吸收其他學習模型的優勢,進一步提升學習效果,想象空間巨大。


論文地址:https://arxiv.org/abs/1804.07931


典型的匹配召回模型 


TDM(Tree-based Deep Match)


TDM自主創新提出了一套完整的基於樹的複雜深度學習推薦匹配演算法框架,它通過建立使用者興趣層次樹結構實現了高效的全庫檢索,並以此為基礎賦能深度模型引入Attention等更先進的計算結構,達到了在精度、召回率以及新穎性等指標上相對於傳統推薦方法的顯著效果提升。


進一步的,TDM設計實現了一套完整的 初始樹-模型訓練-樹重建-模型再訓練 的聯合訓練迭代框架,更加促進了效果的提升。聯合訓練賦予了TDM演算法框架較好的通用性,為TDM向新場景、新領域的遷移擴充套件提供了良好的理論基礎和極大的工程可行性。


論文地址:https://arxiv.org/abs/1801.02294


典型的模型壓縮演算法 


Rocket Training


工業上線上模型的實時推理對響應時間提出非常嚴苛的要求,從而一定程度上限制了模型的複雜程度。模型複雜程度的受限可能會導致模型學習能力的降低從而帶來效果的下降。


目前有2種思路來解決這個問題:一方面,可以在固定模型結構和引數的情況下,用計算數值壓縮來降低inference時間,同時也有設計更精簡的模型以及更改模型計算方式的工作,如Mobile Net和ShuffleNet等工作。


另一方面,利用複雜的模型來輔助一個精簡模型的訓練,測試階段,利用學習好的小模型來進行推理。這兩種方案並不衝突,在大多數情況下第二種方案可以通過第一種方案進一步降低inference時間,同時,考慮到相對於嚴苛的線上響應時間,我們有更自由的訓練時間,有能力訓練一個複雜的模型。Rocket Training屬於第二種思路,它比較的輕巧優雅,方法具有很強的通用性,可以根據系統能力來定製模型複雜度,提供了一種"無極調速"手段。在阿里媽媽的生產實踐中,Rocket Training可以極大地節省線上計算資源,顯著提升系統應對雙十一大促等流量洪峰的能力。


論文地址:https://arxiv.org/abs/1708.04106


BenchMark



我們提供幾組Benchmark資料供大家參考,重點看一下XDL在大batch、小batch等場景下的訓練效能以及水平可擴充套件能力,以及結構化壓縮訓練帶來的提速。


基於CPU訓練的深度CTR模型


我們選取模型結構為Sparse Embedding DNN結構,N路Sparse特徵分別做Embedding,再通過BiInteraction得到若干路NFM特徵。選擇兩個特徵規模的場景,Sparse特徵總規模分別約為10億(對應百億引數)/100億(對應千億引數),dense維度為數百維,單條樣本Sparse特徵id數量約100+/300+個。


訓練模式:BatchSize=100,非同步SGD訓練。


從bechmark結果可以看到,在高維稀疏場景下,XDL有明顯的優勢,在相當大併發的情況下,保持了良好的線性可擴充套件能力。



整體吞吐(萬樣本/秒)

200worker

500 worker併發

1000Worker併發

XDL_10億特徵_100億引數

94.8 萬樣本/秒

215

353.1

XDL_100億特徵_1000億引數

65.4

150.8

248



640?wx_fmt=png


基於GPU訓練的深度CTR模型


模型結構:51路embedding + 6層全連線層

特徵規模:batch_size=5000,每個batch的sparse id有上百萬,unique之後20萬

在GPU場景下,以大Batch進行訓練,同樣有良好的線性擴充套件能力。



200worker/50ps

400 worker/50ps

訓練效能(batch QPS)

1647 batch/秒

2986 batch/秒


結構化壓縮模式


測試樣本的壓縮比為4:1,batch size為5000樣本,從下表可以看出,接過話壓縮使得整體訓練效能提升了2.6倍。



20worker/20ps

壓縮後(batch QPS)

167 batch/秒

壓縮前(batch QPS)

65 batch/秒

 

開源地址



X-DeepLearning(包括核心訓練引擎及演算法解決方案)的程式碼已經在Github開源。

長按識別以下二維碼,關注“阿里技術”官方公眾號,並在對話方塊內回覆“深度學習”,即可獲得Github下載連結、瞭解更多詳情。


640?wx_fmt=jpeg


640?wx_fmt=gif

你可能還喜歡

點選下方圖片即可閱讀


640?wx_fmt=png

阿里開源!4000臺伺服器真實資料集,揭祕世界級資料中心


640?wx_fmt=jpeg

萬字長文揭祕:阿里如何實現海量資料實時分析?


640?wx_fmt=jpeg

阿里玄難:面向不確定性的軟體設計幾點思考


640?wx_fmt=jpeg

關注「阿里技術」

把握前沿技術脈搏

相關文章