阿里首個深度學習框架XDL正式開源!

先奉上GitHub開源地址:https://github.com/alibaba/x-deeplearning

XDL爲何而生?

XDL是X-Deep Learning的縮寫,這是一個針對高維稀疏場景業務場景的深度學習框架,主要面向廣告、推薦和搜索等典型的業務場景。

關於此項目,AI前線在《阿里開源深度學習框架 XDL,面向廣告、推薦、搜索場景》中有介紹。

爲什麼阿里媽媽要研發這樣一個深度學習框架呢?在與阿里媽媽算法平臺相關負責人交流之後,AI前線得知XDL的誕生,源於阿里媽媽內部的實際業務場景需求驅動,即電商領域的高維稀疏數據場景。

據介紹,XDL目前作爲阿里媽媽的橫向機器學習平臺,自 2016 年下半年開始逐步部署到阿里媽媽的業務系統,至 2017 年初全面完成了生產化,支撐了阿里巴巴集團的多個業務場景,其中使用最多的是阿里媽媽的定向廣告,包括展示廣告和信息流廣告。

除了這些業務場景,阿里媽媽也希望通過開源XDL,使之應用於更多的場景。

阿里媽媽認爲,在廣告、推薦、搜索等互聯網業務中,在目前業內已有的框架基礎上去搭建一個深度學習平臺還有很多工作要做,如結構化處理等,但是遵循Facebook或谷歌等國外公司的網絡架構對框架和框架邊界有很高的要求。因此,阿里媽媽把自己對於結構化數據計算、分佈式模型並行等與傳統框架不一樣的經驗分享出來,就是希望能夠從算法包到底層的計算框架賦能企業,讓企業在自己的業務上進行更好的迭代。

此外,阿里媽媽還透露將在此基礎上陸續開放一些工業界數據集,希望研究者在這個基礎上能夠進行獨立的創新和研發。

2016年,XDL項目開始啓動的大背景,是在2015年深度學習在圖像領域取得了較大突破之後,阿里媽媽受此啓發開始思考,深度學習如何在廣告、推薦、搜索這樣的場景下發揮更大的價值。

在電商場景下,數據具有高維稀疏的特點,比如在淘寶上,一個用戶對應一個商品之間的樣本非常稀疏。在初期,阿里媽媽也曾嘗試過使用TensorFlow來構建解決這個問題的技術框架,但很快得出結論,TensorFlow解決不了阿里媽媽面對的問題。另外,深度學習網絡結構非常複雜,網絡結構的迭代、優化和效率都有很大的提升空間。

因此,業務和技術上的需求,加上技術的變革,推動了XDL的誕生。從2016年開始,阿里媽媽開始在這個領域探索。

在應用層面,XDL在互聯網中的核心應用主要在於廣告、推薦和搜索場景,阿里媽媽認爲,這些場景本身足夠大、足夠有特點,因此,在智能匹配、CTR預估、廣告準備和智能工具等環節,越來越多的場景都可以基於XDL構建模型。

此外,阿里媽媽表示,XDL的推出將對很多業界公司或團隊產生強大的助力,因此B類用戶及合作伙伴是XDL生態構建的重心;當然,XDL也面向所有的開發者,歡迎感興趣的從業人員積極參與到XDL的建設,成爲重要的貢獻者。

XDL的技術積累和三次迭代

在XDL框架研發之前,阿里媽媽已經有了一些技術積累,第一個是阿里媽媽事業部主要牽頭的基於MPI協議搭建的第一代分佈式機器學習平臺,上面有很多算法,包括邏輯迴歸、MLR和樹類的GBDT等算法。另外一個技術積累是阿里媽媽內部之前在圖像方面研發的格拉丹東項目,這個項目構建了分層的深度學習端到端框架,但之後阿里媽媽發現它跟Caffe的功能有很多重合的地方,可能對業界沒有很大的增量,所以並未將其開源,而只在阿里內部使用。

任何的產品都是在迭代中不斷優化的,XDL也不例外。從2016年中啓動項目以來,XDL已經經過三次大版本的迭代,其中從0到1的第一個版本自研由機器學習相關的算法工程師主導,第二個版本引擎工程團隊參與進來重點進行的打造,而第三個版本則是工程平臺和算法平臺一起合作完成迭代,並在此基礎上開源。

XDL橋接理念V.S.微軟ONNX

XDL聲稱支持任意開源深度學習框架,要實現這一點,核心依賴於一個叫做橋接的概念。

舉個例子,橋接可以把整個計算流從tensor流變成一個結構化計算流,在計算流的中間環節橋接任何其他框架作爲其中的一個點來計算。用戶可以用XDL做第一步的結構化計算,變成tensor以後,用Pytorch、TensorFlow或MXnet來做矩陣預算,再回到XDL裏做結構化運算。當然,用戶在單機tensor計算上也可以用自己已經熟悉的框架工具,XDL對用戶來說不是一個替代品。

