剛剛,阿里重磅發佈機器學習平臺PAI 3.0!

3月21日,2019 阿里雲峯會在北京召開,會上阿里巴巴重磅發佈了機器學習平臺PAI 3.0版本。距離PAI 2.0發佈已經過去了2年,阿里巴巴對PAI 3.0可以說做了相當長時間的打磨。PAI 3.0新增了許多端到端智能應用,新推出算法模型市場,涵蓋電商、社交、廣告、金融、娛樂、傳統零售、客服、物流等多個行業,數十種場景的算法模型;添加流式算法組件、圖神經網絡、增強學習組件等平臺工具。作爲機器學習平臺的內核,PAI的智能計算引擎也進行了全面升級,通過編譯技術優化通用計算引擎,訓練性能加速400%;深度學習優化分佈式引擎,單任務支持上千worker併發訓練,支持5k+超大規模異構計算集羣;發佈大規模圖神經網絡,cachine機制效率提升40%,算子速度提升12倍,系統端建圖時間從數小時降至5分鐘,等等。爲了幫助大家更好地瞭解PAI 3.0的新特性和技術構建,InfoQ獨家邀請了阿里雲智能計算平臺事業部研究員林偉爲大家解讀PAI背後的核心技術。

阿里機器學習平臺PAI 3.0

PAI起初是一個定位於服務阿里集團的機器學習平臺,致力於讓AI技術更加高效、簡潔、標準的被公司內部開發者使用。爲此,PAI平臺不僅提供基於ParameterServer,支持上百億特徵、千億訓練樣本的超大規模經典算法,同時還提供了兼容Caffe、PyTorch以及基於大規模GPU集羣、深度優化的TensorFlow深度學習引擎。另外,PAI平臺上開放了阿里技術團隊深度優化過的PAI-TensorFlow版本,無論是在訓練性能還是在分佈式加速比上,相比於開源版本均有大幅提升。在此基礎上,PAI開發了一套從數據處理、算法開發、模型訓練、模型自動化調優、到模型在線/離線推理的一站式AI研發平臺。經過阿里內部大量算法工程師和複雜真實業務的考驗,PAI於2015年正式通過阿里雲對外提供服務,並在2017年3月推出了2.0版本,兩年之後,全新的3.0版本終於問世。

image

PAI 3.0新增功能概覽

image

PAI 3.0計算性能優化概覽

1. 封裝和可視化大量的經典算法

對於大部分用戶來講,機器學習的真正門檻來自於對底層算法原理的理解,以及複雜的計算機實現。爲了解決這些問題,PAI平臺封裝了200餘種經典算法,讓用戶可以通過拖拽的方式搭建機器學習實驗。

image

圖爲PAI可視化建模界面

所有算法都經歷過阿里巴巴集團許多業務、EP級數據的錘鍊。根據算法的不同特點選用MapReduce、MPI、ParameterSever、Flink等不同框架實現。

2. 神經網絡可視化:FastNerualNetwork

深度學習是當前機器學習領域最流行的技術,而深度學習中神經網絡的構建對於大部分初學者來說還是比較陌生。爲了降低深度學習的門檻,PAI團隊在Notebook中開發了FastNerualNetwork插件,使用該插件可以將原本黑盒的深度學習網絡建構成可視的流程。

image

圖爲PAI notebook建模界面

FastNerualNetwork通過提取Pooling、Embedding、Convolutional等Layer的代碼級原子構成,可以將深度學習網絡模塊化、組件化,從而實現深度學習網絡的可視化展現及修改。算法工程師基於PAI開發深度學習網絡,可以完全可視化地調整網絡結構,而且支持網絡結構與代碼相互轉換。此項功能即將開放邀測。

3. AutoML降低模型調優成本

如何探尋算法最優的超參數組合是一直以來困擾算法工程師的難題,調參工作不僅考驗算法工程師對於算法推導認知的功底,還會帶來大量手動嘗試的工作量,工作效率很低。AutoML技術通過智能化的方式降低機器學習實驗搭建的複雜度,通過自研的進化式調參等方式解放用戶的調參工作,實現模型參數自動探索、效果自動評估、模型自動向下傳導,實現模型優化全鏈路零干預,大大降低機器學習門檻,節約計算成本。

