NVIDIA Merlin HugeCTR(以下簡稱 HugeCTR)是 GPU 加速的推薦框架,旨在在多個 GPU 和節點之間分配訓練并估計點擊率(Click-through rate)。作為一個開源框架,HugeCTR 能夠優化 NVIDIA GPU 上的大規模推薦。近期,HugeCTR 發布了 v4.3 版本,讓我們一同了解一下此次更新的詳細內容!
新增內容
HugeCTR 第三代 Embedding 更新:
-
第三代 Embedding 功能優化:自從在 v3.7 中引入新一代 HugeCTR Embedding 以來,進行了一些更新和優化,包括代碼重構以提高可用性。此版本的增強功能如下:
-
EmbeddingPlanner 類替換為 EmbeddingCollectionConfig 類。有關 API 的示例,請參閱 test/embedding_collection_test 目錄。
-
優化了一些 API ,以支持訓練過程中模型導入和導出。這些方法是 Model.embedding_dump(path: str, table_names: list[str]) 和 Model.embedding_load(path: str, list[str])。路徑參數是文件系統中的一個目錄,您可以將模型權重存儲到該目錄或從中加載權重。table_names 參數是 Embedding 表名的列表。

圖 1:HugeCTR 分層參數服務器(HPS)架構
HugeCTR 分層參數服務器(HPS)更新:
-
RedisClusterBackend 現在支持 TLS/SSL 通信。相關示例代碼,請參閱分層參數服務器演示筆記本。該筆記本更新了分步說明,向您展示如何設置 HPS 以使用帶(和不帶)加密的 Redis。同時, 易失性數據庫參數 文檔對 enable_tls、tls_ca_certificate、tls_client_certificate、tls_client_key 和 tls_server_name_identification 等參數進行了更新。
-
對 Embedding 緩存添加了靜態表支持。當 Embedding 表可以完全放在 GPU 內存中時,靜態表是合適的。在這種情況下,靜態表比 Embedding 緩存查找快三倍以上。當然,靜態表將不支持 Embedding 的更新。
-
用于 TensorFlow 與 TensorFlow-TensorRT 集成的 HPS 插件 (TF-TRT):有關示例代碼請參閱部署 SavedModel 筆記本
-
Redis 或 Kafka 使用的更改:更新了用 RedisClusterBackend 和用 Kafka 參數流部署模型的方式。使用了 HPS 分區選擇算法的第三方庫以提高性能。新算法可以為易失性數據庫生成不同的分區分配。
-
新易失性數據庫類型:此版本將 multi_process_hash_map 的 db_type 值添加到分層參數服務器。此數據庫類型支持使用共享內存和 /dev/shm 設備文件跨進程的共享 Embedding。運行 HPS 的多個進程可以讀取和寫入同一個哈希映射。
-
HPS Redis 后端的優化:在此版本中,分層參數服務器可以并行打開多個連接到每個 Redis 節點。此增強功能使 HPS 能夠利用 Redis 服務器 I/O 模塊中的重疊處理優化。此外,HPS 現在可以利用 Redis 散列標簽來共同定位 Embedding 值和元數據。此增強功能可以減少對 Redis 節點的訪問次數以及完成事務所需的每個節點往返通信的次數。
-
向 ONNX 模型轉換器添加了多任務模型支持:此版本向 ONNX 轉換器添加了對多任務模型的支持。此版本還包括對 preprocess_census.py 腳本的更新。
-
刪除了對一些庫的依賴。
Layer 以及優化器的更新以及新的模型支持:
-
增加了對動態 Embedding 表 (DET) 的 SGD、Momentum SGD、Nesterov Momentum、AdaGrad、RMS-Prop、Adam 和 FTRL 優化器的支持。示例代碼請參考目錄中的test_embedding_table_optimizer.cpp 文件 test/utest/embedding_collection/ 目錄。
-
添加了對稠密網絡 FTRL 優化器的支持。
-
支持了 BERT 和其變體:包括對 MultiHeadAttention 層并為序列掩碼層。有關詳細信息,請參閱 samples/bst 目錄。
-
Deep & Cross Network Layer 版本 2 支持:有關概念信息,請參閱 https://arxiv.org/abs/2008.13535。多交叉層文檔也已更新。
-
MLP Layer 更新:添加了一個帶有 hugectr.Layer_t.MLP 類的 MLP 層。該層非常靈活,可以更輕松地使用一組融合的全連接層并啟用相關優化。對于 MLPLayer 中的每個融合全連接層,輸出維度、偏差和激活函數都是可調的。MLPLayer 支持 FP32、FP16 和 TF32 數據類型。有關示例請參閱 dlrm 目錄中的 dgx_a100_mlp.py 以了解如何使用該層。
Sparse Operation Kit(SOK) 的更新:
-
DeepRec 中 Sparse Operation Kit 的增強功能:此版本包括對 Sparse Operation Kit 的更新,以提高 DeepRec 中 Embedding 變量查找操作的性能。lookup_sparse() 函數的 API 已更改以刪除熱度參數。lookup_sparse() 函數得到優化,可以動態計算非零元素的數量。有關詳細信息,請參閱 sparse_operation_kit 目錄 。
-
Sparse Operation Kit 可從 PyPi 安裝:1.1.4 版的 SOK 可從 PyPi 安裝了。
HugeCTR I/O 模塊更新:
-
支持了在離線推理中從遠端文件系統(HDFS, S3 等)中讀取推理數據:HugeCTR 除了訓練時讀取外,現在還支持離線推理時通過 DataSourceParams API 從遠程文件系統如 HDFS 和 S3 讀取數據。HugeCTR Training and Inference with Remote File System Example 已更新以展示這個新功能。

