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

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

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

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

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

1. 概述

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

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

Volatile 數(shù)據(jù)后端以 RAM Memory 作為主要存儲介質(zhì),提供本地或者遠端更加快捷的參數(shù)讀寫服務。既可以作為 GPU embedding 緩存的擴展,也可以作為本地磁盤的(Persistent 后端)緩存。由于 Persistent 數(shù)據(jù)后端的存儲容量可以理解為無限巨大,但是同時也就意味著在實際的推理服務中的讀寫速度也是相對較慢的。因此 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ī)的存儲結構,通過實例化 Volatile 數(shù)據(jù)后端,可以保證每個數(shù)據(jù)節(jié)點都將擁有一個獨立本地化的存儲實例。對于本地化的 Volatile 數(shù)據(jù)后端,我們不僅實現(xiàn)了分區(qū)優(yōu)化的 HashMap 結構,還實現(xiàn)了高性能的 Parallel HashMap 數(shù)據(jù)結構,進而大幅度提升了本地參數(shù)的查詢和讀寫服務。

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

為了最大限度地提高性能并避免由零星 RAM memory 在 Volatile 數(shù)據(jù)后端中的高效使用(即內(nèi)存不足的情況),我們提供了溢出處理機制。 它允許限制每個分區(qū)存儲的最大嵌入量,從而限制分布式數(shù)據(jù)庫的內(nèi)存消耗。當前我們允許用戶配置不同的驅(qū)逐更新策略(隨機驅(qū)逐以及 LRU)來保證內(nèi)存最大限度的利用。對于本地化的參數(shù)分區(qū)以及查詢機制,用戶可以對數(shù)據(jù)后端顯式的配置分區(qū)數(shù)量以及分區(qū)大小來更加細粒度的提高數(shù)據(jù)后端的查詢讀寫服務。具體來說,用戶可以通過配置 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)絡帶寬等硬件限制造成 Redis Cluster 不可用,RocksDB 的分成存儲結構 同樣可以完全滿足高并發(fā)參數(shù)查詢請求。

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

4. 流式增量更新

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

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

5. 結語

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

關于作者:

About Yingcan Wei

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

About Matthias Langer

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

About Jerry Shi

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

審核編輯:郭婷

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

    關注

    68

    文章

    10974

    瀏覽量

    214440
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4854

    瀏覽量

    130020
  • 服務器
    +關注

    關注

    12

    文章

    9513

    瀏覽量

    86698
收藏 人收藏

    評論

    相關推薦

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

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

    緩存服務器運作的原理解析

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

    Skylaking服務器升級 支持Optane緩存和GPU

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

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

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

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

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

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

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

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

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

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

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

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

    HugeCTR TensorFlow 嵌入插件今天可以從 HugeCTR GitHub 存儲庫以及 NGC NVIDIA Merlin TensorFlow 容器獲得。如果您是 TensorFlow
    的頭像 發(fā)表于 04-02 14:18 ?2046次閱讀
    如何使用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é)點之間分配訓練并估計點擊率(Click-through rate)。
    的頭像 發(fā)表于 06-17 09:28 ?1026次閱讀

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

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

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

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

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

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

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

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

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

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

    電子發(fā)燒友

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

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品