展會信息港展會大全

英特爾AMX助力阿里云提升推薦模型性能
來源:互聯(lián)網(wǎng)   發(fā)布日期:2024-01-10 16:45:03   瀏覽:7347次  

導(dǎo)讀:您現(xiàn)在的位置:首頁/IT互聯(lián)網(wǎng)/ 正文 英特爾AMX助力阿里云提升推薦模型性能 來源: 編輯: 時間:2024-01-10 背景 推薦系統(tǒng)在電商、短視頻、新聞、廣告等行業(yè)都有著廣泛的應(yīng)用。推薦系統(tǒng)能夠比較準確理解終端用戶的興趣,提升終端用戶的瀏覽體驗。典型的工業(yè)...

背景

推薦系統(tǒng)在電商、短視頻、新聞、廣告等行業(yè)都有著廣泛的應(yīng)用。推薦系統(tǒng)能夠比較準確理解終端用戶的興趣,提升終端用戶的瀏覽體驗。典型的工業(yè)界推薦系統(tǒng)一般采用多階段漏斗的方式,通常包括召回、粗排、精排、重排等階段,每個階段要處理的商品數(shù)量是依次遞減的,而對應(yīng)的模型的參數(shù)量和計算復(fù)雜度通常是依次遞增的。隨著深度學(xué)習(xí)的發(fā)展,現(xiàn)在主流的推薦系統(tǒng)都是用深度學(xué)習(xí)模型來預(yù)估用戶對于不同商品的偏好。深度學(xué)習(xí)大幅度提升了模型預(yù)估的準確度,并且能夠支持多任務(wù)多場景的聯(lián)合建模。但隨之帶來的問題是模型參數(shù)量和計算復(fù)雜度的大幅度增加,這給模型訓(xùn)練和在線推理服務(wù)都帶來了巨大的挑戰(zhàn)。為了提升模型的準確度,推薦模型通常需要在千億規(guī)模的樣本和特征上進行訓(xùn)練。即便采用分布式訓(xùn)練,訓(xùn)練一個推薦排序模型也要持續(xù)數(shù)天的時間。這給算法工程師探索和優(yōu)化模型結(jié)構(gòu)帶來了巨大的壓力。在線推理服務(wù)通常需要在有限的時間內(nèi)返回結(jié)果(<500ms),而現(xiàn)代推薦模型的巨大參數(shù)量和復(fù)雜的模型結(jié)構(gòu)需要的計算量通常難以滿足這樣要求。

為了解決這些挑戰(zhàn),幫助用戶更好的落地深度學(xué)習(xí)推薦算法,阿里云PAI團隊研發(fā)了PAI-REC全鏈路解決方案,幫助用戶以白盒化的方式快速構(gòu)建推薦全鏈路的方案。如圖1所示,PAI-REC平臺包含了推薦全鏈路所需要的功能:特征構(gòu)建,模型訓(xùn)練,在線服務(wù)等。其中兩個關(guān)鍵的功能是模型訓(xùn)練和模型推理,分別由EasyRec推薦算法框架EasyRecProcessor提供。EasyRec推薦算法框架幫助用戶快速訓(xùn)練推薦模型,其中提供了業(yè)界廣泛使用的推薦算法模型,如DeepFM,DIN,DBMTL等,并支持通過組件化自定義模型的方式快速構(gòu)建新的模型結(jié)構(gòu),進一步還支持通過PAI-NNI-HPO做超參搜索。EasyRec算法框架的相關(guān)代碼已經(jīng)在github上開源。

圖1.PAI-REC推薦算法定制開發(fā)平臺

PAI-REC在線推理鏈路如圖2所示,其中EasyRecProcessor負責(zé)模型推理環(huán)節(jié)。EasyRecProcessor包含ItemFeatureCache,FeatureGenerator(特征交叉)和TFModelServing三個部分,并能夠從Kafka/OSS獲取模型的增量更新,從FeatureStore獲取特征的實時更新。

圖2.PAI-REC在線推理鏈路

為了提升推薦模型訓(xùn)練和在線推理的效率,我們聯(lián)合intel相關(guān)團隊結(jié)合硬件的特性做了深入的優(yōu)化,提升了模型訓(xùn)練的速度,同時提升了模型推理的QPS(每秒處理的請求次數(shù)),降低了模型推理的RT(響應(yīng)時間),CPU的利用率也大幅度提升[20%->60%]。下面介紹一下EasyRec里面用到的一些優(yōu)化方法。

AMX矩陣乘法優(yōu)化

深度學(xué)習(xí)推薦模型里面通常會用到MLP和Attention等一般涉及到比較多的矩陣乘法計算,屬于計算密集型,不僅影響算子內(nèi)部的計算效率,也影響了算子調(diào)度的效率。OneDNN和MKL針對矩陣運算做了深度優(yōu)化,提升了矩陣乘法的計算能力,但仍然受限于硬件的計算能力。為了進一步提升矩陣乘法的計算效率,可以選擇使用英特爾®第四代至強®可擴展處理器SapphireRapids(SPR)來處理推薦系統(tǒng)的訓(xùn)練和推理。該處理器通過創(chuàng)新架構(gòu)增加了每個時鐘周期的指令,支持8通道DDR5內(nèi)存,有效提升了內(nèi)存帶寬與速度,并通過PCIe5.0實現(xiàn)了更高的PCIe帶寬提升。該處理器不僅經(jīng)過了一系列微架構(gòu)的革新和技術(shù)規(guī)格的提升,還搭載了全新的AI加速引擎——英特爾®高級矩陣擴展(AMX)。

