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

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

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

Merlin HugeCTR分級參數(shù)服務(wù)器:緩存和在線更新設(shè)計

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:About Yingcan Wei,A ? 2022-03-31 15:39 ? 次閱讀

1. 概述

HPS 數(shù)據(jù)后端作為 GPU embedding 緩存架構(gòu)的基石,同時也是 GPU embedding 緩存在 CPU 內(nèi)存以及本地磁盤的進一步物理擴展。HPS 數(shù)據(jù)后端通過綁定不同物理層級的存儲從而提供了大型模型 embedding table 的緩存,查詢,更新以及容錯等服務(wù),目的即為了保證在推理服務(wù)中 GPU embedding 緩存的高命中率,從而提高推理服務(wù)的吞吐大幅度降低端到端的延遲。

2. Volatile 數(shù)據(jù)后端

Volatile 數(shù)據(jù)后端以 RAM Memory 作為主要存儲介質(zhì),提供本地或者遠端更加快捷的參數(shù)讀寫服務(wù)。既可以作為 GPU embedding 緩存的擴展,也可以作為本地磁盤的(Persistent 后端)緩存。由于 Persistent 數(shù)據(jù)后端的存儲容量可以理解為無限巨大,但是同時也就意味著在實際的推理服務(wù)中的讀寫速度也是相對較慢的。因此 Volatile 數(shù)據(jù)后端彌補了 Persistent 數(shù)據(jù)庫的缺陷,極大擴展了有限的 GPU 內(nèi)存。但是 Volatile 數(shù)據(jù)庫的容量本質(zhì)上也是有限的,因此我們通過實現(xiàn)參數(shù)的分區(qū),驅(qū)逐以及共享進一步提高 RAM Memory 帶來的上限。

為了保證 Volatile 數(shù)據(jù)后端可以適用于更廣泛的推薦部署場景,我們同樣實現(xiàn)了針對不同場景的本地化或者分布式存儲機制。從下圖中我們可以看到,針對 HashMap 此類常規(guī)的存儲結(jié)構(gòu),通過實例化 Volatile 數(shù)據(jù)后端,可以保證每個數(shù)據(jù)節(jié)點都將擁有一個獨立本地化的存儲實例。對于本地化的 Volatile 數(shù)據(jù)后端,我們不僅實現(xiàn)了分區(qū)優(yōu)化的 HashMap 結(jié)構(gòu),還實現(xiàn)了高性能的 Parallel HashMap 數(shù)據(jù)結(jié)構(gòu),進而大幅度提升了本地參數(shù)的查詢和讀寫服務(wù)。

與之相反的,則是分布式共享 Volatile 數(shù)據(jù)后端,分布式的數(shù)據(jù)后端將參數(shù)通過邏輯分區(qū)保存在不同的網(wǎng)絡(luò)節(jié)點,即 Redis Cluster(既可以將參數(shù)分布式存儲在遠端的數(shù)據(jù)節(jié)點,同樣也可以是相同的推理節(jié)點)。通過使用集群中共享 RAM 內(nèi)存進行參數(shù)的存儲和讀寫,進一步擴大了 Volatile 數(shù)據(jù)庫容量,也提供了 Redis 持久化特性(RDB 和 AOF 等 ),從而使得跨節(jié)點重啟之后的讀寫操作可以無縫進行。 由于共享的機制,也實現(xiàn)了 HugeCTR 模型訓(xùn)練到推理的參數(shù)無縫更新。

為了最大限度地提高性能并避免由零星 RAM memory 在 Volatile 數(shù)據(jù)后端中的高效使用(即內(nèi)存不足的情況),我們提供了溢出處理機制。 它允許限制每個分區(qū)存儲的最大嵌入量,從而限制分布式數(shù)據(jù)庫的內(nèi)存消耗。當(dāng)前我們允許用戶配置不同的驅(qū)逐更新策略(隨機驅(qū)逐以及 LRU)來保證內(nèi)存最大限度的利用。對于本地化的參數(shù)分區(qū)以及查詢機制,用戶可以對數(shù)據(jù)后端顯式的配置分區(qū)數(shù)量以及分區(qū)大小來更加細粒度的提高數(shù)據(jù)后端的查詢讀寫服務(wù)。具體來說,用戶可以通過配置 max_get_batch_size,max_set_batch_size 以及并發(fā)線程數(shù)來精準控制讀寫開銷。

