欧美色欧美亚洲高清在线视频-欧美色碰碰碰免费观看长视频-欧美色频-欧美色视频超清在线观看-国产精品免费看久久久-国产精品免费看久久久久

首頁 > 技術 > 正文

世界時訊:NVIDIA助力DeepRec為vivo推薦業務實現高性能GPU推理優化

2023-01-21 06:58:54來源:中關村在線  

簡介


【資料圖】

· 本案例中,vivo人工智能推薦算法組自研的推薦服務平臺,使用阿里巴巴開源大規模稀疏模型訓練和預測引擎 DeepRec,在稀疏模型訓練(稀疏功能、I/O優化)和高性能推理框架層面,實現其搜廣推各類業務場景下,算法開發和上線的全鏈路優化。

· 其中,在GPU線上推理服務優化上,vivo使用DeepRec提供的Device Placement Optimization,以及NVIDIA CUDA multi-stream,MPS (Multi-Process Service) / Multi-context和NVIDIA GPU計算專家團隊在multi-stream基礎上開發的MergeStream功能,顯著提升了線上推理服務的GPU有效利用率。

客戶簡介及應用背景

vivo人工智能推薦算法組的業務包含了信息流、視頻、音樂、廣告等搜索/廣告/推薦各類業務,基本涵蓋了搜廣推各類型的業務。

為了支撐上述場景的算法開發上線,vivo自研了集特征數據、模型開發、模型推理等流程于一體的推薦服務平臺。通過成熟、規范的推薦組件及服務,該平臺為vivo內各推薦業務(廣告、信息流等)提供一站式的推薦解決方案,便于業務快速構建推薦服務及算法策略高效迭代。

圖片來源于vivo

vivo人工智能推薦算法組在深耕業務同時,在積極探索適用于搜索/廣告/推薦大規模性稀疏性算法訓練框架。分別探索了TensorNet/XDL/TFRA等框架及組件,這些框架組件在分布式、稀疏性功能上做了擴展,能夠彌補TensorFlow在搜索/廣告/推薦大規模性稀疏性場景不足,但是在通用性、易用性以及功能特點上,這些框架存在各種不足。

作為DeepRec最早的一批社區用戶,vivo在DeepRec還是內部項目時,就與DeepRec開發者保持密切的合作。經過一年積累與打磨,vivo見證了DeepRec從內部項目到開源再到后續多個release版本的發布。在合作中,DeepRec賦能vivo各個業務增長,vivo也作為DeepRec深度用戶,將業務中的需求以及使用中的問題積極回饋到DeepRec開源社區。