乍一看,阿里媽媽的XDL似乎與微軟的模型標準ONNX非常相似,後者是微軟與亞馬遜、Facebook 和 IBM 等公司共同開發,以開放源代碼的方式託管在Github上的一種針對機器學習所設計的開放式文件格式,用於存儲訓練好的模型,它使得不同的人工智能框架,如Pytorch、MXNet等可以採用相同格式存儲模型數據並交互。

在這一點上,ONNX的功能性與XDL有共通之處。

然而,阿里媽媽認爲這兩者完全是兩個不同層面的概念,ONNX是一種模型標準,而XDL則是一種建模框架和計算範式。

阿里媽媽認爲,現有框架在單機稠密網絡上的建模能力都做得比較好,並且大家習慣於用TensorFlow、Pytorch等編程語言去寫,而XDL可以提供分佈式的運行能力。如果你以前擅長用TensorFlow去寫單機模型,可能不用做過多改動,加幾行代碼就能夠獲得XDL提供的構建在結構化數據基礎上的大規模分佈式計算能力。

總而言之,它是對現有的框架的能力在稀疏場景和分佈式場景下的一個擴充。而對於ONNX來說,可能TensorFlow在單機的建模能力比較強,但是在分佈式建模能力和處理高維數據場景數據時,ONNX的分佈式建模能力就比較弱,XDL是對這個能力的彌補,用戶寫一個TensorFlow單機網絡後跑在XDL上,就可以獲得XDL提供的核心能力。

另外,橋接與Keras之類的神經網絡庫有所不同,Keras是在TensorFlow架構上層包的一個更易用的東西,但橋接是一個接口,可以把整個數據流的不同部分連接起來,對業界沒有的分佈式能力和結構化計算能力做了補充,以並行橋接的方式,在底層kernel計算上來回橋接跳轉,發揮各個框架的優勢,而無需轉換成TensorFlow特性或者它的一些底層計算。

目前,XDL選擇的是Python環境,用戶在Python環境下可以併入很多包,XDL將不同的框架連接起來。阿里媽媽表示,之所以選擇支持Python,是阿里媽媽在做出判斷之後的選擇,因爲現在深度學習研究和使用中,Python已經成爲使用最多的語言,採用Python就保證了互通性和易用性。而且,XDL採用了橋接,阿里媽媽不希望在橋接的過程中還要切換語言。

當然,用戶也可以選擇其他語言,XDL的後端框架開源的代碼也包含了TensorFlow和MXnet這兩個框架,這與阿里媽媽內部之前各個業務線使用MXnet和TensorFlow相對較多有關。另外,阿里媽媽內部還有一小部分人在使用Pytorch。阿里媽媽表示,如果以後有精力或者看到大家對Pytorch的需求比較大,會考慮將這個能力釋放出來。

其實,XDL在內部迭代的兩年多時間裏,在早期也曾支持過Caffe等框架,但後來保留下了MXnet和TensorFlow,一是因爲內部使用這兩個框架較多,二是因爲實測證明,這兩個框架不管是從易用性、性能各方面都比較好。但這並不代表XDL無法支持其他框架,XDL框架做了很好的接口抽象,任意開源框架和XDL框架之間有通用接口相連,未來還要接通什麼框架取決於用戶的需求,用戶也可以很輕鬆地通過插件的方式把自己喜愛的開源框架引入到XDL。

新一代分佈式數據框架,XDL“新”在哪裏?

在面對高維稀疏數據中,阿里媽媽看到計算模式的變化,首先是XDL具有分佈式計算的能力,第二個是結構化數據。

阿里媽媽認爲,計算流用簡單的,比如用tensor流來表示的方式是非常固化的,而且限制了計算和表示。模型就是抽象表示各種信息,這些信息具有非常強的關聯性,如果我們像原來一樣把一個樣本作爲一個向量來表示,或者並列起來變成一個Tensor矩陣來表示,會帶來信息的冗餘或折損。而XDL這種在結構化數據上構建表示和計算的能力,實際上是計算模式上的變化。

此外,整個分佈式計算能力也會發生變化,原來像parameter server參數分佈式是比較常見的模式,現在,XDL使得模型隨着不同實體分佈和關聯,模型計算也隨着實體的分佈把計算也分佈出去,而不只是信息的傳遞,整個模型的分佈式計算模式也會有很大的變化。

“雖然現在這不能算是一個完美的解決方案,但阿里媽媽提出了一個advanced model Server,這是一種與parameter server很不一樣的計算模式。這只是第一步,阿里媽媽還希望與業界共同努力,把結構化計算,包括結構化分佈式模式從框架層面變成可以解決現實問題的工具。這樣的底層抽象的變化,就是XDL作爲新一代分佈式計算框架的體現。”

性能、易用性、資源調度和兼容性上有何優勢?

XDL目前主要針對廣告、推薦、搜索場景,重點關注此類場景下高維稀疏數據的性能。