具體參數(shù)配置信息可以參考 HPS 配置詳解:https://github.com/triton-inference-server/hugectr_backend/blob/main/docs/hierarchical_parameter_server.md#6-configuration

3. Persistent 數(shù)據(jù)后端

Persistent 數(shù)據(jù)后端以本地 SSDs 作為持久化存儲介質(zhì),維護一個完整的模型參數(shù)部分,同時承載著模型參數(shù)的容錯的功能。相對于 GPU embedding 緩存與 Volatile RAM 緩存,Persistent 數(shù)據(jù)后端可以看作是一個擁有無限虛擬空間的存儲后端,同時也作為一個本地化的 Key-value 查詢引擎,在此我們引入了性能優(yōu)化后的 RocksDB 作為 Persistent 后端的實現(xiàn)。

每個推理節(jié)點通過 HPS 的配置文件即可在本地磁盤保留所有模型 embedding table 的獨立完整副本。 Persistent 數(shù)據(jù)后端也是對分布式 Volatile 數(shù)據(jù)后端的進一步補充:1) 進一步擴展存儲容量的同時, 2) 實現(xiàn)高可用性。 特別是對于超大規(guī)模的模型(甚至超過了分布 Redis Cluster 的總 RAM 容量),或者由于網(wǎng)絡(luò)帶寬等硬件限制造成 Redis Cluster 不可用,RocksDB 的分成存儲結(jié)構(gòu) 同樣可以完全滿足高并發(fā)參數(shù)查詢請求。

針對 Persistent 后端的 Rocksdb 會以分塊查詢機制來獲取最大性能。針對不同的硬件基礎(chǔ)設(shè)施,用戶可以進行定制化的配置,從而保證硬件資源的利用率以及推理性能的最大化。

4. 流式增量更新

通過優(yōu)化后 Kafka 的發(fā)布更新機制,推理節(jié)點中的每個 HPS 實例所對應(yīng)的不同層級的數(shù)據(jù)后端通過訂閱對應(yīng)模型的 Topic,消費實時的增量模型參數(shù),實現(xiàn)模型的異步更新。在具體實現(xiàn)中,我們提供兩個簡單易用的抽象接口,分別是 MessageSink 和 MessageSource,保證了增量模型從訓(xùn)練端向推理端的無縫更新。

用戶可以通過 JSON 格式的配置文件,任意組合搭配適用于部署場景的數(shù)據(jù)后端,保證每個部署節(jié)點充分的利用上文所提到的所有存儲介質(zhì)。由于 HPS 是構(gòu)建于 Triton 推理架構(gòu)之上。正如下圖所展示的完整 HPS 訓(xùn)練推理數(shù)據(jù)流示意圖,每個 Triton 節(jié)點通過 Volatile 數(shù)據(jù)后端既可以維護高性能的本地 RAM 緩存,同時也可以負責(zé)維護對應(yīng) Redis 節(jié)點的參數(shù)分區(qū),Redis cluster 中的分區(qū)參數(shù)既可以通過訓(xùn)練與推理集群共享,也可以通過訂閱 Kafka 數(shù)據(jù)源來實現(xiàn)無縫的參數(shù)更新。模型在 HugeCTR 訓(xùn)練平臺可以實時將在線訓(xùn)練中的增量模型推向分布式的 Kafka 隊列,相同 JSON 配置的推理節(jié)點會自動檢測和監(jiān)控消息隊列,從而保證了推理節(jié)點的 Persistent 數(shù)據(jù)后端始終維護完整的最新版本的參數(shù)副本,為推理服務(wù)的容錯提供了保障。

5. 結(jié)語

在這一期的 HugeCTR 分級參數(shù)服務(wù)器介紹中,我們介紹了 CPU 分布式緩存,本地緩存,以及在線更新的設(shè)計細節(jié)。在下一期中,我們將著重介紹 HugeCTR 分級參數(shù)服務(wù)器中最關(guān)鍵的組件:Embedding Cache 的設(shè)計細節(jié),敬請期待。

關(guān)于作者:

About Yingcan Wei

