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

剛剛,阿里媽媽正式對外發布了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)過期特徵淘汰:長週期的在線學習時,用戶也可以通過打開過期特徵淘汰功能,系統會自動的對影響力弱且長週期沒有碰觸到的特徵參數進行自動淘汰。

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有明顯的優勢,在相當大併發的情況下,保持了良好的線性可擴展能力。

基於GPU訓練的深度CTR模型


本文作者:XDL

閱讀原文

本文來自雲棲社區合作伙伴“阿里技術”,如需轉載請聯繫原作者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章