英特爾®AMX技術(shù)與上一代深度學(xué)習(xí)加速技術(shù)——向量神經(jīng)網(wǎng)絡(luò)指令VNNI及BF16相比,從一維向量演變?yōu)槎S矩陣,因此能夠充分利用計算資源,提高高速緩存的利用率,并且避免潛在的帶寬瓶頸。這種改進顯著提高了人工智能應(yīng)用程序每個時鐘周期的指令數(shù),為AI工作負載中的訓(xùn)練和推理提供了顯著的性能提升。

(a)AMX架構(gòu)圖 (b)單核單周期運算次數(shù)比較

 

圖3.AMX架構(gòu)和性能

圖3a展示了英特爾®AMX的架構(gòu),其中包括了兩個主要組成部分:(1)Tiles:由八個二維寄存器組成(命名為tmm0,tmm1,…,tmm7),每個寄存器的最大尺寸為16行,每行有512位,尺寸為1KiB。整個Tiles的大小為8KiB。

(2)TMUL:它是與Tile連接的加速引擎,可用于矩陣乘法計算執(zhí)行。

AMX支持INT8和BF16數(shù)據(jù)類型,用于AI工作負載中的矩陣乘法運算。如圖3b所示,第四代英特爾®至強®可擴展處理器可在單位計算周期內(nèi)可執(zhí)行1024次BF16運算,與第三代英特爾®至強®可擴展處理器執(zhí)行FP32運算的次數(shù)64次相比,有16倍的性能提升。

混合精度運算

BFloat16浮點格式是一種計算機內(nèi)存中占用16位的計算機數(shù)字格式。該格式是32位IEEE754單精度浮點格式(float32)的截斷(16位)版本。它保留了32位浮點數(shù)的近似動態(tài)范圍。BFloat16用于降低存儲需求,提高機器學(xué)習(xí)算法的計算速度。BFloat16是用于機器學(xué)習(xí)的自定義16位浮點格式,采用與IEEE754標準相似的布局,但對于指數(shù)和尾數(shù)字段進行了修改,由一個符號位、八個指數(shù)位和七個尾數(shù)位組成。相比之下,IEEE754標準的半精度浮點數(shù)(Float16)使用1位符號位,5位指數(shù)和10位尾數(shù)。IEEE754標準的單精度浮點數(shù)(Float32)使用1位符號位,8位指數(shù)和23位尾數(shù),因此BFloat16具有和Float32等效的動態(tài)范圍。

BFloat16相比Float16的主要優(yōu)勢在于其更大的動態(tài)范圍。由于具有更多的位數(shù)用于指數(shù)部分,BFloat16可以表示更大的數(shù)值范圍和更小的數(shù)值間隔。這使得它在深度學(xué)習(xí)中具有一定的優(yōu)勢,因為在訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)時,經(jīng)常需要處理廣泛的數(shù)值范圍。另一個優(yōu)勢在于能夠更快的與Float32進行相互轉(zhuǎn)換,轉(zhuǎn)換時只需要對最后16位進行填充或者移除即可實現(xiàn)快速轉(zhuǎn)換。

圖4.BFloat16浮點格式介紹

在該優(yōu)化方案中,在Embedding部分及矩陣乘部分,用戶可以選擇使用BFloat16來進行相應(yīng)的運算操作。經(jīng)過測試,使用BFloat16可以在不損失精度的情況下,減少一半的內(nèi)存。此外,使用框架原生的BFloat16到Float32的轉(zhuǎn)換效率很低,在使用了AVX的硬件指令加速后,可大幅提高其性能。進一步使用AMX可以提高BF16矩陣乘法的效率,使用AMX時處理器每個周期可以執(zhí)行1,024次BFloat16(16位浮點數(shù))操作。

算子融合和圖優(yōu)化

從圖優(yōu)化層面來看,算子融合通過將一系列算子融合成單個算子的方法,可有效提升性能。這是由于每個算子都需要一個Kernel啟動,有時啟動時間甚至?xí)葘嶋H的核心計算花費更多的時間。通過將一系列算子融合為一個單一的大算子,可以減少Kernel啟動的開銷。此外,算子融合還有助于提升CPUCache的命中率,降低中間數(shù)據(jù)讀取和寫入內(nèi)存的數(shù)據(jù)傳輸開銷。

推薦模型除了DNN部分之外,另一個主要的部分是embedding_lookup的計算.這個功能在Tensorflow提供的實現(xiàn)有很多個算子來實現(xiàn),包括Unique,Gather,Reshape,ExpandDims,SparseSegmentSum等等幾十個算子,如圖4所示,計算效率非常低。在EasyRec里面我們將這些功能融合到一個算子里面執(zhí)行,降低了算子調(diào)度的開銷。進一步我們使用AVX指令優(yōu)化embedding聚合(Combine)計算,提升向量加法和乘法的計算效率。