PAI-AutoML自動調參引擎不僅包含基於Parallel Search思想的Grid search、Random search兩種傳統調參模式,還包含PAI團隊基於Population Based Training理論原創的Evolutionary Optimizer調參模式,這種調參方式可以漸進式的幫助用戶以最小代價探尋最優參數組合。

image

image

與此同時,Evolutionary Optimizer在調參過程中保留所有參數的表現以備追溯,並且調參模式與訓練流程打通,做到自動選參、自動訓練、自動評估、自動部署的整個鏈路自動化。

image

4. 一站式機器學習服務

image

PAI平臺提供PAI-STUDIO(可視化建模和分佈式訓練)、PAI-DSW(notebook交互式AI研發)、PAI-EAS(在線預測服務)三套服務,每個服務既可單獨使用,也可相互打通。用戶可以從數據上傳、數據預處理、特徵工程、模型訓練、模型評估,到最終的模型發佈到離線或者在線環境,一站式完成建模。

在數據預處理方面,PAI跟阿里雲DataWorks(一站式大數據智能雲研發平臺)無縫打通,支持SQL、UDF、UDAF、MR等多種數據處理開發方式。在PAI平臺上訓練模型,生成的模型可以通過EAS部署到線上環境,整個實驗流程支持週期性調度,可以發佈到DataWorks與其它上下游任務節點打通依賴關係。另外調度任務區分生產環境以及開發環境,可以做到數據安全隔離。

PAI 3.0計算性能優化詳解

ML-as-Service作爲一種新型的雲上服務,有一個迥異於其他服務的特點——計算量非常大。這個計算量大與傳統的大數據有很大區別,傳統大數據是需要處理的數據量大,但是對每一份數據的計算本身不是密集的。比如一個經典的大數據問題: 統計一個搜索引擎每日訪問數量和每個關鍵字的點擊率,真正的計算也就是計數和標量乘法,這裏的“大”體現在數據規模上。但是機器學習,特別是現在的深度學習,對每一份數據,可能需要計算多次,每次計算都涉及複雜的數值計算,比如矩陣乘法、卷積等。這就必然引入其他專門的硬件做加速,比如GPU、TPU、FPGA等。

當前機器學習的大計算量以及對應的加速硬件,導致了高昂的計算成本,因此用戶對機器學習平臺的計算效率會提出更高的要求,以降低成本、加速試驗迭代。作爲平臺級產品,PAI從誕生之初就重點鑽研、打磨高性能的大規模分佈式機器學習框架,包括單機性能挖掘、分佈式優化、在線推理、集羣資源複用等核心能力。

PAI-TAO:深度學習編譯優化,讓訓練加速

針對深度學習模型描述靈活、計算複雜性高的特點,PAI團隊研發了深度學習編譯器TAO(Tensor Accelerator and Optimizer),以通用化、平臺化的方式來解決上層Workload與底層硬件計算單元之間高效映射的問題。

在設計理念上,TAO引入了基於硬件單元片上存儲中轉的大尺度算子融合的技術(相關細節參見論文),有效地解決了複雜計算圖融合變換的技術難題,特別是針對包括了複雜後向計算圖的訓練作業,能夠極大減少深度學習模型執行過程中的冗餘開銷。通過大尺度的計算圖融合技術,可以顯著減少硬件訪存開銷以及硬件、框架層面的調度執行開銷,並且引入了更廣闊的全局優化空間。

在框架層面,TAO引入了精細的反饋控制機制,在推行大尺度算子融合的同時避免了陷入局部最優的侷限。在大尺度算子融合的基礎上,通過在線代碼生成技術,TAO將傳統的解釋執行深度學習引擎無縫地在線轉換爲編譯執行模式,進一步減少了框架層面的執行負擔,在保證用戶建模體感不變的同時,獲得了更佳的性能體驗。

基於TAO的通用優化技術,在經典的圖像CNN模型、NLP RNN/Transformer模型、最近流行起來的BERT模型、以及語義相關性DSSM模型上,均獲得了顯著的性能優化效果,從1.3倍到4倍不等。詳細對比如下兩張圖所示。

image

