<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

NVIDIA英偉達企業解決方案 ? 來源:NVIDIA英偉達企業解決方案 ? 2024-04-20 09:39 ? 次閱讀

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

本實踐中,唯品會 AI 平臺與 NVIDIA 團隊合作,結合 NVIDIA TensorRTNVIDIA Merlin HierarchicalKV(HKV)將推理的稠密網絡和熱 Embedding 全置于 GPU 上進行加速,吞吐相比 CPU 推理服務提升高于 3 倍。

應對GPU推理上的難題

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

唯品會 AI 平臺服務于公司搜索、推薦、廣告等業務團隊,提供公司級一站式服務平臺。搜索、推薦、廣告等業務旨在通過算法模型迭代,不斷優化用戶購買體驗,從而提升點擊率和轉化率等業務指標,最終實現公司銷售業績增長。

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

稠密網絡,如何獲取更好的 GPU 推理性能;

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

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

稠密網絡使用 TensorRT 推理,通過 TensorRT 和自研 Plugin 方式獲取更好的推理性能;

HierarchicalKV 是一個高性能 GPU Table 實現,我們將熱 Embedding 緩存在 GPU 中,冷 Embedding 則通過內存和分布式 KV 存儲,加速查表過程。

GPU推理服務設計方案

AI 平臺支持搜索、推薦、廣告等所有算法業務,提供大規模分布式訓練、推理、實時模型等基礎引擎平臺,打造屬于唯品會自己的 AI 基礎能力引擎。

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

圖 1. GPU 推理服務工作流程圖

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

TensorPS(自研訓練框架)

支持離線和實時訓練;

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

實時訓練:生成小時級別的全量模型和分鐘級別的增量模型,完成后同步給 Odin;

2. Odin(模型協調者)

(離線/實時)單機模型的全量模型:觸發 TensorRT Converter;

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

(離線/實時)單機/分布式模型的增量模型:觸發 TensorRT Converter;

3. TensorRTConverter(模型轉換器

將 Dense 網絡轉換成 TensorRT Engine;

轉化完成,如果是全量模型,向模型管理 API 匯報全量版本;如果是增量模型,向模型管理 API 匯報增量版本;

4. Reshard(參數分片模塊)

對模型參數分片后,向模型管理 API 匯報版本;

分片后參數,同步到分布式在線參數服務 Atreus;

5. Thor(自研推理服務)

單機模型:通過模型管理 API 獲取全量模型版本,拉取模型并啟動推理服務 Thor;

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

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

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

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

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

GPU模型推理

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

圖 2. 前向計算流程圖

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

H2D 拷貝(CPU -> GPU);

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

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

D2H 拷貝(GPU -> CPU)。

稠密網絡使用TensorRT在GPU上計算

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

圖 3. 稠密網絡 TensorRT 推理優化

如上圖所示:

稠密網絡使用 TensorRT 推理,結合自定義 Plugin 實現推理性能優化。

利用HierarchicalKV實現GPUTablelookup

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

圖 4. 基于 HierarchicalKV 的 GPU Table

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

將 keys 拷貝到 GPU;

將 keys concat 成一個大的 merged keys,減少后續查表次數;

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

拷貝 missed keys 到 CPU;

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

missed values 拷貝到 GPU;

將 missed values 更新到 merged values;

將 merged values 輸出 Split 成多個 Tensor(和 keys 一一對應);

對 missed keys 進行去重;

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

TensorRTConverter實現GPU模型轉換

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

圖 5. TensorRT Converter 轉換流程

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

Freeze CPU 模型;

切分模型 Graph 成 Sparse 和 Dense 兩個子圖,Sparse 圖在 GPU 上執行,Dense 圖經過圖優化后使用 TensorRT 推理;

Dense 圖轉化成 ONNX 模型;

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

轉換 ONNX 模型成 TensorRT Engine;

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

自研CUDAKernel,提高性能

GPUTable加速查表

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

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)格式的序列特征

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

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

圖 6. CSR 的稀疏矩陣

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

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

圖 7. Lookup 過程優化對比

優化前:N 個輸入對應 N 個 Lookup CUDA Kernel;

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

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

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

圖 8. CSR 處理優化流程

優化前:N 對輸入對應 N 個 ReduceSum CUDA Kernel;

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

3.H2D,合并CPU->GPU內存拷貝

搜推模型中有較多的特征輸入,GPU 推理中需要將這些 Tensor 從 CPU 拷貝到 GPU,頻繁小內存的 cudaMemcpy 會導致性能下降,最佳實踐是將這些 Tensor 打包在一塊連續內存中,將整個大內存 H2D 拷貝到 GPU。

4.Tile算子融合

搜推模型中有超過 200個 Tile,大量的 Kernel Launch 會帶來 GPU 推理性能惡化,最佳實踐是進行 Kernel Fusion,在一個大的算子中執行多個小 Kernel,從而充分發揮 GPU 的并發優勢。

