英特爾助力構建開源大規(guī)模稀疏模型訓練 / 預測引擎 DeepRec
DeepRec(PAI-TF)是阿里巴巴集團統(tǒng)一的開源推薦引擎(https://github.com/alibaba/DeepRec),主要用于稀疏模型訓練和預測,可支撐千億特征、萬億樣本的超大規(guī)模稀疏訓練,在訓練性能和效果方面均有明顯優(yōu)勢;目前DeepRec已支持淘寶搜索、推薦、廣告等場景,并廣泛應用于淘寶、天貓、阿里媽媽、高德等業(yè)務。
英特爾自2019年以來就與阿里巴巴 PAI團隊緊密合作,將英特爾人工智能(Artificial Intelligence,AI)技術應用到DeepRec中,針對算子、子圖、runtime、框架層和模型等多個層面進行優(yōu)化,以充分發(fā)揮英特爾軟硬件優(yōu)勢,助力阿里巴巴加速內(nèi)外部AI業(yè)務性能。?
DeepRec主要優(yōu)勢
當前主流的開源引擎對超大規(guī)模稀疏訓練場景的支持尚有一定局限,例如,不支持在線訓練、特征無法動態(tài)加載、線上部署迭代不方便等,特別是性能難以達到業(yè)務需求的問題尤為明顯。為解決上述問題,DeepRec基于TensorFlow1.15針對稀疏模型場景進行了深度定制優(yōu)化,主要措施包含以下三類:
模型效果:主要通過增加EmbeddingVariable(EV)動態(tài)彈性特征功能以及改進Adagrad Optimizer來實現(xiàn)優(yōu)化。EV功能解決了原生Variable size大小難以預估、特征沖突等問題,并提供了豐富的特征準入和淘汰策略等進階功能;同時,針對特征出現(xiàn)頻次進行冷熱自動配置特征維度問題,增加了高頻特征表達力,緩解了過擬合,能夠明顯提高稀疏模型效果;
訓練和推理性能:針對稀疏場景,DeepRec在分布式、子圖、算子、Runtime等方面進行了深度性能優(yōu)化,包括分布式策略優(yōu)化、自動流水線SmartStage、自動圖融合、Embedding和Attention等圖優(yōu)化、常見稀疏算子優(yōu)化、內(nèi)存管理優(yōu)化,大幅降低了內(nèi)存使用量,顯著加速了端到端的訓練和推理性能;
部署及Serving :DeepRec支持增量模型導出和加載,實現(xiàn)了10TB級別的超大模型分鐘級別的在線訓練和更新上線,滿足了業(yè)務對時效性的高要求;針對稀疏模型中特征存在冷熱傾斜的特性,DeepRec提供了多級混合存儲(可達四級混合存儲,即HBM+DRAM+PMem+SSD)的能力,可在提升大模型性能的同時降低成本。
英特爾技術助力DeepRec實現(xiàn)高性能
英特爾與阿里巴巴 PAI團隊的緊密合作在實現(xiàn)以上三個獨特優(yōu)勢中都發(fā)揮了重要作用,DeepRec三大優(yōu)勢也充分體現(xiàn)了英特爾技術的巨大價值:
在性能優(yōu)化方面,英特爾超大規(guī)模云軟件團隊與阿里巴巴緊密合作,針對CPU平臺,從算子、子圖、框架、runtime等多個級別進行優(yōu)化,充分利用英特爾? 至強? 可擴展處理器的各種新特征,更大程度發(fā)揮硬件優(yōu)勢;
為了提升DeepRec在CPU平臺的易用性,還搭建了modelzoo來支持絕大部分主流推薦模型,并將DeepRec的獨特EV功能應用到這些模型中,實現(xiàn)了開箱即用的用戶體驗。
同時,針對超大規(guī)模稀疏訓練模型EV對存儲和KV查找操作的特殊需求,英特爾傲騰創(chuàng)新中心團隊提供基于英特爾? 傲騰TM 持久內(nèi)存(簡稱“PMem”)的內(nèi)存管理和存儲方案,支持和配合DeepRec多級混合存儲方案,滿足了大內(nèi)存和低成本需求;可編程解決方案事業(yè)部團隊使用FPGA實現(xiàn)對Embedding的KV查找功能,大幅提升了Embedding查詢能力,同時可釋放更多的CPU資源。 結合CPU、PMem和FPGA的不同硬件特點,從系統(tǒng)角度出發(fā),針對不同需求更加充分地發(fā)揮英特爾軟硬件優(yōu)勢,可加速DeepRec在阿里巴巴 AI業(yè)務中的落地,并為整個稀疏場景的業(yè)務生態(tài)提供更優(yōu)的解決方案。
英特爾? DL Boost為DeepRec提供關鍵性能加速
英特爾? DL Boost(英特爾? 深度學習加速)對DeepRec的優(yōu)化,主要體現(xiàn)在框架優(yōu)化、算子優(yōu)化、子圖優(yōu)化和模型優(yōu)化四個層面。
- 英特爾 x86 平臺 AI 能力演進- 英特爾? DL Boost
自英特爾? 至強? 可擴展處理器問世以來,通過從 AVX 256 升級到 AVX-512,英特爾將 AVX 的能力提高了一倍,極大地提升了深度學習訓練和推理能力;而第二代英特爾? 至強? 可擴展處理器中又引入 DL Boost_VNNI,大幅提升了 INT8 乘加計算性能;自第三代英特爾? 至強? 可擴展處理器之后,英特爾推出支持BFloat16(BF16)數(shù)據(jù)類型的指令集,來進一步提高深度學習訓練和推理性能。隨著硬件技術的不斷創(chuàng)新和發(fā)展,英特爾將在下一代至強? 可擴展處理器推出新的AI處理技術,進一步提高 VNNI 和 BF16 從 1 維-向量到 2 維-矩陣的能力。上述的硬件指令集技術在DeepRec的優(yōu)化中均已有所應用,使得針對不同的計算需求可使用不同的硬件特征,也驗證了英特爾? AVX-512和BF16非常適合稀疏場景的訓練和推理加速。
圖一 英特爾 x86 平臺 AI 能力演進圖
- 框架優(yōu)化
DeepRec集成了英特爾開源的跨平臺深度學習性能加速庫oneDNN(oneAPI Deep Neural Network Library),并且將oneDNN原有的線程池修改,統(tǒng)一成DeepRec的Eigen線程池,減少了線程池切換開銷,避免了不同線程池之間競爭而導致的性能下降問題。oneDNN已經(jīng)針對大量主流算子實現(xiàn)了性能優(yōu)化,包括MatMul、BiasAdd、LeakyReLU等在稀疏場景中的常見算子,能夠為搜廣推模型提供強有力的性能支撐,并且oneDNN中的算子也支持BF16數(shù)據(jù)類型,與搭載BF16指令集的第三代英特爾? 至強? 可擴展處理器同時使用,可顯著提升模型訓練和推理性能。
在DeepRec編譯選項中,只需加入 “--config=mkl_threadpool”,便可輕松開啟oneDNN優(yōu)化。
- 算子優(yōu)化
oneDNN雖可用來大幅提升計算密集型算子的性能,但搜索廣告推薦模型中存在著大量稀疏算子,如Select、DynamicStitch、Transpose、Tile、SparseSegmentMean等,這些算子的原生實現(xiàn)大部分存在一定的訪存優(yōu)化空間,對此可采用針對性方案實現(xiàn)額外優(yōu)化。該優(yōu)化調(diào)用AVX-512指令,只需在編譯命令中加入 “--copt=-march=skylake-avx512”即可開啟。以下為其中兩個優(yōu)化案例。
案例一:Select算子實現(xiàn)原理是依據(jù)條件來做元素的選擇,此時可采用英特爾? AVX-512的mask load方式,如圖二左圖所示,以減少原先由if條件帶來大量判斷所導致的時間開銷,然后再通過批量選擇提升數(shù)據(jù)讀寫效率,最終線上測試表明,性能提升顯著;
圖二 Select算子優(yōu)化案例
案例二:同樣,可以使用英特爾? AVX-512的unpack和shuffle指令對transpose算子進行優(yōu)化,即通過小Block的方式對矩陣進行轉置,如圖二右圖所示,最終經(jīng)線上測試表明,性能提升同樣十分顯著。
- 子圖優(yōu)化
圖優(yōu)化是當前AI性能優(yōu)化的主要有效手段之一。同樣的,當DeepRec應用在大規(guī)模稀疏場景下時,通常存在著以embedding特征為主的大量特征信息處理,并且embedding中包含了大量小型算子;為了實現(xiàn)通用的性能提升,優(yōu)化措施在DeepRec中加入了fused_embedding_lookup功能,對embedding子圖進行融合,減少了大量冗余操作,同時配合以英特爾? AVX-512指令加速計算,最終embedding子圖性能提升顯著。
通過在tf.feature_column.embedding_column(..., do_fusion=True) API將do_fusion設置為True,即可開啟embedding子圖優(yōu)化功能。
- 模型優(yōu)化
基于CPU平臺,英特爾在DeepRec構建了涵蓋WDL、DeepFM、DLRM、DIEN、DIN、DSSM、BST、MMoE、DBMTL、ESMM等多個主流模型的獨有推薦模型集合,涉及召回、排序、多目標等多種常見的場景;并針對硬件平臺進行性能優(yōu)化,相較于其他框架,為這些模型基于Criteo等開源數(shù)據(jù)集在CPU平臺上帶來極大的性能提升。
其中表現(xiàn)最突出的當屬混合精度的BF16和Float32的優(yōu)化實現(xiàn)。通過在DeepRec中增加自定義控制DNN層數(shù)據(jù)類型的功能,來滿足稀疏場景高性能和高精度的需求;開啟優(yōu)化的方式如圖三所示,通過keep_weights保留當前variable的數(shù)據(jù)類型為Float32,用于防止梯度累加導致的精度下降,而后再采用兩個cast操作將DNN操作轉換成BF16進行運算,依托第三代英特爾? 至強? 可擴展處理器所具備的BF16硬件運算單元,極大地提升DNN運算性能,同時通過圖融合cast操作進一步提升性能。
圖三 混合精度優(yōu)化開啟方式
為了能夠展示BF16對模型精度AUC(Area Under Curve)和性能Gsteps/s的影響,針對現(xiàn)有modelzoo的模型都應用以上混合精度優(yōu)化方式。阿里巴巴PAI團隊使用DeepRec在阿里云平臺的評測表明??[1]??,基于Criteo數(shù)據(jù)集,使用BF16優(yōu)化后,模型WDL精度或AUC可以逼近FP32,并且BF16模型的訓練性能提升達1.4倍,效果顯著。
未來,為了更大程度地發(fā)揮CPU平臺硬件優(yōu)勢,尤其是將新硬件特征的效果最大化, DeepRec將從不同角度進一步實施優(yōu)化,包括優(yōu)化器算子、attention子圖、添加多目標模型等,以便為稀疏場景打造更高性能的CPU解決方案。
使用PMem實現(xiàn)Embedding存儲
對于超大規(guī)模稀疏模型訓練和預測引擎(千億特征、萬億樣本、模型10TB級別),若全部采用動態(tài)隨機存取存儲器(Dynamic?Random?Access?Memory,DRAM)來存儲,會大幅提升總擁有成本?(Total?Cost?of?Ownership,TCO),同時給企業(yè)的 IT 運維和管理帶來巨大壓力,讓 AI 解決方案的落地遭遇挑戰(zhàn)。
PMem具有更高存儲密度和數(shù)據(jù)持久化優(yōu)勢,I/O?性能接近?DRAM?,成本更為經(jīng)濟實惠,可充分滿足超大規(guī)模稀疏訓練和預測在高性能和大容量兩方面的需求。
PMem支持兩種操作模式,即內(nèi)存模式(Memory Mode)和應用直接訪問模式(App Direct Mode)。在內(nèi)存模式中,它與普通的易失性(非持久性)系統(tǒng)存儲器完全一樣,但成本更低,能在保持系統(tǒng)預算的同時實現(xiàn)更高容量,并在單臺服務器中提供 TB 級別的內(nèi)存總容量;相比于內(nèi)存模式,應用直接訪問模式則可以利用PMem的持久化特性。在應用直接訪問模式下,PMem和與其相鄰的DRAM內(nèi)存都會被識別為可按字節(jié)尋址的內(nèi)存,操作系統(tǒng)可以將PMem硬件作為兩種不同的設備來使用,一種是FSDAX模式,PMem被配置成塊設備,用戶可以將其格式化成一個文件系統(tǒng)來使用; 另一種是DEVDAX模式,PMem被驅動為單個字符設備,依賴內(nèi)核(5.1以上)提供的KMEM DAX特性,把PMem作為易失性內(nèi)存使用,接入內(nèi)存管理系統(tǒng),作為一個和DRAM類似的、較慢較大的內(nèi)存NUMA節(jié)點,應用可透明訪問。
在超大規(guī)模特征訓練中, Embedding 變量存儲占用 90%以上的內(nèi)存,內(nèi)存容量會成為其瓶頸之一。將EV 存到PMem 可以打破這一瓶頸,創(chuàng)造多項價值,例如提高大規(guī)模分布式訓練的內(nèi)存存儲能力、支持更大模型的訓練和預測、減少多臺機器之間的通信、提升模型訓練性能,同時降低 TCO。
在Embedding多級混合存儲中,PMem同樣是打破DRAM瓶頸的極佳選擇。目前將EV存到PMem已具備三種方式,且在如下這三種方式下運行micro-benchmark、WDL 模型和WDL-proxy模型,性能非常接近于將EV存到DRAM,這無疑使得其TCO獲得了很大優(yōu)勢:
- 將PMem配置成內(nèi)存模式來保存EV;
- 將PMem配置成應用直接訪問FSDAX模式,并采用基于Libpmem庫的分配器來保存EV;
- 將PMem配置成NUMA節(jié)點并采用基于Memkind庫的分配器來保存EV。
阿里巴巴PAI團隊在阿里云內(nèi)存增強型實例ecs.re7p.16xlarge上采用3種保存EV的方式進行了Modelzoo中的WDL單機模型對比測試??[2]??,這3種方式分別是將EV存到DRAM,采用基于Libpmem庫的分配器來保存EV和采用基于Memkind庫的分配器來保存EV,測試結果表明將EV存到PMem與將EV存到DRAM的性能非常接近。
圖四 Embedding多級混合存儲
由此,下一步優(yōu)化計劃將采用PMem保存模型,把稀疏模型checkpoint文件存到持久內(nèi)存中,來實現(xiàn)多個數(shù)量級的性能提升,擺脫目前用SSD保存恢復超大模型需要較長時間,且期間訓練預測會中斷的窘境。
FPGA加速Embedding Lookup
大規(guī)模稀疏訓練及預測涵蓋多種場景,例如分布式訓練、單機和分布式預測以及異構計算訓練等。它們與傳統(tǒng)卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)或循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Networks,RNN)相比有一個關鍵的不同,那就是 embedding table的處理,而這些場景中的Embedding table處理需求面臨新的挑戰(zhàn):
- 巨大的存儲容量要求(可達10TB或更多);
- 相對低的計算密度;
- 不規(guī)則的memory訪問模式。
DeepRec通過PS-worker架構來支持超大規(guī)模任務場景。在PS-worker架構中,存儲與計算分離,Embedding table以Key-Value的形式被存儲在(幾十、上百個)Parameter Servers中,這些PS為(幾百、上千個)Worker提供存取、更新模型參數(shù)的服務,其關鍵的指標就是流通量和訪問時延。而面對大規(guī)模稀疏模型訓練和預測,現(xiàn)有框架中PS-worker的實現(xiàn)就顯露了其瓶頸:
- 用軟件通過多線程方式實現(xiàn)的KV engine成為了流通量的瓶頸;
- 基于TCP/RDMA實現(xiàn)的rpc帶來的開銷,使得Parameter Server在分布式擴展時成為明顯的時延和性能瓶頸。
為了解決流通量瓶頸和時延的問題,優(yōu)化中引入了支持CXL (Compute Express Link)的英特爾? AgilexTM I系列 FPGA,實施路徑如圖五所示:
圖五 引入英特爾?AgilexTM I系列 FPGA實施優(yōu)化
- 通過FPGA實現(xiàn)硬件的KV engine可以飽和內(nèi)存或網(wǎng)絡帶寬,解決流通量瓶頸問題;
- 通過自定義支持可靠傳輸?shù)膖ransport layer協(xié)議,在同一個FPGA中處理KV engine和網(wǎng)絡協(xié)議,不經(jīng)過主機CPU直接根據(jù)key處理value,以極低的時延和極小的抖動,消除Parameter Server在分布式擴展時的時延和性能瓶頸;
- 通過CXL提供的cache-coherent 連接支持HDM ( Host Managed Device Memory )訪問,設備端(FPGA卡)上采用DDR4以支持熱數(shù)據(jù)訪問的高性能需求,主機端使用PMem支持冷數(shù)據(jù)的存儲,極大化降低TCO;
- 以FPGA可以進一步實現(xiàn)embedding table的in-line處理,例如tensor 操作,或者實現(xiàn)壓縮及解壓縮在網(wǎng)絡帶寬限制方面的突破。
基于英特爾? AgilexTM I系列 FPGA的加速方案能在一個硬件平臺支持上述所有場景,流通量顯著提升,同時提供較低的訪問時延。
總結
前文介紹了針對DeepRec在CPU、PMem和FPGA不同硬件的優(yōu)化實現(xiàn)方案,并成功部署到阿里巴巴多個內(nèi)部和外部業(yè)務場景,在實際業(yè)務中也獲得了明顯的端到端性能加速,從不同角度解決了超大規(guī)模稀疏場景面臨的問題和挑戰(zhàn)。眾所周知,英特爾為AI應用提供了多樣化的硬件選擇,為客戶選擇更優(yōu)性價比的AI方案提供了可能;與此同時,英特爾與阿里巴巴及廣大客戶正一同基于多樣化硬件實施軟硬一體的創(chuàng)新協(xié)作和優(yōu)化,從而更充分地發(fā)揮英特爾技術和平臺的價值。英特爾也期望繼續(xù)和業(yè)界伙伴合作展開更深入地合作,持續(xù)為AI技術的部署落地貢獻力量。
法律聲明
英特爾并不控制或審計第三方數(shù)據(jù)。請您審查該內(nèi)容,咨詢其他來源,并確認提及數(shù)據(jù)是否準確。
性能測試結果基于2022年4月27日和2022年5月23日進行的測試,且可能并未反映所有公開可用的安全更新。詳情請參閱配置信息披露。沒有任何產(chǎn)品或組件是絕對安全的。
描述的成本降低情景均旨在在特定情況和配置中舉例說明特定英特爾產(chǎn)品如何影響未來成本并提供成本節(jié)約。情況均不同。英特爾不保證任何成本或成本降低。
英特爾技術特性和優(yōu)勢取決于系統(tǒng)配置,并可能需要支持的硬件、軟件或服務得以激活。產(chǎn)品性能會基于系統(tǒng)配置有所變化。沒有任何產(chǎn)品或組件是絕對安全的。更多信息請從原始設備制造商或零售商處獲得,或請見intel.com。
英特爾、英特爾標識以及其他英特爾商標是英特爾公司或其子公司在美國和/或其他國家的商標。
?英特爾公司版權所有
??[1]?? 如欲了解更多性能測試詳情,請訪問https://github.com/alibaba/DeepRec/tree/main/modelzoo/WDL
??[2]?? 如欲了解更多性能測試詳情,請訪問https://help.aliyun.com/document_detail/25378.html?spm=5176.2020520101.0.0.787c4df5FgibRE#re7p