基於P100 GPU,PAI-TAO採用了深度學習編譯優化:柱1 某行業語音識別模型訓練性能提升40%;柱2 某行業文本生成模型訓練性能提升51%。

image

基於V100 GPU,PAI-TAO採用了編譯優化和混合精度優化(從左到右3個柱狀圖):CNN模型 inception v3基於PAI-TAO訓練性能表現最好;BERT模型 基於PAI-TAO訓練性能提升了140%;Transformer模型 訓練性能提升了90%。

TAO的優化技術在設計上遵循了通用化原則,可以無縫地與PAI團隊研發的其他優化技術結合,比如後面會專門介紹的PAI-Blade的模型壓縮、int8量化等技術,形成強強協同的聯合優化效應。

在解決單個計算設備性能優化的同時,TAO還提出了自動化分佈式的廣義編譯優化的思想,我們稱之爲Auto-parallel功能。在Auto-parallel功能裏,用戶只需要提供一個原始的高層次模型描述,TAO會根據用戶模型特點,自動探索出適宜的分佈式執行策略,並完成分佈式相關的計算圖改造變換。Auto-parallel功能裏內嵌了分佈式運行的best practice以及自動化tuning策略,可以極大程度上減少用戶手式撰寫分佈式訓練作業的負擔。

比如在一款用戶模型上,通過Auto-parallel,自動完成了包括30個計算節點的Parameter Server分佈式執行策略的改造,而Auto-parallel的分佈式版本相較於用戶手工開發的版本,加速達到了96X,有相當一部分性能加速源於框架層面內置的最佳實踐,規避了用戶手工撰寫分佈式訓練作業的性能負優化。另外一部分性能加速來自於PAI團隊對TensorFlow的Runtime以及通訊庫的改進,引入了諸如zero-copy、lock-free、run-to-completion等技術手段,在大規模特別是稀疏場景有着大幅的性能增強。

集羣資源複用:訓練價格降至35%

PAI平臺擁有大量的計算資源,包括CPU、GPU、FPGA等。衆所周知,GPU作爲專用硬件加速器,在提供了高性能計算能力的同時,其成本也遠遠高於普通計算硬件。平臺層面如何有效發揮這些GPU硬件資源的計算效率,對於降低用戶計算成本,提供平臺差異化優勢都有着重要的意義和價值。

PAI希望實現“用更少的硬件,支持更多業務更快完成業務迭代”。爲了完成這個目標,我們針對性地研發了GPU分時複用技術。整套技術實現遵循了數據驅動的思想,包括實時在線性能數據反饋通路、細粒度GPU資源複用、虛擬顯存以及基於歷史數據的資源預估策略這幾個關鍵模塊。 在PAI平臺的設計理念中,將AI基礎設施也抽象定義爲一個廣義的反饋數據驅動的互聯網系統,而實時在線性能數據反饋通路則是驅動這個反饋系統的關鍵模塊,包括GPU資源複用,Blade以及TAO的研發過程中,均相當程度上依賴於這套反饋系統所提供的優化insights以及基礎數據保障。

細粒度GPU資源複用則是爲了確保GPU分時複用引入的一套框架中間層,通過插入框架層面鉤子的設計理念,達到GPU資源細粒度切割的目的。虛擬顯存則是爲了避免細粒度GPU資源複用可能引入的顯存溢出的worst case所專門開發的功能,以確保平臺魯棒性。基於歷史數據的資源預估策略,會針對用戶作業特點,提供更爲準確的資源需求預估,從而儘可能以最高效的資源分配方式來滿足用戶訓練、推理作業性能需求。同時,更精細的資源預估與自動調優的方案也正在開發中,以期提高資源複用的覆蓋率。

EAS:機器學習模型在線推理服務與優化

1. 彈性擴縮容

在做EAS(在線預測服務Elastic Algorithm Service)之初,PAI團隊是想解決另外一款產品OCR(印刷文字識別) 使用GPU進行在線inference的問題。過去有這樣一種模式:前一年底預估下一年的業務量並申請預算,然後開始進入物理機的採購流程,這個過程時間跨度會比較大,很難響應突然出現的大量資源需求,而另一個關鍵的問題是,資源的預估通常會有比較大的偏差,在線任務不同於離線任務可以排隊,資源不足會直接導致業務規模無法擴大,因此彈性增刪資源成爲我們一個很大的訴求。基於混合雲方案,我們開發了一套輕量的在線預測系統,即EAS,來滿足我們動態變化的資源需求。