持續在搜推廣場景中GPU加速

唯品會 AI 平臺一直追求性能上的極致,未來將會持續與 NVIDIA 技術團隊合作,繼續探索使用 HierarchicalKV 在訓練超大型模型上的 GPU 性能優化,在提升 GPU 性能方面進行不斷地探索和實踐,也會對 Generative Recommenders 進行探索和實踐。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • NVIDIA
    +關注

    關注

    14

    文章

    4623

    瀏覽量

    101932
  • CSR
    CSR
    +關注

    關注

    3

    文章

    117

    瀏覽量

    69450
  • GPU芯片
    +關注

    關注

    1

    文章

    297

    瀏覽量

    5696

原文標題:利用 NVIDIA Merlin HierarchicalKV 實現唯品會在搜推廣場景中的 GPU 推理實踐

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    NVIDIA-SMI:監控GPU的絕佳起點

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

    NVIDIA 在首個AI推理基準測試中大放異彩

    和TensorRT軟件的成熟程度。它們讓用戶能夠更加輕松地將所有的NVIDIA GPU應用于數據中心、邊緣等領域。MLPerf定義了五項推理基準,涵蓋了三個現有的人工智能應用:圖像分類、目標檢測和翻譯。每項基準
    發表于 11-08 19:44

    Nvidia GPU風扇和電源顯示ERR怎么解決

    問題最近在Ubuntu上使用Nvidia GPU訓練模型的時候,如果機器鎖屏一段時間再打開的時候鼠標非??D,或者說顯示界面非??D,使用nvidia-smi查看發現,訓練模型的GPU
    發表于 12-30 06:44

    在Ubuntu上使用Nvidia GPU訓練模型

    問題最近在Ubuntu上使用Nvidia GPU訓練模型的時候,沒有問題,過一會再訓練出現非??D,使用nvidia-smi查看發現,顯示GPU的風扇和電源報錯:解決方案自動風扇控制在
    發表于 01-03 08:24

    充分利用Arm NN進行GPU推理

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

    NVIDIA Triton推理服務器簡化人工智能推理

    GKE 的 Triton 推理服務器應用程序是一個 helm chart 部署程序,可自動安裝和配置 Triton ,以便在具有 NVIDIA GPU 節點池的 GKE 集群上使用,包括
    的頭像 發表于 04-08 16:43 ?1921次閱讀
    <b class='flag-5'>NVIDIA</b> Triton<b class='flag-5'>推理</b>服務器簡化人工智能<b class='flag-5'>推理</b>

    使用NVIDIA GPU助力美團CTR預測服務升級

      通過 NVIDIA T4 深度優化方案,成功為美團 CTR 模型創造更多應用機會,不僅極大地提升了系統吞吐量,更進一步地提升了整個模型訓練的速度與降低訓練成本,落實 AI 框架在
    的頭像 發表于 04-13 15:15 ?663次閱讀

    NVIDIA T4 GPU和TensorRT加速微信搜索速度

      使用NVIDIA T4 GPU以及TensorRT推理引擎進行INT8低精度推理,極大提升了微信搜索的速度,進一步
    的頭像 發表于 04-21 10:53 ?1327次閱讀

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

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

    NVIDIA助力阿里巴巴天貓精靈大幅提升服務運行效率

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

    騰訊云與NVIDIA仍持續為AI推理加速進行合作

    Kit 不僅大大提升GPU 集群上多機多卡分布式訓練的效率,對于 GPU 上的模型推理也通過集成 NVIDIA TensorRT 帶來
    的頭像 發表于 08-31 09:24 ?1290次閱讀

    騰訊云TI平臺利用NVIDIA Triton推理服務器構造不同AI應用場景需求

    騰訊云 TI 平臺 TI-ONE 利用 NVIDIA Triton 推理服務器構造高性能推理服務部署平臺,使用戶能夠非常便捷地部署包括 TNN 模型在內的多種深度學習框架下獲得的 AI
    的頭像 發表于 09-05 15:33 ?1528次閱讀

    螞蟻鏈AIoT團隊與NVIDIA合作加速AI推理

    螞蟻鏈 AIoT 團隊與 NVIDIA 合作,將量化感知訓練(QAT)技術應用于深度學習模型性能優化中,并通過 NVIDIA TensorRT 高性能推理 SDK 進行高效率部署, 通過 INT8
    的頭像 發表于 09-09 09:53 ?914次閱讀

    NVIDIA GPU 加速 WPS Office AI 服務,助力打造優質的用戶體驗

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

    利用NVIDIA產品技術組合提升用戶體驗

    本案例通過利用NVIDIA TensorRT-LLM加速指令識別深度學習模型,并借助NVIDIA Triton推理服務器在NVIDIA V1
    的頭像 發表于 01-17 09:30 ?389次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>