剛剛,阿里開源首個深度學習框架 X-Deep Learning!
剛剛,阿里媽媽正式對外發布了X-Deep Learning(下文簡稱XDL)的開原始碼地址,開發者們可以在Github上自主下載。
此前,在11月底,阿里媽媽就公佈了這項開源計劃,引來了業界的廣泛關注。XDL突破了現有深度學習開源框架大都面向影像、語音等低維稠密資料而設計的現狀,面向高維稀疏資料場景進行了深度優化,並已大規模應用於阿里媽媽的業務及生產場景。本文將為大家詳細介紹XDL的設計理念及關鍵技術。
開源地址
X-DeepLearning(包括核心訓練引擎及演算法解決方案)的程式碼已經在Github開源。
長按識別以下二維碼,關注“阿里技術”官方公眾號,並在對話方塊內回覆“深度學習”,即可獲得Github下載連結、瞭解更多詳情。
概述
以深度學習為核心的人工智慧技術,過去的幾年在語音識別、計算機視覺、自然語言處理等領域獲得了巨大的成功,其中以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)過期特徵淘汰:長週期的線上學習時,使用者也可以通過開啟過期特徵淘汰功能,系統會自動的對影響力弱且長週期沒有碰觸到的特徵引數進行自動淘汰。
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 |
基於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下載連結、瞭解更多詳情。
你可能還喜歡
點選下方圖片即可閱讀
關注「阿里技術」
把握前沿技術脈搏
相關文章
- 剛剛,阿里開源 iOS 協程開發框架 coobjc!阿里iOS框架OBJ
- 剛剛,華為全場景 AI 計算框架MindSpore開源!AI框架
- 剛剛,阿里開源600頁技術全景圖,看完少走10年彎路!阿里
- Euler 今日問世!國內首個工業級的圖深度學習開源框架,阿里媽媽造深度學習框架阿里
- 剛剛學習Jdon,安裝出現問題。求助!
- 剛學會 C++ 的小白用這個開源框架,做個 RPC 服務要多久?C++框架RPC
- 10 個值得一試的開源深度學習框架深度學習框架
- 剛剛,阿里巴巴達摩院又拿了一個最高獎阿里
- 剛剛學習java前幾天,自己的簡單概括Java
- 深度學習開發必備開源框架深度學習框架
- 馬雲野心終於暴露了,剛剛,阿里無人酒店開業,沒有一個服務員…阿里
- 剛剛,阿里雲知行動手實驗室正式開放公測了阿里
- 剛開始學習nlp時遇到的問題
- 剛剛,Meta開源「分割一切」2.0模型,影片也能分割了模型
- 剛開始接觸MAYA的你,該學習哪個模組呢?
- 嘀嗒出行IPO:挑戰剛剛開始
- 剛剛,我們詳細對比了吳恩達和Udacity的深度學習課程,你們感受下...吳恩達深度學習
- 剛開始學go要注意啥?go入門學習Go
- Deep Reinforcement Learning 深度增強學習資源
- 曠視宣佈開源深度學習框架“天元”深度學習框架
- 深度學習(Deep Learning)深度學習
- 《DEEP LEARNING·深度學習》深度學習
- 阿里 BladeDISC 深度學習編譯器正式開源阿里深度學習編譯
- VS Code剛剛增強Java開發功能 - foojayJava
- 手機開始鬧情緒……剛剛寫了一個儲存過程儲存過程
- Julia 1.7 剛剛釋出
- 我是剛開學JAVA,想請教一個問題。Java
- 剛入門學習GO語言需要注意什麼?有哪些框架?Go框架
- 【王曉剛】深度學習在影象識別中的研究進展與展望深度學習
- 剛剛開始學習,用sudlime text執行python3時出現亂碼怎麼解決Python
- 阿里開源!輕量級深度學習端側推理引擎 MNN阿里深度學習
- 剛剛,我們感受了一波最「像人」的國產AI,模型還是開源的AI模型
- 剛剛,OpenAI震撼釋出o1大模型!強化學習突破LLM推理極限OpenAI大模型強化學習
- 深度學習學習框架深度學習框架
- 剛剛下載一個最新的包,安裝有問題
- 深度學習 DEEP LEARNING 學習筆記(一)深度學習筆記
- 深度學習 DEEP LEARNING 學習筆記(二)深度學習筆記
- 【深度學習系列】遷移學習Transfer Learning深度學習遷移學習