從整個分佈式水平擴展能力來說,XDL能夠做到規模化性能提升,這意味着有了更多的機器,整個訓練速度會有更大的提升,目前併發度可以達到上千的規模。

從模型能夠支持的特徵和參數規模來說,高維稀疏數據場景一個很大的特點是模型經常達到百億特徵,千億參數,模型的物理規模也是從幾十G到幾百G不等。

從訓練性能來說,阿里媽媽實際生產的大部分模型都是可以做到在分佈式高維稀疏場景下,比開源TensorFlow性能高10倍以上的量級。

另外,高維稀疏數據處理中的一個關鍵過程是參數的交換,它非常依賴於網絡的吞吐。XDL在網絡吞吐上做了很多的優化,目前在雙25G帶寬下,XDL參數交換的網絡利用率可以達到90%,甚至100%。(25G是指網絡帶寬值,業界現在大部分的網絡環境都是萬兆,阿里的基礎設施已經發展到25G或100G。)

另一方面,在高維稀疏場景下的優化方向跟業界典型框架優化方向不太一樣,比如在圖像領域場景下,業界大部分的優化方向是怎麼把硬件計算性能充分用好,在單機的編譯優化上做一些工作,把GPU計算力釋放出來。但是在廣告、搜索等高維稀疏場景下,僅僅把單機計算能力釋放出來還不夠,因爲高維稀疏場景有大量的分佈式參數交換。因此,XDL做了很多分佈式通信、小包通信、參數交換優化。

阿里媽媽表示,在易用性、資源調度和兼容性上,XDL也做了一些優化。

在易用性上,XDL主要做了兩點優化:

  1. 整個分佈式容災和調度。目前開源的所有框架,如TensorFlow都聲稱能夠支持分佈式運行,但實際上整個分佈式運行的原生支持都不是特別好,很多第三方的解決方案,如TensorFlow ONNX的原生支持也是如此。但XDL在原生支持,動態資源分配、調度,以及分佈式容災都做了一個內置的原生支持,並且在多租戶環境下做了資源隔離。

  2. 編程的易用性,如果寫一個單機的TensorFlow或單機的MXnet網絡,你只需要改十來行代碼,就能夠直接運行在XDL的分佈式流上,對用戶編程很友好。

開發和維護

阿里媽媽將XDL開源,是希望對用戶更有價值,目前主要做了三個層面的事。

第一,在底層設計上,XDL是一個橋接兼容的設計;第二,框架開源後用戶可以自行改動,而不只是給個API接口;第三,XDL爲用戶提供模板算法包,告訴用戶阿里媽媽的算法設計,生產主力模型。至於後面的發展方向,阿里媽媽表示還需要討論之後才能正式公佈。

此外,開源XDL後阿里媽媽會有專人負責社區裏的問題解答,針對一些中小型企業的個性化需求,阿里媽媽也會組織一些會議和活動。

XDL商業價值究竟幾何?

XDL據說是阿里媽媽最具商業價值的深度學習框架,那麼它究竟爲公司帶來多大的經濟效益呢?

據瞭解,基於XDL構建的深度學習模型在阿里媽媽帶來的廣告收入增量已達百億以上,具體數據並未透露。

開源XDL對阿里媽媽核心競爭力影響幾何?

對於阿里來說,廣告是其核心競爭力所在,如今將這一代表阿里媽媽核心競爭力的深度學習框架開源,是否會對阿里的核心競爭力產生影響呢?

對此,阿里媽媽算法平臺負責人給出了否定的答案。他表示,阿里巴巴擁有龐大的生態體,其在數據上的核心競爭力並不會因爲一兩個開源項目而有所減弱。對於技術團隊來講,創新迭代能力至關重要,不能躺在功勞簿上安枕無憂,開源可以獲得業界的反饋,站在更大的舞臺上重新審視自己,這對整個團隊繼續向前是一件好事。因此,開源並不會影響其核心競爭力,反而會加強。

系統化解決方案發布計劃

除了核心的 XDL 訓練框架外,阿里媽媽透露將全面開源面向高維稀疏數據場景的系統化解決方案,計劃分批次對外發布,包括面向在線實時服務的高性能深度學習預估引擎、面向全庫實時檢索的全新深度學習匹配引擎;同時還內置阿里媽媽自主研發的一系列創新算法,涉及 CTR 預估模型、CVR 預估模型、匹配召回模型、模型壓縮訓練算法等。

其中,阿里媽媽確認在線低延遲預估引擎會在近期開源,但具體時間未定。

最後,阿里媽媽還透露出了在生態建設上的野心。當被問道XDL是否有比肩TensorFlow的目標,以及建設一個更廣闊的生態時,阿里媽媽算法平臺的幾位負責人相對一笑,給出了這樣的回答:“我自己有個目標,我覺得,運營生態確實很難,但我們還是會朝這個目標前進,希望在國內廣告、推薦、搜索領域,我們將成爲這個方向深度學習最主流的選擇。”

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