圖 2:HugeCTR I/O 模塊功能架構
文檔和示例更新:
-
為了幫助用戶配置 Jupyter Notebook 的運行環境,新增了運行示例筆記本 。
-
提高了數據預處理腳本的易用性。
-
MLP 層的文檔更新了。
-
新增了 2022 年的 HugeCTR 相關演講和博客:HugeCTR 演講和博客 。
修復的問題
-
修復了 MultiProcessHashMapBackend 在使用基于 JSON 文件的配置時阻止配置共享內存大小的錯誤。
-
在調用某些 HugeCTR API 之前具有 NUMA 綁定的原始 CUDA 設備現在可以正確恢復。
-
修復了使用宏 DEBUG 安裝 HugeCTR 時偶爾出現的 Embedding CUDA 內核啟動失敗的問題。
-
修復了與 TensorFlow v2.1.0 及更高版本相關的 SOK 構建錯誤。
-
修復了與 CUDA 12 相關的編譯錯誤。
已知問題
以下是目前 HugeCTR 存在的已知問題,我們將在之后的版本中盡快修復:
-
如果客戶端代碼調用 RMM rmm::set_current_device_resource() 方法或 rmm::set_current_device_resource() 方法,HugeCTR 可能會出現運行時錯誤。該錯誤是由于 HugeCTR 中的 Parquet 數據讀取器也調用了 rmm::set_current_device_resource(),因此該設備對同一進程中的其他庫可見。參考 GitHub 問題 #356 以獲取更多信息。作為解決方法,如果您知道 rmm::set_current_device_resource() 被 HugeCTR 以外的客戶端代碼調用,您可以將環境變量 HCTR_RMM_SETTABLE 設置為 0 以防止 HugeCTR 設置自定義 RMM 設備資源。但要小心,因為該設置會降低 Parquet 讀取的性能。
-
HugeCTR 使用 NCCL 在隊列之間共享數據,并且 NCCL 可能需要共享系統內存用于 IPC 和固定(頁面鎖定)系統內存資源。如果您在容器內使用 NCCL,請在啟動容器時通過指定參數 -shm-size=1g -ulimit memlock=-1 來增加這些資源。
-
即使目標 Kafka 代理沒有響應,KafkaProducers 啟動也會成功。為避免與來自 Kafka 的流模型更新相關的數據丟失,您必須確保足夠數量的 Kafka 代理正在運行、正常運行,并且可以從運行 HugeCTR 的節點訪問。
-
文件列表中的數據文件數量應大于或等于數據讀取器工作人員的數量。否則,不同的 worker 會映射到同一個文件,并且數據加載不會按預期進行。
-
暫時不支持使用正則化器的聯合損失訓練。
-
暫時不支持將 Adam 優化器狀態導出到 AWS S3。
HugeCTR v4.3 發布說明,已更新至 GitHub 和文檔:
GitHub:
https://github.com/NVIDIA-Merlin/HugeCTR
文檔:
https://nvidia-merlin.github.io/HugeCTR/master/hugectr_user_guide.html
從 2023 年一月起,HugeCTR 的版本號將從數字版本(v.4.4)變更為年歷版本(v23.01)。
原文標題:Merlin HugeCTR v4.3 發布說明
文章出處:【微信公眾號:NVIDIA英偉達】歡迎添加關注!文章轉載請注明出處。
-
英偉達
+關注
關注
22文章
3920瀏覽量
93104
原文標題:Merlin HugeCTR v4.3 發布說明
文章出處:【微信號:NVIDIA_China,微信公眾號:NVIDIA英偉達】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
NVIDIA Parabricks v4.3.1版本的新功能

SOK在手機行業的應用案例

評論