Merlin HugeCTR(以下簡(jiǎn)稱 HugeCTR)是 GPU 加速的推薦框架,旨在在多個(gè) GPU 和節(jié)點(diǎn)之間分配訓(xùn)練并估計(jì)點(diǎn)擊率(Click-through rate)。
版本新增內(nèi)容
HugeCTR 第三代 Embedding 更新:
第三代 Embedding 功能優(yōu)化:自從在 v3.7 中引入新一代 HugeCTR Embedding 以來(lái),進(jìn)行了一些更新和優(yōu)化,包括代碼重構(gòu)以提高可用性。此版本的增強(qiáng)功能如下:
優(yōu)化了稀疏查找在 warp 間負(fù)載不平衡方面的性能。稀疏操作工具包 (SOK) 利用了此優(yōu)化來(lái)提高性能。
修復(fù)了用于確定 GlobalEmbeddingData 和 LocalEmbeddingData 類中的最大 Embedding 向量大小的問(wèn)題。
Sparse Operation Kit 1.1.4 版可以使用 Pip 安裝,并包括前面提到的優(yōu)化。
Embedding 表放置策略的 interface 簡(jiǎn)化:第三代 Embedding 現(xiàn)在為您提供了一種更簡(jiǎn)單的方法來(lái)配置 Embedding 表的放置策略。您可以使用函數(shù)參數(shù)配置嵌入表放置策略,而不是使用 JSON。您只需提供 shard_matrix、
table_group_strategy和 table_placement_strategy 參數(shù)。使用這些參數(shù),第三代 Embedding 可以將不同的表組合在一起,并根據(jù) shard_matrix 參數(shù)放置它們。請(qǐng)參閱示例:https://github.com/NVIDIA-Merlin/HugeCTR/blob/master/test/embedding_collection_test/dlrm_train.py
HugeCTR 分層參數(shù)服務(wù)器(HPS)更新:
用于 HPS 查找的 on-device 輸入鍵:HPS 查找支持在推理期間位于 GPU 內(nèi)存上的輸入 Embedding 鍵。此功能移除了主機(jī)到設(shè)備的副本,并使用 DLPack lookup_fromdlpack() 接口,使得 embedding key 的 DLPack 包裝可以是一個(gè) GPU tensor。
使用可配置的比例來(lái)初始化 Embedding Cache:在以前的版本中,cache_refresh_percentage_per_iteration 參數(shù)的默認(rèn)值為 0.1。在此版本中,默認(rèn)值更改為 0.0,并且該參數(shù)提供了額外的用途。如果您將參數(shù)設(shè)置為大于 0.0 的值并且還將模型的 use_gpu_embedding_cache 設(shè)置為 True,則當(dāng)分層參數(shù)服務(wù)器 (HPS) 啟動(dòng)時(shí),HPS 通過(guò)從模型的稀疏文件對(duì) Embedding Cache 進(jìn)行初始化時(shí),HPS 在會(huì)創(chuàng)建日志記錄,日志記錄類似于模型的 EC 初始化:“《model-name》”、num_tables:《int》 和設(shè)備上的 EC 初始化:《int》。這樣將會(huì)減少預(yù)熱階段的持續(xù)時(shí)間。
HPS 插件的隱式初始化:在此版本中,當(dāng)您使用 Triton 推理服務(wù)器部署 TensorFlow 的 SavedModel 時(shí),首次執(zhí)行加載的模型時(shí)會(huì)隱式初始化 HPS。在以前的版本中,您需要顯式運(yùn)行 hps.Init(ps_config_file, global_batch_size)。
HugeCTR 分層參數(shù)服務(wù)器(HPS)架構(gòu)
HugeCTR I/O 模塊更新:
支持了 AWS S3 文件系統(tǒng):Parquet DataReader 現(xiàn)在可以從 Amazon Web Services S3 文件系統(tǒng)讀取數(shù)據(jù)集。您還可以在訓(xùn)練期間從 S3 加載和存儲(chǔ)模型。
文件系統(tǒng)使用的簡(jiǎn)化:您不再需要傳遞 DataSourceParams 來(lái)使用遠(yuǎn)端文件系統(tǒng)進(jìn)行模型的加載和存儲(chǔ)。 FileSystem 類會(huì)根據(jù)您在構(gòu)建模型時(shí)指定的路徑 URI 自動(dòng)推斷正確的文件系統(tǒng)類型:本地、HDFS 或 S3。例如,路徑 hdfs://localhost:9000/ 將被推斷為 HDFS 文件系統(tǒng),路徑
https://mybucket.s3.myregion.amazonaws.com/ 將被推斷為 S3 文件系統(tǒng)。
支持將模型從遠(yuǎn)程文件系統(tǒng)加載到 HPS:此版本使您能夠在推理期間將模型從 HDFS 和 S3 遠(yuǎn)程文件系統(tǒng)加載到 HPS。要使用這個(gè)新功能,請(qǐng)?jiān)?InferenceParams 中為模型文件路徑提供準(zhǔn)確的 HDFS 或者 S3 URL。
HugeCTR I/O 框架
文檔和示例更新:
新的 MMoE 模型示例:
https://github.com/NVIDIA-Merlin/HugeCTR/tree/master/samples/mmoe
新的 HPS 示例筆記本:
https://github.com/NVIDIA-Merlin/HugeCTR/tree/master/hierarchical_parameter_server/notebooks
HPS 文檔樣式更新:https://nvidia-
merlin.github.io/HugeCTR/master/hierarchical_parameter_server/index.html
刪除了兩個(gè)已棄用的教程 triton_tf_deploy 和 dump_to_tf。
增加了 Performance 相關(guān)頁(yè)面:https://nvidia-merlin.github.io/HugeCTR/master/performance.html
其他更新:
對(duì)重疊 Pipeline 進(jìn)行了更精細(xì)的粒度控制:我們棄用了舊的重疊 Pipeline knob,并引入了四個(gè)新的 knob:
train_intra_iteration_overlap
train_inter_iteration_overlap
eval_intra_iteration_overlap
eval_inter_iteration_overlap
以幫助用戶更好地控制重疊行為。有關(guān)詳細(xì)信息,請(qǐng)參閱 API 文檔
https://nvidia-merlin.github.io/HugeCTR/master/api/python_interface.html#createsolver-method
支持在訓(xùn)練過(guò)程中將 Tensor 的值導(dǎo)出到 Numpy Array: 為 Model 和 InferenceModel 類新增了 check_out_tensor() 方法?,F(xiàn)在用戶可以使用這個(gè) Pyhon 方法將 Tensor 的值導(dǎo)出,方便 debug。
修復(fù)的問(wèn)題
InteractionLayer 類已修復(fù),它可以在 num_feas 》 30 時(shí)正常工作了。
通過(guò)增加工作空間大小和添加結(jié)尾掩碼來(lái)更正 cuBLASLt 配置。
用于演示特征交叉的示例的預(yù)處理腳本已修復(fù)。
異步數(shù)據(jù)讀取器是固定的。以前,由于不正確的 I/O 塊大小和 I/O 對(duì)齊問(wèn)題,它會(huì)掛起并報(bào)錯(cuò)。AsyncParam 類已更改以實(shí)現(xiàn)修復(fù)。io_block_size 參數(shù)被 max_nr_request 參數(shù)替換,并且異步讀取器使用的實(shí)際 I/O 塊大小會(huì)相應(yīng)計(jì)算
修復(fù)了在調(diào)試模式下觸發(fā)的構(gòu)建錯(cuò)誤。
使用 Parquet DataReader 時(shí),如果 metadata.json 中指定的 Parquet 數(shù)據(jù)集文件不存在,HugeCTR 不再崩潰,而是跳過(guò)丟失的文件并顯示警告消息。
已知問(wèn)題
以下是目前 HugeCTR 存在的已知問(wèn)題,我們將在之后的版本中盡快修復(fù):
HugeCTR 使用 NCCL 在隊(duì)列之間共享數(shù)據(jù),并且 NCCL 可能需要共享系統(tǒng)內(nèi)存用于 IPC 和固定(頁(yè)面鎖定)系統(tǒng)內(nèi)存資源。如果您在容器內(nèi)使用 NCCL,請(qǐng)?jiān)趩?dòng)容器時(shí)通過(guò)指定參數(shù) -shm-size=1g -ulimit memlock=-1 來(lái)增加這些資源。
即使目標(biāo) Kafka 代理沒(méi)有響應(yīng),KafkaProducers 啟動(dòng)也會(huì)成功。為避免與來(lái)自 Kafka 的流模型更新相關(guān)的數(shù)據(jù)丟失,您必須確保足夠數(shù)量的 Kafka 代理正在運(yùn)行、正常運(yùn)行,并且可以從運(yùn)行 HugeCTR 的節(jié)點(diǎn)訪問(wèn)。
文件列表中的數(shù)據(jù)文件數(shù)量應(yīng)大于或等于數(shù)據(jù)讀取器工作人員的數(shù)量。否則,不同的 worker 會(huì)映射到同一個(gè)文件,并且數(shù)據(jù)加載不會(huì)按預(yù)期進(jìn)行。
暫時(shí)不支持使用正則化器的聯(lián)合損失訓(xùn)練。
暫時(shí)不支持將 Adam 優(yōu)化器狀態(tài)導(dǎo)出到 AWS S3。
-
gpu
+關(guān)注
關(guān)注
28文章
4790瀏覽量
129449 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3068瀏覽量
74392 -
工具包
+關(guān)注
關(guān)注
0文章
47瀏覽量
9566
原文標(biāo)題:HugeCTR v4.0 & v4.1 發(fā)布說(shuō)明
文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論