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