0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用NVIDIA組件提升GPU推理的吞吐

NVIDIA英偉達(dá)企業(yè)解決方案 ? 來源:NVIDIA英偉達(dá)企業(yè)解決方案 ? 2024-04-20 09:39 ? 次閱讀

利用NVIDIA 組件提升GPU推理的吞吐

本實(shí)踐中,唯品會(huì) AI 平臺與 NVIDIA 團(tuán)隊(duì)合作,結(jié)合 NVIDIA TensorRTNVIDIA Merlin HierarchicalKV(HKV)將推理的稠密網(wǎng)絡(luò)和熱 Embedding 全置于 GPU 上進(jìn)行加速,吞吐相比 CPU 推理服務(wù)提升高于 3 倍。

應(yīng)對GPU推理上的難題

唯品會(huì)(NYSE: VIPS)成立于 2008 年 8 月,總部設(shè)在中國廣州,旗下網(wǎng)站于同年 12 月 8 日上線。唯品會(huì)主營業(yè)務(wù)為互聯(lián)網(wǎng)在線銷售品牌折扣商品,涵蓋名品服飾鞋包、美妝、母嬰、居家、生活等全品類。

唯品會(huì) AI 平臺服務(wù)于公司搜索、推薦、廣告等業(yè)務(wù)團(tuán)隊(duì),提供公司級一站式服務(wù)平臺。搜索、推薦、廣告等業(yè)務(wù)旨在通過算法模型迭代,不斷優(yōu)化用戶購買體驗(yàn),從而提升點(diǎn)擊率和轉(zhuǎn)化率等業(yè)務(wù)指標(biāo),最終實(shí)現(xiàn)公司銷售業(yè)績增長。

在使用 GPU 打開推理算力天花板過程中,遇到了如下問題:

稠密網(wǎng)絡(luò),如何獲取更好的 GPU 推理性能;

Embedding table 如何使用 GPU 加速查詢。

為了解決上面的問題,我們選擇使用了 NVIDIA TensorRT 和 Merlin HierarchicalKV。具體原因如下:

稠密網(wǎng)絡(luò)使用 TensorRT 推理,通過 TensorRT 和自研 Plugin 方式獲取更好的推理性能;

HierarchicalKV 是一個(gè)高性能 GPU Table 實(shí)現(xiàn),我們將熱 Embedding 緩存在 GPU 中,冷 Embedding 則通過內(nèi)存和分布式 KV 存儲,加速查表過程。

GPU推理服務(wù)設(shè)計(jì)方案

AI 平臺支持搜索、推薦、廣告等所有算法業(yè)務(wù),提供大規(guī)模分布式訓(xùn)練、推理、實(shí)時(shí)模型等基礎(chǔ)引擎平臺,打造屬于唯品會(huì)自己的 AI 基礎(chǔ)能力引擎。

2e0d15c2-fe53-11ee-a297-92fbcf53809c.png

圖 1. GPU 推理服務(wù)工作流程圖

如上圖所示,支持 GPU 推理服務(wù),可以分為如下幾步:

TensorPS(自研訓(xùn)練框架)

支持離線和實(shí)時(shí)訓(xùn)練;

離線訓(xùn)練:生成天級全量模型,完成后同步給 Odin;

實(shí)時(shí)訓(xùn)練:生成小時(shí)級別的全量模型和分鐘級別的增量模型,完成后同步給 Odin;

2. Odin(模型協(xié)調(diào)者)

(離線/實(shí)時(shí))單機(jī)模型的全量模型:觸發(fā) TensorRT Converter;

(離線/實(shí)時(shí))分布式模型的全量模型:同時(shí)觸發(fā) TensorRT Converter 和 Reshard;

(離線/實(shí)時(shí))單機(jī)/分布式模型的增量模型:觸發(fā) TensorRT Converter;