DeepRec(https://github.com/alibaba/DeepRec)是阿里巴巴集團提供的針對搜索、推薦、廣告場景模型的訓練/預測引擎,在分布式、圖優化、算子、Runtime等方面對稀疏模型進行了深度性能優化,提供了豐富的高維稀疏特征功能的支持。基于DeepRec進行模型迭代不僅能帶來更好的業務效果,同時在Training/Inference性能有明顯的性能提升。

圖片來源于阿里巴巴

通過業務實踐,在稀疏模型訓練層面,vivo使用DeepRec提供的基于Embedding Variable的動態Embedding功能和特征準入/淘汰功能,解決了使用TensorFlow原生EmbeddingLayer 的三個痛點,包括可拓展性差,hash沖突導致模型訓練有損,無法處理冗余的稀疏特征;并在內部嘗試對訓練數據存儲格式做I/O優化。

圖片來源于阿里巴巴

使用動態Embedding和特征準入/淘汰功能實現的收益如下:

1. 靜態Embedding升級到動態Embedding:使用 DeepRec 的動態 Embedding 替換 TensorFlow 的靜態 Embedding 后,保證所有特征 Embedding 無沖突,離線 AUC 提升 0.5%,線上點擊率提升 1.2%,同時模型體積縮小 20%。

2. ID 特征的利用:在使用 TensorFlow 時,vivo 嘗試過對 ID 特征進行 hash 處理輸入模型,實驗表明這種操作對比基線具有負收益。這是由于 ID 特征過于稀疏,同時 ID 具有唯一指示性,hash 處理會帶來大量的 Embedding 沖突。基于動態 Embedding,使用 ID 特征離線 AUC 提升0.4%,線上點擊率提升 0.6%。同時配合 global step 特征淘汰,離線 AUC 提升 0.1%,線上點擊率提升 0.5%。

Embedding Variable流程示意圖,圖片來源于阿里巴巴

在I/O優化上,目前vivo內部使用的是TFRecord數據格式存儲訓練數據,存在占用存儲空間大,非明文存儲的兩個缺陷。而DeepRec的Parquet是一種列式存儲的數據格式,能夠節省存儲資源,加快數據讀取速度。使用ParquetDataset 支持讀取Parquet文件,開箱即用,無需額外安裝第三庫,使用簡單方便。同時,ParquetDataset 能夠加快數據讀取速度,提高模型訓練的I/O性能。

vivo內部嘗試使用Parquet Dataset來替換現有TFRecord,提高訓練速度30%,減少樣本存儲成本38%,降低帶寬成本。同時,vivo內部支持hive查詢Parquet文件,算法工程師能夠高效快捷地分析樣本數據。

在高性能推理框架層面,由于在業務逐漸發展過程中,廣告召回量增長3.5倍,同時目標預估數增加兩倍,推理計算復雜度增加,超時率超過5%,嚴重影響線上服務可用性以及業務指標。因此,vivo嘗試探索升級改造現有推理服務,保證業務可持續發展。vivo借助DeepRec開源的諸多推理優化功能,在CPU推理改造以及GPU推理升級方面進行探索,并取得一定收益。

客戶挑戰

在CPU推理優化層面,vivo在使用DeepRec提供的基于ShareNothing架構的SessionGroup后,明顯緩解了直接使用TensorFlow的C++接口調用Session::Run而導致的CPU使用率低的問題,在保證latency的前提下極大提高了QPS,單機QPS提升高達80%,單機CPU利用率提升75%。

但是經過SessionGroup的優化,雖然CPU推理性能得到改善,超時率依舊無法得到緩解。鑒于多目標模型目標塔數較多、模型中使用Attention、LayerNorm、GateNet等復雜結構、特征多,存在大量稀疏特征三點原因,vivo嘗試探索GPU推理來優化線上性能。

應用方案

DevicePlacement Optimization:

通常,對于稀疏特征的處理一般是將其Embedding化,由于模型中存在大量的稀疏特征,因此vivo的廣告模型使用大量的Embedding算子。從推理的timeline可以看出,Embedding算子分散在timeline的各個階段,導致大量的GPUkernel launch 以及數據拷貝,因此圖計算非常耗時。

圖片來源于阿里巴巴

DevicePlacement Optimization 完全將EmbeddingLayer placed 到CPU上,解決了Embeddinglayer 內部存在的CPU和GPU之間大量數據拷貝的問題。

圖片來源于阿里巴巴

Device Placement Optimization性能優化明顯,CPU算子(主要是Embedding Layer)的計算集中在timeline的最開端,之后GPU主要負責網絡層的計算。相較于CPU推理,Device Placement Optimization P99 降低35%。

NVIDIA CUDA Multi-Stream 功能:

在推理過程中,vivo發現單流執行導致GPU的利用率不高,無法充分挖掘GPU算力。DeepRec支持用戶使用multi-stream功能,多stream并發計算,提升GPU利用率。多線程并發launch kernel 時,存在較大的鎖開銷,極大影響了kernel launch 的效率,這里的鎖與CUDA Driver中的Context相關。因此可以通過使用MPS/Multi-context來避免launch過程中鎖開銷,從而進一步提升GPU的有效利用率。

圖片來源于阿里巴巴

此外,模型中存在大量的H2D以及D2H的數據拷貝,在原生代碼中,計算stream和拷貝stream是獨立的,這會導致stream之間存在大量同步開銷,同時對于在Recv算子之后的計算算子,必須等到MemCopy完成之后才能被launch執行,MemCopy和launch難以overlap執行。基于以上問題,NVIDIAGPU 計算專家團隊在multi-stream功能基礎上進一步優化,開發了MergeStream功能,允許MemCopy和計算使用相同的stream,從而減少上述的同步開銷以及允許Recv之后計算算子launch開銷被overlap。

圖片來源于阿里巴巴

vivo在線上推理服務中使用了multi-stream功能,P99降低18%。更進一步地,在使用MergeStream功能后,P99降低11%。

編譯優化– BladeDISC:

Blade DISC(https://github.com/alibaba/BladeDISC)是阿里集團自主研發的、原生支持存在動態尺寸模型的深度學習編譯器。DeepRec中集成了 Blade DISC,通過使用Blade DISC內置的aStitch大尺度算子融合技術對于存在較多訪存密集型算子的模型有顯著的效果。利用Blade DISC對模型進行編譯優化,推理性能得到大幅度提升。

Blade DISC將大量訪存密集型算子編譯成一個大的融合算子,可以大大減少框架調度和kernellaunch的開銷。區別于其他深度學習編譯器的是,Blade DISC還會通過優化GPU不同層次存儲(特別是SharedMemory)的使用來提升了訪存操作和Op間數據交換的性能。圖中可以看到,綠色是Blade DISC優化合并的算子替代了原圖中大量的算子。

圖片來源于阿里巴巴

圖片來源于阿里巴巴

另外,由于線上模型比較復雜,為了進一步減少編譯耗時、提升部署效率,vivo啟用了Blade DISC的編譯緩存功能。開啟此功能時,Blade DISC僅會在新舊版本模型的Graph結構發生改變時觸發編譯,如果新舊模型僅有權重變更則復用之前的編譯結果。經過驗證,編譯緩存在保證正確性的同時,幾乎掩蓋了編譯模型的開銷,模型更新速度與之前幾乎相同。在使用Blade DISC功能后,線上服務P99降低21%。

使用效果及影響

DeepRec提供大量的解決方案可以幫助用戶快速實施GPU推理。經過一系列優化,相較于CPU推理,GPU推理P99降低50%,GPU利用率平均在60%以上。此外,線上一張NVIDIA T4 Tensor Core GPU 的推理性能超過兩臺Xeon 6330 112Core 的CPU機器,節省了大量的機器資源。

基于CPU的分布式異步訓練存在兩個問題:一是異步訓練會損失訓練精度,模型難以收斂到最佳;二是隨著模型結構逐漸復雜,訓練性能會急劇下降。未來,vivo打算嘗試基于GPU的同步訓練來加速復雜模型訓練。DeepRec支持兩種GPU同步框架:NVIDIA Merlin Sparse Operation Kit (SOK) 和Hybrid Backend。后續vivo將嘗試這兩種GPU同步訓練來加速模型訓練。

NVIDIA計算專家團隊也與DeepRec技術團隊深入合作,為在稀疏功能層面的Embedding Variable GPU 支持、在同步訓練層面的Merlin SOK 集成,以及圖優化層面的Embedding子圖Fusion功能開發提供技術支持。

Embedding Variable GPU 支持介紹:

DeepRec設計并提供了一套支持動態Embedding語義的Embedding Variable,在特征無損訓練的同時以最經濟的方式使用內存資源,使得超大規模特征的模型更容易增量上線。?進一步地,因為GPU具有強大的并行計算能力,對于Embedding Variable底層的HashTable 查找、插入等操作也具有明顯的加速作用。同時,對于模型計算部分若使用GPU,則使用GPU上的EmbeddingVariable 也可避免Host和Device上的數據拷貝,提高整體性能。因此增加了Embedding Variable 的GPU支持。

GPU版本的Embedding Variable通過NVIDIA cuCollection 作為底層Hash Table的實現,可以明顯加速Embedding相關的操作,而且使用方便,在具有NVIDIA GPU的環境中會自動啟用,也可以手動放置在合適的GPU設備上。性能測試顯示GPU版本相比于CPU版本,Embedding部分會有2倍以上的加速。

分布式訓練集成Merlin SOK介紹:

DeepMerlin SOK 是NVIDIA Merlin團隊基于Merlin SOK提供的針對神經網絡中稀疏操作的加速插件庫,使用DeepMerlin SOK 可對DeepRec中相關的Embedding操作進行加速和分布式訓練的支持。

該SOK的設計理念就是希望同時兼容靈活性和高性能。在靈活性方面,使用SOK不會對用戶使用 DeepRec本身的功能有影響,可以和DeepRec提供的Embedding Variable 完全兼容,也會集成到 DeepRec的高級接口方便用戶的使用。在高性能方面,SOK主要從兩方面去考慮,一方面,在算法設計上,通過reduce操作來減少搬運的數據量,另一方面,在實現上,主要通過算子融合技術,融合多表的查詢和通信,提供稀疏操作的性能。性能測試顯示SOK能夠提供接近于線性的擴展能力,在8 GPU下相比1 GPU能夠達到6.5倍的加速效果。

Embedding子圖Fusion功能介紹:

DeepRec及TensorFlow原生的embedding lookup 相關API,如safe_embedding_lookup_sparse,會創建比較多細碎的算子,且部分算子只有CPU實現。因此在GPU上執行時容易出現kernel launch bound 的問題以及額外H2D& D2H 拷貝,造成低GPU利用率,降低執行速度。

針對此場景,NVIDIA計算專家團隊與DeepRec合作,共同定制開發了支持在NVIDIA GPU上執行的Embedding子圖Fusion功能,并對GPU高算力高吞吐的特點進行了針對性優化:提供一組接口以及相關Fusion算子,通過算子融合,減少需要launch的kernel數量,優化訪存,提供高性能的實現,達到加速執行的目的。

Embedding Fusion 功能易用,從Python層面提供接口及開關,用戶無需修改代碼即可快速使用。加速效果方面,單獨從Embedding模塊看,GPU Embedding Fusion 可以提供2倍左右的加速。從整體模型來看,加速效果取決于Embedding模塊的耗時占比。在幾個測試模型上,此功能可以提供1.2倍左右的整體性能加速。

英偉達(NVIDIA) Tesla T4 A40 V100 A100 H100 A800顯卡GPU Quadro GV100 32G

[經銷商]京東商城

[產品售價]¥69999元

進入購買

英偉達(NVIDIA)GeForce RTX4090 公版顯卡 深度學習AI高性能計算GPU新架構 NVIDIA RTX4080 16G 公版

[經銷商]京東商城

[產品售價]¥11999元

進入購買

標簽:

相關閱讀

精彩推薦

相關詞

推薦閱讀

主站蜘蛛池模板: 一一本大道香蕉大 | 亚洲精品午夜 | 欧美性天天影院欧美狂野 | 欧洲在线观看在线视频吗 | 99热精品国产麻豆 | 日韩国产成人精品视频 | 欧美综合另类 | 亚洲香蕉一区二区三区在线观看 | 国产乱插| jizz精品| 欧美一区二区三区视视频 | 激情综合五月 | 免费永久在线观看污污的网站 | 在线观看成年人免费视频 | 日韩新片在线观看网 | 国产黄色a| 天天插在线视频 | 视频一区国产精品 | 日韩理论在线观看 | 五月丁香啪啪 | 亚洲经典激情春色另类 | 日韩中文字幕免费 | 日本欧美视频在线 | 色中色欧美 | 91精品国产91久久久久青草 | 羞羞的视频在线免费观看 | 德国最新精品性hd | 成人免费体验区福利云点播 | 欧美日韩影院 | 日韩欧美一区二区三区在线观看 | 韩国在线观看免费观看影院 | 亚洲 欧美 日韩 综合 | haose08永久免费视频 | 一个人在线视频免费观看www | www.伊人| 免费日韩视频 | 中文字幕亚洲综合久久202 | 日韩高清免费在线观看 | 国产日产在线观看 | 在线视频a | 三级网站在线 |