Merlin HugeCTR(以下簡稱 HugeCTR)是 GPU 加速的推薦程序框架,旨在在多個(gè) GPU 和節(jié)點(diǎn)之間分配訓(xùn)練并估計(jì)點(diǎn)擊率(Click-through rate)。
V3.6 版本新增內(nèi)容
1. Concat 層現(xiàn)已支持 3D 輸入張量:
在之前的版本中,Concat 層只能處理 2D 輸入張量?,F(xiàn)在輸入可以是 3D 并且可以沿軸 1 和軸 2 連接。
2. Parquet 數(shù)據(jù)讀取器現(xiàn)已支持讀取稠密特征中的列表:
在以前的版本中, HugeCTR 假設(shè)每個(gè)稠密特征只有一個(gè)值,并且數(shù)據(jù)類型必須是 float32,也就是是一種標(biāo)量類型。而現(xiàn)在用戶可以將 float32 或者 [float32] 用于稠密特征,這意味著每個(gè)稠密特征可以有多個(gè)值。
3. 在 Merlin 容器中重新啟用 HDFS:
Merlin 容器中的 HDFS 支持現(xiàn)在是一個(gè)可選依賴項(xiàng)。有關(guān)詳細(xì)信息,請(qǐng)參閱核心功能文檔中的 HDFS 支持部分。
(https://nvidia-merlin.github.io/HugeCTR/v3.6/hugectr_core_features.html#hdfs-support)
4. 評(píng)估指標(biāo)中增加 AUC 評(píng)估:
以前版本的 HugeCTR 僅針對(duì)二進(jìn)制分類的情況計(jì)算 AUC。在這個(gè)版本中,我們支持多標(biāo)簽分類的 AUC。我們使用 sklearn 的 AUC 實(shí)現(xiàn)作為參考 (https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html)。我們實(shí)現(xiàn)了未加權(quán)的宏觀平均策略,這是 sklearn 中的默認(rèn)策略。用戶可以更改輸入層的“l(fā)abel_dim”參數(shù)以啟用多標(biāo)簽分類,我們的實(shí)現(xiàn)將在該場景中計(jì)算多標(biāo)簽 AUC。
5. 日志輸出格式升級(jí):
我們已將默認(rèn)日志輸出格式升級(jí)為毫秒級(jí)。
6. 文檔更新:
a. 發(fā)布說明現(xiàn)已添加到網(wǎng)絡(luò)文檔中,可通過以下鏈接訪問
(https://nvidia-merlin.github.io/HugeCTR/master/release_notes.html)。
b. HPS(分級(jí)參數(shù)服務(wù)器)配置手冊(cè)
我們?yōu)?HPS 添加了一個(gè)配置手冊(cè)(https://nvidia-merlin.github.io/HugeCTR/master/hugectr_parameter_server.html#configuration-book) 。這本配置手冊(cè)總結(jié)了 Python API 和 JSON 格式的所有參數(shù)及其用法。
c. 與使用多模態(tài)數(shù)據(jù)相關(guān)的示例筆記本在標(biāo)題多模態(tài)示例筆記本下的導(dǎo)航中重新排布(https://nvidia-merlin.github.io/HugeCTR/master/notebooks/multi-modal -data/index.html),旨在提供更好的閱讀體驗(yàn)。
d. 我們更清楚地描述了SOK 提供的功能以及介紹了如何使用它們。
V3.7 版本新增內(nèi)容:
1. 第三代 Embedding 開發(fā)者預(yù)覽:
在這個(gè)版本中,我們引入了第三代 Embedding 的開發(fā)者預(yù)覽版本,與先前的 Embedding 相比,第三代 Embedding 主要有三個(gè)變化。首先,它允許用戶融合具有不同 Embedding 向量大小的 Embedding Table,從而提高了靈活性和性能。其次,它現(xiàn)在支持 concat combiner ,以及在同一個(gè) Embedding Table 上的不同 slot 來進(jìn)行查找。最后,Embedding Collection 的引入有力地支持了自定義 Embedding Table 的放置,包括數(shù)據(jù)并行和模型并行。通過提供一個(gè) JSON 文件,您可以根據(jù)您的指定配置更改 Embedding Table 的放置策略。更詳細(xì)的使用方法,清查閱實(shí)例
https://github.com/NVIDIA-Merlin/HugeCTR/tree/v3.7/test/embedding_collection_test 下的 dlrm_train.py 腳本。
2. 分級(jí)參數(shù)服務(wù)器性能改進(jìn):
a. Kafka:模型參數(shù)現(xiàn)在以節(jié)省帶寬的多路復(fù)用數(shù)據(jù)格式存儲(chǔ)在 Kafka 中,這種數(shù)據(jù)格式極大地提高了吞吐量。在我們的測試中,每個(gè) Kafka Broker 的傳輸速度高達(dá) 1.1 Gbps。
b. HashMap 后端:并行和單線程的 hashmap 實(shí)現(xiàn)已被新的統(tǒng)一實(shí)現(xiàn)取代。這個(gè)新的實(shí)現(xiàn)使用了一種新的基于內(nèi)存池的分配方法,它極大地提高了插入性能,而不會(huì)降低召回性能。與之前的實(shí)現(xiàn)相比,大批量插入操作的速度提高了 4 倍。
c. 壓縮的日志:用戶可以在 Triton 服務(wù)啟動(dòng)時(shí)配置多級(jí)日志輸出,從而提高在線推理的吞吐量。
d. 簡化配置:HugeCTR 后端將推理參數(shù)服務(wù)器相關(guān)配置(ps.json)和 Triton 配置(config.pbtxt)完全解耦,避免了 Triton 中的重復(fù)配置。
e. Embedding 更新的凍結(jié)功能:HugeCTR 后端已經(jīng)支持通過 Triton 的模型控制接口只更新模型的密集部分,從而避免 Embedding 的在重復(fù)在線更新。
3. 離線推理可用性的增強(qiáng):
線程池的大小現(xiàn)在可以配置了,這對(duì)于研究異步更新場景中的 Embedding Cache 性能十分有用。更多信息,請(qǐng)參閱分層參數(shù)服務(wù)器配置
https://nvidia-merlin.github.io/HugeCTR/master/hugectr_parameter_server.html#configuration。
4. 數(shù)據(jù)生成器性能提升:
現(xiàn)在可以指定 `num_threads` 參數(shù)以并行化 `Norm` 數(shù)據(jù)集生成。
5. 評(píng)估指標(biāo)改進(jìn):
a. 多節(jié)點(diǎn)環(huán)境中的 AverageLoss 性能提升
b. AUC 性能優(yōu)化和更安全的內(nèi)存管理
c. NDCG 和 SMAPE
6. 使用 Parquet 數(shù)據(jù)集的 Embedding Training Cache(ETC) 演示:
現(xiàn)在我們提供了一個(gè) keyset 提取腳本以生成 Parquet 數(shù)據(jù)集的 keyset文件。并且為用戶提供了一個(gè)使用 ETC 模式訓(xùn)練 Parquet 數(shù)據(jù)集的端到端演示: https://github.com/NVIDIA-Merlin/HugeCTR/blob/master/notebooks/embedding_training_cache_example.ipynb 。
7. 文檔更新:
HugeCTR 分層參數(shù)服務(wù)器數(shù)據(jù)庫后端 https://nvidia-merlin.github.io/HugeCTR/master/hugectr_parameter_server.html 的文檔詳細(xì)信息已更新,以保持一致性和清晰性。
8. 修復(fù)的問題:
a. 在使用 Parquet 數(shù)據(jù)類型時(shí),如果指定了 `slot_size_array`,則不再需要指定 `workspace_size_per_gpu_in_mb` 了。
b.如果您從頭開始構(gòu)建和安裝 HugeCTR,您可以指定 `CMAKE_INSTALL_PREFIX` 變量來指定 HugeCTR 的安裝目錄。
c. 解決了使用大量 GPU 進(jìn)行 SOK 訓(xùn)練時(shí) sok.init()的掛起問題:
https://github.com/NVIDIA-Merlin/HugeCTR/issues/261
https://github.com/NVIDIA-Merlin/HugeCTR/issues/302。
已知問題
以下是目前 HugeCTR 存在的已知問題,我們將在之后的版本中盡快修復(fù)。
HugeCTR 使用 NCCL 在 rank 之間共享數(shù)據(jù),并且 NCCL 可能需要共享系統(tǒng)內(nèi)存用于 IPC 和固定(頁面鎖定)系統(tǒng)內(nèi)存資源。在容器內(nèi)使用 NCCL 時(shí),建議您通過發(fā)出以下命令來增加這些資源 `-shm-size=1g -ulimit memlock=-1`
另見 NCCL 的 已知問題 https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/troubleshooting.html#sharing-data。還有 GitHub 問題 https://github.com/NVIDIA-Merlin/HugeCTR/issues/243 。
目前即使目標(biāo) Kafka broker 無響應(yīng), KafkaProducers 啟動(dòng)也會(huì)成功。為了避免與來自 Kafka 的流模型更新相關(guān)的數(shù)據(jù)丟失,您必須確保有足夠數(shù)量的 Kafka brokers 啟動(dòng)、正常工作并且可以從運(yùn)行 HugeCTR 的節(jié)點(diǎn)訪問。
文件列表中的數(shù)據(jù)文件數(shù)量應(yīng)不小于數(shù)據(jù)讀取器的數(shù)量。否則,不同的 data reader worker 將被映射到同一個(gè)文件,導(dǎo)致數(shù)據(jù)加載不會(huì)按預(yù)期進(jìn)行。
正則化器暫時(shí)不支持聯(lián)合損失訓(xùn)練。
用于 HugeCTR 訓(xùn)練樣本的 Criteo 1TB Click Logs 數(shù)據(jù)集目前不可用。在它再次可下載之前,您可以基于我們的合成數(shù)據(jù)集生成器運(yùn)行這些示例。有關(guān)詳細(xì)信息,請(qǐng)參閱 https://nvidia-merlin.github.io/HugeCTR/master/hugectr_user_guide.html#generating-synthetic-data-and-benchmarks 。
目前的數(shù)據(jù)生成器在生成 Parquet 數(shù)據(jù)集時(shí)會(huì)產(chǎn)生不一致的文件名,這會(huì)將導(dǎo)致使用合成的 Parquet 數(shù)據(jù)時(shí)報(bào)錯(cuò)。
原文標(biāo)題:HugeCTR v3.6 & v3.7 發(fā)布說明
文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4978瀏覽量
102988 -
gpu
+關(guān)注
關(guān)注
28文章
4729瀏覽量
128890 -
程序
+關(guān)注
關(guān)注
117文章
3785瀏覽量
81004
原文標(biāo)題:HugeCTR v3.6 & v3.7 發(fā)布說明
文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論