開發EAS還有另一個重要原因,即對於使用異構計算資源(如GPU)做模型預測的需求在日益增長。在雲上,我們有豐富的異構資源可以使用,包括NVDIA的不同顯卡類型,在業務層面上可以根據性能要求和性價比選擇合適的GPU型號來進行模型預測。基於這個考慮,我們也在EAS中強化對於異構資源的彈性擴縮和調度,極大地提升了模型預測對於異構資源需求的靈活性。

2. 多種模型與開發語言

在服務內部業務的同時,我們發現外部也有大量類似模型預測的需求,不僅是當下火熱的深度學習模型,傳統模型(如隨機森林,GBDT等)也同樣有模型部署成在線服務的需求。因此,EAS決定實現多維度的支持,並更大程度地提高模型預測的靈活性。我們允許用戶以多種語言(現在支持C++/Java/Python)來開發模型預測邏輯(我們叫Processor),允許用戶在預測邏輯中加入自己的業務邏輯,將簡單的模型預測變成端對端的複雜服務。基於此,我們也提供了一些系統內置的Processor,比如傳統機器學習我們支持pmml,PAI的算法我們支持私有的offlinemodel格式,TensorFlow我們支持savedmodel和pb格式等等。用戶使用這些模型可以一鍵部署成在線服務,無需開發Processor,這對於算法同學是非常友好的。慢慢地我們也在不斷地豐富我們的內置Processor,未來會支持更多的Processor供用戶選擇。

3. 靈活部署

除去一些細節的功能特性之外,EAS還有一個比較大的特點,就是部署靈活。我們在立項之初即本着部署便捷、依賴最小化的原則去設計我們的系統。底層基於kubernetes構建,目前可通過Helm一鍵拉起整個集羣所需要所有組件,包括服務管控、監控、日誌、前端、網關等等,使得EAS可以非常簡單地在任何環境裏以敏捷版的形式輸出部署。未來我們也會考慮將整套架構開源,將這種能力更好地輸出給有需要的用戶。

深度學習的inference優化:PAI-BLADE

Blade是PAI團隊研發的深度學習推理優化引擎。整體遵循system-oriented-model-optimization和model-oriented-system-optimization的設計理念,在不斷壓榨底層硬件計算性能極限的同時,通過上層的模型優化技術來進行模型的剪枝、壓縮,從而打開更廣闊的性能優化空間。

系統層面,Blade包括計算圖優化、底層計算庫手工優化以及依託於TAO compiler的通用編譯優化。計算圖優化會通過迭代式的計算圖變換,來減少用戶模型中因爲建模靈活性引入的冗餘計算操作,同時借鑑了經典編譯器領域的peephole optimization的思想,會將計算圖中若干子圖替換爲Blade自研的更高效的底層計算庫實現。

底層計算庫層面,Blade實現了大量的高效算子和硬件計算Kernel,並在若干子領域達到乃至超過了廠商library,比如這篇文章裏提到的針對BatchMatmul算子的優化,以及針對長程雙向LSTM模型研發的Blade RNN,能夠在部分workload上超越NVIDIA提供的cuDNN RNN性能達兩倍之多,此外Blade自研的INT8計算庫,在若干經典模型上,性能超越了TensorRT。同時Blade將TAO compiler作爲優化後端接入,以更通用化的方式解決了大量的長尾多樣性模型的性能優化問題。

模型層面,Blade內嵌了auto-compression的模塊,支持自動化的剪枝、Kernel拆解、量化等模型優化策略(相關細節參見我們的論文 )。 其中量化部分支持固定位寬及混合位寬的量化策略,可以有效地發揮新硬件的硬件加速特性。剪枝部分包括自研的基於模型計算圖結構動態適配的剪枝壓縮策略,可以很好地適配引入多路連接的現代網絡結構,比如ResNet和DenseNet等。Kernel拆解通過近似變換,將原始網絡算子拆解爲低計算量的近似算子,並基於finetune調優進行精度拉回,從而達到顯著減少理論計算量的目的。