GPU計算專家,畢業(yè)于香港大學(xué),HugeCTR算法組負責(zé)人。當(dāng)前主要從事HugeCTR的算法設(shè)計與推理架構(gòu)工作。研究領(lǐng)域包括深度學(xué)習(xí)域適應(yīng),生成對抗網(wǎng)絡(luò),推薦算法設(shè)計優(yōu)化。在2020年加入英偉達前,任職于歐美外資以及互聯(lián)網(wǎng)等企業(yè),擁有多年圖像處理 、數(shù)據(jù)挖掘,推薦系統(tǒng)設(shè)計開發(fā)相關(guān)經(jīng)驗。

About Matthias Langer

Matthias 在西門子擔(dān)任工廠自動化軟件和機器學(xué)習(xí)方面的調(diào)試專家多年。 2019 年,他在拉籌伯大學(xué)(墨爾本)獲得計算機科學(xué)博士學(xué)位,以表彰他在帶寬受限環(huán)境中的分布式深度學(xué)習(xí)方面的工作。 Matthias 與澳大利亞體育學(xué)院 (AIS) 為東京奧運會開發(fā)了一種用于視頻分析的新型 AI 系統(tǒng),并開發(fā)了算法來幫助澳大利亞移動電話網(wǎng)絡(luò)中的負載預(yù)測。此外,他曾在中國領(lǐng)先的技術(shù)招聘平臺 BOSS 直聘北京研究中心擔(dān)任機器科學(xué)家,直至 2021 年 6 月首次公開募股。 在 NVIDIA,Matthias 是上海 DevTech APAC 團隊的一員,該團隊負責(zé)開發(fā) NVIDIA HugeCTR。 Matthias 的工作重點是分發(fā)、并行化和性能優(yōu)化算法,這些算法使 HugeCTR 成為世界上用于推薦模型訓(xùn)練和推理的最快和最具可擴展性的系統(tǒng)之一。目前主要負責(zé) HugeCTR 的分布式嵌入存儲和檢索模塊的實現(xiàn)、維護和擴展。

About Jerry Shi

本科畢業(yè)于加州大學(xué)伯克利分校,在康奈爾大學(xué)獲得碩士文憑。于2021年加入英偉達,在Merlin HugeCTR團隊算法組負責(zé)推薦系統(tǒng)架構(gòu)與算法的相關(guān)設(shè)計及開發(fā)。

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209373
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    27

    文章

    4591

    瀏覽量

    128144
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8701

    瀏覽量

    84552
