国产美女被遭强高潮开双腿_国产亚洲日产在线_国产黄片_青椒国产98在线 _日韩精品亚洲AⅤ在线影院_人妻aⅴ中文字幕无码

英特爾AMX助力阿里云提升推薦模型性能

   2024-01-10 8179
核心提示:阿里云PAI團隊研發(fā)了PAI-REC全鏈路解決方案,幫助用戶以白盒化的方式快速構建推薦全鏈路的方案。
 背景

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

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

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

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

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

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

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

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

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

    

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

 

圖3.AMX架構和性能

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

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

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

混合精度運算

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

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

 

圖4. BFloat16 浮點格式介紹

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

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

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

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

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

 

(a) 優(yōu)化前

(b) 優(yōu)化后

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

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

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

圖6. StringSplit優(yōu)化

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

業(yè)務落地效果

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

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

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

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

展望

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

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

 
分享到: 0
收藏 0
 
更多>同類資訊
免責申明
推薦資訊
點擊排行
最新資訊更多>
最新供應更多>
網站首頁  |  聯(lián)系方式  |  關于我們  |  問題解析  |  版權隱私  |  使用協(xié)議  |  網站地圖  |  排名推廣  |  廣告服務  |  積分換禮  |  網站留言  |  RSS訂閱  |  違規(guī)舉報  |  粵ICP備1207862號

中國智能化網(zgznh®)--引領工業(yè)智能化產業(yè)發(fā)展 共享智能化+優(yōu)質平臺

版權所有:深圳市智控網絡有限公司 學術指導:深圳市智能化學會

粵ICP備12078626號

深公網安備案證字第 4403101901094 號 | 粵公網安備 44030702001206號