3. TensorRTConverter(模型轉(zhuǎn)換器

將 Dense 網(wǎng)絡(luò)轉(zhuǎn)換成 TensorRT Engine;

轉(zhuǎn)化完成,如果是全量模型,向模型管理 API 匯報(bào)全量版本;如果是增量模型,向模型管理 API 匯報(bào)增量版本;

4. Reshard(參數(shù)分片模塊)

對模型參數(shù)分片后,向模型管理 API 匯報(bào)版本;

分片后參數(shù),同步到分布式在線參數(shù)服務(wù) Atreus;

5. Thor(自研推理服務(wù))

單機(jī)模型:通過模型管理 API 獲取全量模型版本,拉取模型并啟動(dòng)推理服務(wù) Thor;

分布式模型:需要部署分布式參數(shù)服務(wù) Atreus 和推理服務(wù) Thor;

如果開啟了實(shí)時(shí)模型特性,Thor 會(huì)定時(shí)通過模型管理 API 獲取增量版本,拉取并更新增量模型;

6. Atreus(自研分布式在線參數(shù)服務(wù))

僅用于分布式模型,可支持 TB 級參數(shù);

如果開啟了實(shí)時(shí)模型特性,Atreus 會(huì)定時(shí)通過模型管理 API 獲取增量版本,拉取并更新增量參數(shù)。

GPU模型推理

2e226206-fe53-11ee-a297-92fbcf53809c.png

圖 2. 前向計(jì)算流程圖

如上圖所示,前向計(jì)算可以分為如下幾步:

H2D 拷貝(CPU -> GPU);

Embedding 層,使用 GPU Table lookup(GPU);

Dense 層,使用 TensorRT +自研 Plugin 推理(GPU);

D2H 拷貝(GPU -> CPU)。

稠密網(wǎng)絡(luò)使用TensorRT在GPU上計(jì)算

2e2c1652-fe53-11ee-a297-92fbcf53809c.png

圖 3. 稠密網(wǎng)絡(luò) TensorRT 推理優(yōu)化

如上圖所示:

稠密網(wǎng)絡(luò)使用 TensorRT 推理,結(jié)合自定義 Plugin 實(shí)現(xiàn)推理性能優(yōu)化。

利用HierarchicalKV實(shí)現(xiàn)GPUTablelookup

2e435862-fe53-11ee-a297-92fbcf53809c.png

圖 4. 基于 HierarchicalKV 的 GPU Table

如上圖所示,查表過程可以分為如下幾步:

將 keys 拷貝到 GPU;

將 keys concat 成一個(gè)大的 merged keys,減少后續(xù)查表次數(shù);

merged keys 查 GPU Table,輸出 merged values,并輸出未命中 missed keys 和 missed indices;

拷貝 missed keys 到 CPU;

查詢 Atreus(分布式參數(shù)服務(wù)器),獲取 missed values;

missed values 拷貝到 GPU;

將 missed values 更新到 merged values;

將 merged values 輸出 Split 成多個(gè) Tensor(和 keys 一一對應(yīng));

對 missed keys 進(jìn)行去重;

去重之后,異步更新 GPU Table。

TensorRTConverter實(shí)現(xiàn)GPU模型轉(zhuǎn)換

2ead3fca-fe53-11ee-a297-92fbcf53809c.png

圖 5. TensorRT Converter 轉(zhuǎn)換流程

如上圖所示,TensorRT Converter 可以分為如下幾步:

Freeze CPU 模型;

切分模型 Graph 成 Sparse 和 Dense 兩個(gè)子圖,Sparse 圖在 GPU 上執(zhí)行,Dense 圖經(jīng)過圖優(yōu)化后使用 TensorRT 推理;

Dense 圖轉(zhuǎn)化成 ONNX 模型;

優(yōu)化 ONNX 模型,把圖中 OP 替換成自定義的高性能 TensorRT Plugin;

轉(zhuǎn)換 ONNX 模型成 TensorRT Engine;

合并 Sparse 圖和 TensorRT Engine 生成 GPU 模型。

自研CUDAKernel,提高性能

GPUTable加速查表

基于 HierarchicalKV 增強(qiáng)了 find 接口,支持獲取未命中 keys indices 等信息,在高命中率情況下有更好的性能,并貢獻(xiàn)給社區(qū):

void find(const size_type n, 
      const key_type* keys,           // (n)
      value_type* values,            // (n, DIM)
      key_type* missed_keys,          // (n)
      int* missed_indices,           // (n)
      int* missed_size,             // scalar
      score_type* scores = nullptr,       // (n)
      cudaStream_t stream = 0) const

2. GPU支持CSR(Compressedsparserow)格式的序列特征

根據(jù)統(tǒng)計(jì),序列特征有 85%+的數(shù)據(jù)都是填充值,使用 CSR 格式壓縮序列特征可以大幅度減小序列特征大小??紤]到搜推序列數(shù)據(jù)的特殊性(填充值都在序列尾部),這里僅使用 value 和 offset 兩個(gè)序列表示原始稀疏矩陣,如下圖:

2ed09934-fe53-11ee-a297-92fbcf53809c.png

圖 6. CSR 的稀疏矩陣

通過 Fusion 的方式,減少 Lookup 過程 CUDA Kernel 數(shù)量,提升推理性能。

2ed9d26a-fe53-11ee-a297-92fbcf53809c.png

圖 7. Lookup 過程優(yōu)化對比

優(yōu)化前:N 個(gè)輸入對應(yīng) N 個(gè) Lookup CUDA Kernel;

優(yōu)化后:通過提前合并,將 CUDA Kernel 數(shù)量減少為 3 個(gè)(Concat、Lookup 和 Split)。