所有的量化壓縮策略,目前都已經嵌入到自動化的auto-compression框架流程裏,用戶只需要提供模型描述、基礎配置,以及再訓練所需的樣本,即可藉助於PAI平臺能力,自動化完成模型的壓縮變換。並且,因爲複雜模型壓縮策略涉及到耗時較長的再訓練過程,所以auto-compression會與TAO編譯優化以及Auto-parallel技術形成組合,以用戶無感的方式對再訓練過程進行性能加速,並內置到EAS系統,從而獲得更佳的用戶體驗。

基於FPGA的軟硬件聯合優化 : PAI-FCNN

深度學習的巨量計算需求催生了硬件架構上的創新,例如Google的TPU,以及阿里自研的AliNPU芯片。PAI平臺順應業界AI新硬件的大趨勢,利用硬件架構可定製的FPGA芯片,基於“軟件定義硬件”的理念探索軟硬件聯合的深度優化,積累了以CNN模型服務爲主的PAI-FCNN方案。一方面,PAI-FCNN提供GPU之外的加速方案,爲應用提供硬件定製的可能性;另一方面,PAI-FCNN也起到通往AI新硬件的橋樑作用,爲未來新硬件的無縫適配打下堅實基礎。

當前,PAI-FCNN在以下方面提供GPU之外的性能優化補充:

  1. 低延時的推理服務

針對低延時場景定製的硬件架構可以在最小batchsize下提供最高的性能,適合延時敏感的應用。

  1. 極低精度模型

極低精度模型可以大幅提高硬件利用率,降低硬件功耗。FPGA的硬件可訂製性爲極低精度模型的使用提供可能,極端例子比如用二進制表示的BNN網絡模型。一個實際使用案例是8位特徵值,3位權值表示的視頻檢測網絡。

  1. 對GPU加速不友好的模型

某些複雜的網絡模型很難充分利用GPU的計算能力,針對這些模型定製的硬件架構在FPGA上提供比GPU更強的加速能力和更高的性價比。

AI前沿技術的更多探索

流式計算:在線學習

隨機計算引擎的快速發展,在線學習已經被開發者逐步採用,新聞APP在大量新聞內容中實時挖掘熱點新聞,電商平臺基於用戶實時行爲推薦所需的商品,企業基於瞬息萬變的輿情數據,實時更新模型、預測突發事件……

PAI-Alink是基於Flink的算法平臺,作爲PAI平臺中的一部分,Alink支持批式/流式算法、機器學習、統計等方面的200多種常用算法,旨在通過提供豐富的算法庫及便捷的編輯運行環境,幫助數據分析和應用開發人員快速高效的實現數據的分析和處理。

Alink算法平臺上的數據分析算法包含常用的統計分析、機器學習、文本處理、推薦、異常檢測等多個領域的算法;封裝了多種常用的數據源,包括MaxCompute數據表、阿里雲Datahub流式數據、CSV數據、隨機生成數據等數據源,使得數據處理及分析鏈路更加通暢;支持流式數據的可視化,能夠實時顯示流式數據的分析結果;提供了多種在線學習算法及常用的遷移學習算法。

在Alink平臺上,數據分析和應用開發人員能夠從數據探索、模型訓練、實時預測、可視化展示,端到端地完成整個流程。

image

Alink支持流批機器學習一體化,可以加載離線批訓練生成的模型到流式訓練環境中繼續訓練。這樣的模型訓練架構既包含了批訓練對大規模數據訓練的規模化優勢,又包含了流式訓練對數據實時性反饋的時效性優勢。流批一體化訓練模式是對原有機器學習離線訓練模式的一種升級,目前PAI平臺已經全面上線了該功能,並在一些用戶場景中落地應用。

強化學習與遷移學習

爲了進一步縮小深度學習算法和實際AI應用之間的鴻溝、提升平臺的易用性,我們在PAI-TensorFlow之上,開發了面向不同AI領域的深度學習算法框架,包括圖像、NLP、強化學習、遷移學習等。在圖像算法框架EasyVision當中,我們封裝了常用的圖像算法backbone網絡結構如Resnet、inception、VGG、CifarNet等,以及面向不同視覺任務的CVHead如FasterRCNN、SSD、YOLO、DeepLab等,用戶可以基於我們的框架方便的組裝圖像分類、檢測、識別、分割等應用。