為了降低部署的復(fù)雜度,針對常見的Embedding模型,我們設(shè)計了模板匹配算法,自動尋找和匹配embedding_lookup的子圖,并將其替換成融合之后的算子,使得用戶現(xiàn)有模型,不需要經(jīng)過任何調(diào)整,就能直接享受性能的上提升。embedding_lookup的前一步通常是string_to_hashbucket,bucketize,string_to_number等操作,如果能匹配到相應(yīng)的OP,我們將其也融合到embedding_lookup的Op中,減少KernelLaunch的次數(shù)。優(yōu)化之后,主流的推薦模型OP數(shù)量一般會減少一半以上,RT通常能降低50%以上。

 

(a)優(yōu)化前

(b)優(yōu)化后

圖5.embedding_lookup子圖優(yōu)化案例

特征計算(FeatureGenerator)優(yōu)化

推薦模型效果優(yōu)化的一個關(guān)鍵的部分是關(guān)鍵特征的挖掘和構(gòu)造。受限于反饋和特征稀疏的問題,推薦場景通常需要設(shè)計一些泛化性比較強的特征來提升模型的效果。其中泛化性比較好的一類特征是顯示交叉特征,如LookupFeature,MatchFeature等。這類特征通過構(gòu)建一個u2i的映射,記錄用戶在不同item上的行為的統(tǒng)計信息,如用戶最近1小時在不同商品上的點擊次數(shù),在對應(yīng)的類目上的點擊次數(shù)等等。為了提高查找效率,這類信息在線通常以HashMap的形式存儲。離線存儲和傳輸考慮到數(shù)據(jù)分析和存儲的效率,通常以字符串格式存儲。從離線格式解析到HashMap的過程中字符串分割占用了比較多的計算量。為了加速字符串的解析,我們設(shè)計了一套新的StringSplit實現(xiàn),如下圖所示,通過AVX512向量化指令,批量處理輸入的字符串字符,匹配分隔符,從而達到加速字符串的分割的目的。優(yōu)化后的StringSplit實現(xiàn)實際測試速度是Tensorflow中原生的StringSplit實現(xiàn)速度的3倍。在讀取CSV格式的數(shù)據(jù)訓(xùn)練進行訓(xùn)練的過程中,也涉及到比較多的字符串解析的工作,使用優(yōu)化的StringSplitOp訓(xùn)練速度可以提升2倍以上。

圖6.StringSplit優(yōu)化

為了實現(xiàn)特征計算和embedding_lookup的overlap執(zhí)行,我們將特征計算的部分也封裝成了Tensorflow的算子(Operation)。模型部署時,EasyRecProcessor會根據(jù)特征配置自動構(gòu)造特征計算的子圖,并拼接到TFModel的graph里面,這個過程也是用戶無序感知的。整合到同一個圖里面之后,可以進一步開啟grappler,xla,trt等圖優(yōu)化操作對整個大圖做進一步的優(yōu)化。

業(yè)務(wù)落地效果

上述的優(yōu)化都已經(jīng)沉淀到EasyRec訓(xùn)練框架和推理框架EasyRecProcessor里面,并且在多個客戶場景落地,幫助用戶取得了顯著的性能提升:

1.某電商場景精排模型,約2000FeatureSlots,模型參數(shù)20G,使用EasyRecProcessor之后比原生的tf-servingqps提升了8倍,rt降低了70%;

2.某游戲場景精排模型,約500FeatureSlots,模型參數(shù)10G,使用EasyRecProcessor之后比原生的tf-servingqps提升了4倍;

3.某游戲場景精排模型,在訓(xùn)練時采用了AMX優(yōu)化,訓(xùn)練速度為優(yōu)化前的2倍。

展望

采用第四代英特爾®至強®可擴展處理器來優(yōu)化推薦系統(tǒng)性能,有助于降低部署專用加速器(如獨立顯卡)的成本,并更有效地控制推薦系統(tǒng)的總體擁有成本(TCO),從而使用戶受益。為了提升更多深度學(xué)習(xí)模型的端到端性能,英特爾和阿里云正積極合作,探索創(chuàng)新方式來優(yōu)化軟硬件集成,加速深度學(xué)習(xí)模型的性能,使更多的云上用戶獲得收益。

此外,值得關(guān)注的是,英特爾于近期推出了第五代英特爾®至強®可擴展處理器EmeraldRapids(EMR),該處理器同樣搭載內(nèi)置AI加速引擎AMX,相比上一代SPR提供多達3倍的LLC,單CPU支持8通道5600MT/sDDR5。在2023年阿里云云棲大會上,阿里云ECS宣布第八代實例g8i的算力再升級,從SPR升級到EMR之后AI性能和整體性能均有顯著提升。

 

 

 

贊助本站

人工智能實驗室
AiLab云推薦
推薦內(nèi)容
展開

熱門欄目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能實驗室 版權(quán)所有    關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 公司動態(tài) | 免責(zé)聲明 | 隱私條款 | 工作機會 | 展會港