通過 Fusion 的方式,減少 CSR 處理過程 CUDA Kernel 數(shù)量,提升推理性能,下圖以 ReduceSum 舉例。

2eea9b90-fe53-11ee-a297-92fbcf53809c.png

圖 8. CSR 處理優(yōu)化流程

優(yōu)化前:N 對輸入對應(yīng) N 個(gè) ReduceSum CUDA Kernel;

優(yōu)化后:通過提前合并,將 CUDA Kernel 數(shù)量減少為 4 個(gè)(2 個(gè) Concat,1 個(gè) ReduceSum 和 1 個(gè) Split)。

3.H2D,合并CPU->GPU內(nèi)存拷貝

搜推模型中有較多的特征輸入,GPU 推理中需要將這些 Tensor 從 CPU 拷貝到 GPU,頻繁小內(nèi)存的 cudaMemcpy 會(huì)導(dǎo)致性能下降,最佳實(shí)踐是將這些 Tensor 打包在一塊連續(xù)內(nèi)存中,將整個(gè)大內(nèi)存 H2D 拷貝到 GPU。

4.Tile算子融合

搜推模型中有超過 200個(gè) Tile,大量的 Kernel Launch 會(huì)帶來 GPU 推理性能惡化,最佳實(shí)踐是進(jìn)行 Kernel Fusion,在一個(gè)大的算子中執(zhí)行多個(gè)小 Kernel,從而充分發(fā)揮 GPU 的并發(fā)優(yōu)勢。

持續(xù)在搜推廣場景中GPU加速

唯品會(huì) AI 平臺一直追求性能上的極致,未來將會(huì)持續(xù)與 NVIDIA 技術(shù)團(tuán)隊(duì)合作,繼續(xù)探索使用 HierarchicalKV 在訓(xùn)練超大型模型上的 GPU 性能優(yōu)化,在提升 GPU 性能方面進(jìn)行不斷地探索和實(shí)踐,也會(huì)對 Generative Recommenders 進(jìn)行探索和實(shí)踐。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5160

    瀏覽量

    104886
  • CSR
    CSR
    +關(guān)注

    關(guān)注

    3

    文章

    118

    瀏覽量

    69900
  • GPU芯片
    +關(guān)注

    關(guān)注

    1

    文章

    304

    瀏覽量

    6023