在強化學習框架A3gent當中,我們實現了高效的分佈式強化學習架構Ape-x和IMPALA,以及常用的強化學習算法組件如DQN、DDPG、PPO等,同時也內置了常用的模擬環境如GYM、Atari、VIZDOOM等。遷移學習框架ATP支持多任務學習和pretrain-finetune兩種遷移學習模式,內置了常用的預訓練模型如BERT,並在此基礎上封裝了面向不同NLP任務的組件。上述AI算法框架均在阿里巴巴集團內部廣泛應用,大大加速不同業務場景中AI應用的落地,後續也計劃逐步對外商業化推廣並開源。

PAI的下一步:開源與開放

當前機器學習領域如此蓬勃發展的一大推動力就是開源與開放。不論是學術界還是工業界,都願意把自己的成果儘早的分享出來,各種會議期刊論文層出不窮,衆多優秀的開源項目應接不暇。對所有從業者來說,這是一個生機勃勃的領域,發展和壯大這個領域,爲機器學習和人工智能的大廈添磚加瓦也是我們義不容辭的責任。秉承取之於社區,反饋於社區,讓AI技術更好地普惠大衆的理念,阿里PAI團隊即將在開源和開放方面做出如下努力:

PAI-TensorFlow

在深度學習領域,PAI選擇對TensorFlow框架做深度定製和改進,有以下三個原因:

  • TF是近幾年最流行的深度學習框架,用戶認知度高,社區活躍,上下游工具鏈完整,多種異構平臺支持等優點,這裏不再贅言;

  • TF靈活的架構和良好的抽象非常適合擴展。比如TF裏面對device有嚴格的抽象,可以非常輕巧的實現“虛擬GPU”功能,在集羣環境下支持多租戶。再比如TensorFlow原生支持的XLA,是一個基於編譯器的優化框架,在這個框架下,我們加入了更多的優化點和優化策略,並且做到所有的優化互不衝突。還有很多這樣的例子,基於TensorFlow優秀的模塊設計,PAI團隊做了大量的改進和擴充,而不會打亂已有的結構和功能。

  • 第三,TensorFlow在很多場景的性能都還有提升的餘地。TensorFlow作爲Google主導的開源深度學習系統,不論單機亦或分佈式都做了很多優化,對異構硬件資源也支持得非常好。但深度學習框架涉及的領域實在太多,變化太快,而TF又是一個龐然大物,功能非常齊全,所以在某些場景或者技術點上,並沒有做到極致,還有很大的提升空間。比如廣爲所知的Horovod,對TF的多機多卡分佈式訓練做了大量的優化,大部分情形是優於原生TensorFlow的。
    PAI團隊對TF的諸多方面做了優化與改進,比如引入效能更好的通訊庫、線程模型以及內存分配機制,改進現有的AdamOptimzer以應對大規模稀疏梯度,新增OP以支持阿里雲環境的大數據IO,基於XLA的大量編譯優化,混合精度,與TensorRT深度整合,虛擬GPU等。一方面,我們會把自己的修改push回社區分支;另外一方面,我們正在積極準備和梳理代碼,把PAI對TF的改動整體的開源出來,拋磚引玉,共同繁榮社區。

開源流式學習算法平臺Alink

流式計算框架Flink越來越受到大家的重視,在去年年底的Flink China Forward大會上,阿里開源了基於Flink的Blink,PAI平臺也即將開放大量流式算法。

PAI算法市場

算法市場是PAI希望與開發者生態兼容而推出的概念。許多開發者有這樣的疑惑:業務上了雲,是不是就只能使用雲端提供的能力,缺少了靈活性。這一點疑惑在機器學習算法領域尤爲突出,因爲理論界新的算法層出不窮,用戶不同的業務場景也需要定製化算法。

基於這種需求,PAI即將開放底層的算法開發框架,歡迎個人算法開發者進行算法自定義開發並推送到PAI算法市場。算法市場這個概念有巨大的想象空間,如何把“市場”這個概念充分坐實,需要整個生態的力量來貢獻。

image

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