收藏 人收藏

    評論

    相關(guān)推薦

    播出服務(wù)器磁盤I/O與緩存性能分析

    播出服務(wù)器磁盤I/O與緩存性能分析:針對電視臺專業(yè)播出服務(wù)器在播出質(zhì)量和播出性能上的高要求,提出了(s,S)策略下讀數(shù)據(jù)緩存和復(fù)用緩存與節(jié)目
    發(fā)表于 01-16 15:09 ?22次下載

    緩存服務(wù)器運作的原理解析

    將HTML緩存存儲在一臺獨立的緩存服務(wù)器中,利用memcached,我們可以很容易地通過TCP將緩存存儲在其他服務(wù)器中,而且memcache
    發(fā)表于 04-28 12:43 ?1133次閱讀

    Skylaking服務(wù)器升級 支持Optane緩存和GPU

    Hitachi Vantara利用Skylake處理升級了更多服務(wù)器,并增加支持Optane SSD緩存和Nvidia GPU。
    的頭像 發(fā)表于 06-14 09:13 ?3562次閱讀
    Skylaking<b class='flag-5'>服務(wù)器</b>升級 支持Optane<b class='flag-5'>緩存</b>和GPU

    基于高斯混合模型的Web代理服務(wù)器緩存

    基于高斯混合模型的Web代理服務(wù)器緩存
    發(fā)表于 06-23 16:46 ?17次下載

    基于多級隊列的云服務(wù)并發(fā)量分級緩存機制

    基于多級隊列的云服務(wù)并發(fā)量分級緩存機制
    發(fā)表于 06-24 11:35 ?15次下載

    Merlin HugeCTR V3.4.1版本新增內(nèi)容介紹

    Merlin HugeCTR(以下簡稱 HugeCTR)是 GPU 加速的推薦程序框架,旨在在多個 GPU 和節(jié)點之間分配訓(xùn)練并估計點擊率(Click-through rate)。
    的頭像 發(fā)表于 03-10 10:15 ?936次閱讀

    GPU加速的推薦程序框架Merlin HugeCTR

    Merlin HugeCTR(以下簡稱 HugeCTR)是 GPU 加速的推薦程序框架,旨在在多個 GPU 和節(jié)點之間分配訓(xùn)練并估計點擊率(Click-through rate)。
    的頭像 發(fā)表于 03-20 15:30 ?2149次閱讀

    Merlin HugeCTR 分級參數(shù)服務(wù)器簡介

      參數(shù)服務(wù)器是推薦系統(tǒng)的重要組成部分,但是目前的訓(xùn)練端參數(shù)服務(wù)器由于高延遲和同步問題無法有效解決推理部署中模型過大的瓶頸。
    的頭像 發(fā)表于 03-31 15:44 ?1453次閱讀
    <b class='flag-5'>Merlin</b> <b class='flag-5'>HugeCTR</b> <b class='flag-5'>分級</b><b class='flag-5'>參數(shù)</b><b class='flag-5'>服務(wù)器</b>簡介

    如何使用NVIDIA Merlin推薦系統(tǒng)框架實現(xiàn)嵌入優(yōu)化

    HugeCTR TensorFlow 嵌入插件今天可以從 HugeCTR GitHub 存儲庫以及 NGC NVIDIA Merlin TensorFlow 容器獲得。如果您是 TensorFlow
    的頭像 發(fā)表于 04-02 14:18 ?1834次閱讀
    如何使用NVIDIA <b class='flag-5'>Merlin</b>推薦系統(tǒng)框架實現(xiàn)嵌入優(yōu)化

    Merlin HugeCTR v3.6和v3.7版本新增內(nèi)容介紹

    Merlin HugeCTR(以下簡稱 HugeCTR)是 GPU 加速的推薦程序框架,旨在在多個 GPU 和節(jié)點之間分配訓(xùn)練并估計點擊率(Click-through rate)。
    的頭像 發(fā)表于 06-17 09:28 ?851次閱讀

    Merlin HugeCTRV 3.8/3.9版本新增內(nèi)容

    Merlin HugeCTR(以下簡稱 HugeCTR)是 GPU 加速的推薦程序框架,旨在在多個 GPU 和節(jié)點之間分配訓(xùn)練并估計點擊率(Click-through rate)。
    的頭像 發(fā)表于 08-24 10:12 ?614次閱讀

    Merlin HugeCTR第三代 Embedding 功能優(yōu)化

    Merlin HugeCTR(以下簡稱 HugeCTR)是 GPU 加速的推薦框架,旨在在多個 GPU 和節(jié)點之間分配訓(xùn)練并估計點擊率(Click-through rate)。
    的頭像 發(fā)表于 10-20 09:51 ?904次閱讀

    Merlin HugeCTR 分級參數(shù)服務(wù)器系列之三——集成到 TensorFlow

    前兩期中我們介紹了 HugeCTR 分級參數(shù)服務(wù)器 (HPS)的三級存儲結(jié)構(gòu)的設(shè)計,相關(guān)配置使用,數(shù)據(jù)后端以及流式在線模型
    的頭像 發(fā)表于 11-22 19:45 ?520次閱讀

    Merlin HugeCTR v4.3 發(fā)布說明

    NVIDIA Merlin HugeCTR(以下簡稱 HugeCTR)是 GPU 加速的推薦框架,旨在在多個 GPU 和節(jié)點之間分配訓(xùn)練并估計點擊率(Click-through rate)。作為一個
    的頭像 發(fā)表于 01-05 11:55 ?663次閱讀

    恒訊科技介紹:緩存服務(wù)器是什么?有哪些不同類型的算法?

    緩存服務(wù)器是什么?緩存服務(wù)器是專用網(wǎng)絡(luò)服務(wù)器或充當(dāng)在本地保存網(wǎng)頁或其他互聯(lián)網(wǎng)內(nèi)容的服務(wù)器
    的頭像 發(fā)表于 07-07 17:48 ?563次閱讀