原文標(biāo)題:利用 NVIDIA Merlin HierarchicalKV 實(shí)現(xiàn)唯品會(huì)在搜推廣場景中的 GPU 推理實(shí)踐

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    NVIDIA-SMI:監(jiān)控GPU的絕佳起點(diǎn)

    nvidia-smi可執(zhí)行文件位于虛擬機(jī)管理程序上。如果在同一部署中您選擇在GPU上使用作為傳遞,那么GPU正在尋找訪客上的NVIDIA驅(qū)動(dòng)程序,因此
    發(fā)表于 09-04 15:18

    NVIDIA 在首個(gè)AI推理基準(zhǔn)測試中大放異彩

    和TensorRT軟件的成熟程度。它們讓用戶能夠更加輕松地將所有的NVIDIA GPU應(yīng)用于數(shù)據(jù)中心、邊緣等領(lǐng)域。MLPerf定義了五項(xiàng)推理基準(zhǔn),涵蓋了三個(gè)現(xiàn)有的人工智能應(yīng)用:圖像分類、目標(biāo)檢測和翻譯。每項(xiàng)基準(zhǔn)
    發(fā)表于 11-08 19:44

    Nvidia GPU風(fēng)扇和電源顯示ERR怎么解決

    問題最近在Ubuntu上使用Nvidia GPU訓(xùn)練模型的時(shí)候,如果機(jī)器鎖屏一段時(shí)間再打開的時(shí)候鼠標(biāo)非??D,或者說顯示界面非??D,使用nvidia-smi查看發(fā)現(xiàn),訓(xùn)練模型的GPU
    發(fā)表于 12-30 06:44

    在Ubuntu上使用Nvidia GPU訓(xùn)練模型

    問題最近在Ubuntu上使用Nvidia GPU訓(xùn)練模型的時(shí)候,沒有問題,過一會(huì)再訓(xùn)練出現(xiàn)非??D,使用nvidia-smi查看發(fā)現(xiàn),顯示GPU的風(fēng)扇和電源報(bào)錯(cuò):解決方案自動(dòng)風(fēng)扇控制在
    發(fā)表于 01-03 08:24

    充分利用Arm NN進(jìn)行GPU推理

    Arm擁有跨所有處理器的計(jì)算IP。而且,無論您要在GPU,CPU還是NPU上進(jìn)行ML推理,都可以在一個(gè)通用框架下使用它們:Arm NN。Arm NN是適用于CPU,GPU和NPU的開源推理
    發(fā)表于 04-11 17:33

    NVIDIA宣布其AI推理平臺的重大更新

    軟件的新功能,該軟件為所有AI模型和框架提供跨平臺推理;同時(shí)也包含對NVIDIA TensorRT的更新,該軟件優(yōu)化AI模型并為NVIDIA GPU上的高性能
    的頭像 發(fā)表于 11-12 14:42 ?2068次閱讀

    NVIDIA Triton推理服務(wù)器簡化人工智能推理

    GKE 的 Triton 推理服務(wù)器應(yīng)用程序是一個(gè) helm chart 部署程序,可自動(dòng)安裝和配置 Triton ,以便在具有 NVIDIA GPU 節(jié)點(diǎn)池的 GKE 集群上使用,包括
    的頭像 發(fā)表于 04-08 16:43 ?2345次閱讀
    <b class='flag-5'>NVIDIA</b> Triton<b class='flag-5'>推理</b>服務(wù)器簡化人工智能<b class='flag-5'>推理</b>

    使用NVIDIA GPU助力美團(tuán)CTR預(yù)測服務(wù)升級

      通過 NVIDIA T4 深度優(yōu)化方案,成功為美團(tuán) CTR 模型創(chuàng)造更多應(yīng)用機(jī)會(huì),不僅極大地提升了系統(tǒng)吞吐量,更進(jìn)一步地提升了整個(gè)模型訓(xùn)練的速度與降低訓(xùn)練成本,落實(shí) AI 框架在
    的頭像 發(fā)表于 04-13 15:15 ?885次閱讀

    利用NVIDIA Triton推理服務(wù)器加速語音識別的速度

    網(wǎng)易互娛 AI Lab 的研發(fā)人員,基于 Wenet 語音識別工具進(jìn)行優(yōu)化和創(chuàng)新,利用 NVIDIA Triton 推理服務(wù)器的 GPU Batch Inference 機(jī)制加速了語音
    的頭像 發(fā)表于 05-13 10:40 ?2169次閱讀

    NVIDIA Triton助力騰訊PCG加速在線推理

      借助NVIDIA Triton 推理框架,配合 DALI/FIL/Python 等Backend,以及 TensorRT,整體推理服務(wù)的吞吐能力最大
    的頭像 發(fā)表于 05-20 15:25 ?2432次閱讀
    <b class='flag-5'>NVIDIA</b> Triton助力騰訊PCG加速在線<b class='flag-5'>推理</b>

    NVIDIA助力阿里巴巴天貓精靈大幅提升服務(wù)運(yùn)行效率

    NVIDIA Triton 推理服務(wù)器在 NVIDIA T4 GPU 上進(jìn)行高效部署,幫助阿里巴巴天貓精靈流式 TTS 服務(wù)將吞吐
    的頭像 發(fā)表于 07-14 10:05 ?1239次閱讀

    騰訊云TI平臺利用NVIDIA Triton推理服務(wù)器構(gòu)造不同AI應(yīng)用場景需求

    騰訊云 TI 平臺 TI-ONE 利用 NVIDIA Triton 推理服務(wù)器構(gòu)造高性能推理服務(wù)部署平臺,使用戶能夠非常便捷地部署包括 TNN 模型在內(nèi)的多種深度學(xué)習(xí)框架下獲得的 AI
    的頭像 發(fā)表于 09-05 15:33 ?2145次閱讀

    螞蟻鏈AIoT團(tuán)隊(duì)與NVIDIA合作加速AI推理

    螞蟻鏈 AIoT 團(tuán)隊(duì)與 NVIDIA 合作,將量化感知訓(xùn)練(QAT)技術(shù)應(yīng)用于深度學(xué)習(xí)模型性能優(yōu)化中,并通過 NVIDIA TensorRT 高性能推理 SDK 進(jìn)行高效率部署, 通過 INT8
    的頭像 發(fā)表于 09-09 09:53 ?1289次閱讀

    NVIDIA GPU 加速 WPS Office AI 服務(wù),助力打造優(yōu)質(zhì)的用戶體驗(yàn)

    案例介紹 金山辦公與 NVIDIA 團(tuán)隊(duì)合作,通過 NVIDIA Tensor Core GPU、TensorRT 提升圖像文檔識別與理解的推理
    的頭像 發(fā)表于 06-29 21:35 ?835次閱讀
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>GPU</b> 加速 WPS Office AI 服務(wù),助力打造優(yōu)質(zhì)的用戶體驗(yàn)

    利用NVIDIA產(chǎn)品技術(shù)組合提升用戶體驗(yàn)

    本案例通過利用NVIDIA TensorRT-LLM加速指令識別深度學(xué)習(xí)模型,并借助NVIDIA Triton推理服務(wù)器在NVIDIA V1
    的頭像 發(fā)表于 01-17 09:30 ?846次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品