剛剛,阿里媽媽正式對外發布了X-Deep Learning(下文簡稱XDL)的開源代碼地址,開發者們能夠在Github上自主下載。算法
此前,在11月底,阿里媽媽就公佈了這項開源計劃,引來了業界的普遍關注。XDL突破了現有深度學習開源框架大都面向圖像、語音等低維稠密數據而設計的現狀,面向高維稀疏數據場景進行了深度優化,並已大規模應用於阿里媽媽的業務及生產場景。本文將爲你們詳細介紹XDL的設計理念及關鍵技術。後端
以深度學習爲核心的人工智能技術,過去的幾年在語音識別、計算機視覺、天然語言處理等領域得到了巨大的成功,其中以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)
XDL-Flow:數據流與分佈式運行時
XDL-Flow驅動整個深度學習計算圖的生成與執行,包括樣本流水線、稀疏表徵學習、稠密網絡學習。同時,XDL-Flow也負責分佈式模型的存儲與交換控制邏輯,分佈式容災與恢復控制等全局一致性協調的工做。
在搜索、推薦、廣告等場景下的樣本量巨大,一般達到幾十TB至數百TB,若是不能很好的優化樣本流水線,樣本IO系統很容易成爲整個系統的瓶頸,從而致使計算硬件的利用率低下。在大規模稀疏場景下,樣本讀取的特色是IO密集,稀疏表徵計算的特色是參數交換網絡通訊密集,稠密深度計算是計算密集型。
XDL-Flow經過把三個主要環節異步流水線並行,較好的適配了3種不一樣類型任務的性能。最好的狀況下,前兩個階段的延時都被隱藏了。同時,咱們也正在嘗試自動化的Tunning異步流水線的各個參數,包括各個Step的並行度、Buffer大小等,儘量讓用戶不須要關心整個異步流水線並行的細節。
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倍以上。
Online-Learning:大規模在線學習
在線學習近年來在工業界開始被大規模應用,它是工程與算法的深刻結合,賦予模型實時捕捉線上流量變化的能力,在一些對時效性要求很高的場景,有十分大的價值。例如在電商大促等場景下,在線學習能夠更加實時的捕捉用戶行爲的變化,顯著的提高模型的實時效果。XDL提供了一套完整的在線學習的解決方案,支持基於全量模型,讀取實時消息隊列裏的樣本進行實時持續學習,咱們內置支持了Kafka等做爲Message Source,並容許按照用戶設置控制模型寫出的週期。另外,爲了不無限制的新特徵流入致使的實時模型爆炸問題,XDL內置了實時特徵自動選擇與過時特徵淘汰等功能,保證用戶使用XDL進行在線學習的簡便性。
1)去ID化的稀疏特徵學習:傳統的機器學習框架通常要求對稀疏特徵進行ID化表徵(從0開始緊湊編碼),以此來保證訓練的高效性。XDL則容許直接以原始的特徵進行訓練,大幅簡化了特徵工程的複雜度,極大地增長了全鏈路數據處理效率,這一特性在實時在線學習場景下顯得更加有意義。
2)實時特徵頻控:用戶能夠設置一個特徵過濾的閾值,例如出現次數大於N次的特徵才歸入模型訓練,系統會自動的採用自動機率丟棄的算法進行特徵選擇,這樣能夠大幅下降無效超低頻特徵在模型中的空間佔用。
3)過時特徵淘汰:長週期的在線學習時,用戶也能夠經過打開過時特徵淘汰功能,系統會自動的對影響力弱且長週期沒有碰觸到的特徵參數進行自動淘汰。
典型的點擊率(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數據供你們參考,重點看一下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有明顯的優點,在至關大併發的狀況下,保持了良好的線性可擴展能力。
基於GPU訓練的深度CTR模型
本文做者:XDL
本文來自雲棲社區合做夥伴「阿里技術」,如需轉載請聯繫原做者。