案例簡介
本案例中,阿里巴巴本地生活場景中,部署了大量使用 TensorFlow 的深度學習推薦模型,這些模型需要對每個用戶附近的數(shù)千家商戶和產(chǎn)品進行排名,對用戶響應時間和業(yè)務吞吐量(QPS)要求極高。為了滿足這樣的要求 GPU 落地使用是必然,但由于 TensorFlow 目前對 GPU 使用采用單一 steam 方式,并且逐個調(diào)用 GPU 算子的過程中存在大量的 GPU kernel 啟動開銷, 因此如何在這些系統(tǒng)中充分發(fā)揮 GPU 計算能力則需要探索。
阿里巴巴本地生活推薦系統(tǒng)結(jié)合 NVIDIA CUDA Graphs 對 GPU 進行算力釋放優(yōu)化,讓推理過程單機吞吐增長 110%,耗時 P99 下降 66.7%。
本案例主要應用到 NVIDIA V100 Tensor Core GPU 和 NVIDA CUDA Graphs。
客戶簡介及應用背景
阿里巴巴集團旗下的阿里巴巴本地生活服務公司,是由餓了么和口碑會師合并組成國內(nèi)領(lǐng)先的本地生活服務平臺,使命是“重新定義城市生活,讓生活更美好?!笨诒畬W⒌降晗M服務,餓了么專注到家生活服務,蜂鳥即配專注即時配送服務,客如云專注為商家提供數(shù)字化升級的產(chǎn)品和服務,共同推動本地生活市場的數(shù)字化,讓天下沒有難做的生意。
阿里巴巴本地生活服務公司智能推薦系統(tǒng)基于智能AI系統(tǒng)對用戶所在區(qū)域萬級商戶商品進行實時智能推薦和服務。實時智能推薦伴隨著深度學習技術(shù)的發(fā)展,為了追求智能推薦的準確度,推薦模型朝著兩個維度快速發(fā)展:1. 更寬更深的網(wǎng)絡(luò),更復雜的特征增強方式。2. 更多的不同維度的特征。這對在線推理階段的實時性能和算力提出了更高的挑戰(zhàn)。伴隨著搜索推薦模型的在 GPU 的廣泛落地使用,GPU 在各個場景下的算力優(yōu)化也被廣泛關(guān)注。
在線 Inference 過程中,由于考慮到存儲 cache 的友好性,會把計算密集型算子和其周邊的數(shù)據(jù)變換算子都在 GPU 中執(zhí)行,算子數(shù)量的增長會導致嚴重的 kernel 啟動開銷,主要原因是:1. 大量小 kernel 的執(zhí)行
2. TensorFlow 的調(diào)度機制使得通過大量的線程啟動 kernel 到同一個 stream 中;多個線程競爭同個資源加劇 launch 開銷。
客戶挑戰(zhàn)
在阿里巴巴本地生活推薦搜索場景中,有大量的深度學習模型在用戶和商戶,用戶和商品匹配場景中使用,但是總體來看 GPU-Utilization 并不高,GPU 使用成本顯得比較高。隨著模型復雜度不斷攀升(Inference 計算達到 10~20 GFLOPS),算法同學的收益產(chǎn)出一定程度上和模型復雜度成正比關(guān)系。目前搜推廣的模型設(shè)計中部分子結(jié)構(gòu)設(shè)計和變換很多,但是基本范式如下:
Feature Generation -》 Embedding -》 Attention/Transformer -》 MLP
綠色部分基本屬于計算密集型部分,但是在搜推廣場景中,這部分算子不但包含對于算力需求旺盛的深度網(wǎng)絡(luò)相關(guān)算子,也包含數(shù)據(jù)合并,數(shù)據(jù)變換等輕量級計算算子,這類算子的特點是:運算時長通常很短(1-10 微秒),而且這一類輕量級計算算子的數(shù)量伴隨著 Transformer 的落地,數(shù)量占比逐步增高。
我們從另一個角度來量化這一過程輕量級計算算子的數(shù)量占比,GPU 的繁忙情況通常來說有兩個指標:
1. GPU-Utilization,表示 GPU 在單位時間內(nèi)在執(zhí)行 kernel 的時間片比例。
2. SM Activity,表示 GPU 中 SM 在單位時間內(nèi)用于執(zhí)行 kernel 的 SM 使用比例*時間片比例。
我們可以看到在推薦搜索模型線上 Inference 過程中 SM Activity 通常遠遠低于 GPU-Utilization,這表示 GPU 雖然在忙碌,但是由于輕量級計算算子的數(shù)量占比較高,SM 使用比例使用比例不高,GPU 的實際 “工作量” 并不大。
輕量級計算算子的比例高會導致該部分算子在 CPU 上調(diào)度過程中 kernel launch 的執(zhí)行時長遠遠大于算子在 GPU 上的執(zhí)行時長,這個現(xiàn)象會導致嚴重的 kernel launch bound 現(xiàn)象。
應用方案
基于以上挑戰(zhàn),阿里巴巴本地生活搜索推薦模型選擇了 NVIDIA 提供的 AI 加速方案:CUDA Graphs。
1、首先,我們根據(jù)業(yè)務場景的具體問題,使用 NVIDIA Nsight Systems 進行問題定位和分析。我們利用 NVIDIA Nsight Systems 集成到線上 Inference 環(huán)境中,獲取了真實環(huán)境下 Inference 過程的 GPU Profing 文件。通過 Profing 文件,我們可以清晰的看到 Inference 過程中,kernel launch bound 現(xiàn)象異常嚴重,符合我們的分析預想(如下圖)。
2、后續(xù),我們采用集成 CUDA Graphs 進行模型 Inference 過程優(yōu)化,理論上 CUDA Graphs 會大幅緩解 kernel launch bound 現(xiàn)象,因為 CUDA Graphs 會合并 N 個 kernel 獨立的 launch 操作,變?yōu)?1 個 graph launch 操作,這樣 kernel launch 不再是整個推理的瓶頸(如下圖)。
使用效果及影響
經(jīng)過集成 NVIDIA Nsight System 進行 GPU 使用情況查看和細節(jié)問題的診斷,我們充分了解和分析了業(yè)務中對 GPU 的使用情況的 kernel 執(zhí)行流程。對性能進一步優(yōu)化起到了指導作用。后續(xù)集成 CUDA Graphs 后,符合預期效果。推薦深度學習模型在 Inference 過程中的耗時 P99 下降 66%,單機吞吐提升 110%。讓用戶在毫無感知的時間范圍內(nèi)完成了模型算力達到 10 GFLOPS 的 Inference 過程,用戶體驗得到了極大的提升。
在使用 NVIDIA Nsight Systems 進行 GPU 瓶頸分析過程中,文檔查閱和使用教程很方便上手,集成過程也較為方便,指標介紹很豐富,快速完成 GPU 使用情況分析。后續(xù) CUDA Graphs 使用過程中,相關(guān)文檔也比較完善,包括圖的切割和分裝,算子 Capture 標準等。
本次優(yōu)化過程,團隊內(nèi)部積累了一套較為完善的 GPU 優(yōu)化手段和優(yōu)化方法理論,后續(xù)遇到其他模型性能問題時也有的放矢。多場景進行優(yōu)化后,對整個 GPU。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4855瀏覽量
102711 -
gpu
+關(guān)注
關(guān)注
28文章
4673瀏覽量
128594 -
AI
+關(guān)注
關(guān)注
87文章
29815瀏覽量
268110
發(fā)布評論請先 登錄
相關(guān)推薦
評論