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

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

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

HugeCTR系列第2部分:訓(xùn)練大型深度學(xué)習(xí)推薦模型

星星科技指導(dǎo)員 ? 來(lái)源:NVIDIA ? 作者:Vinh Nguyen ? 2022-04-02 14:30 ? 次閱讀

在 Merlin HugeCTR 博文系列的第一部分,我們討論了訓(xùn)練大型深度學(xué)習(xí)推薦系統(tǒng)所面臨的挑戰(zhàn),以及 HugeCTR 如何解決這些問(wèn)題。

深度學(xué)習(xí)推薦系統(tǒng)可能包含超大型嵌入表,這些嵌入表可能會(huì)超出主機(jī)或 GPU 顯存。

我們專為推薦系統(tǒng)設(shè)計(jì)了 HugeCTR。

這是一個(gè)專門用于在 GPU 上訓(xùn)練和部署大型推薦系統(tǒng)的框架。

它為在多個(gè) GPU 或節(jié)點(diǎn)上分配單個(gè)嵌入表提供了不同的策略。

HugeCTR 是 NVIDIA Merlin] 的主要訓(xùn)練引擎,后者是一種 GPU 加速框架,旨在為推薦系統(tǒng)工作提供一站式服務(wù),從數(shù)據(jù)準(zhǔn)備、特征工程、多 GPU 訓(xùn)練到本地或云中的生產(chǎn)級(jí)推理。

訓(xùn)練性能和可擴(kuò)展性一直是 HugeCTR 的突出特性,為 MLPerf 訓(xùn)練 v0.7 推薦任務(wù)中的 NVIDIA 獲獎(jiǎng)作品提供支持,但我們近期采納了早期采用者和客戶的反饋,以幫助改進(jìn)易用性。

這篇博文將著重討論我們?cè)谝子眯苑矫娴某掷m(xù)承諾和近期改進(jìn)。

HugeCTR 是一種定制的深度學(xué)習(xí)框架,使用 CUDA C++ 編寫(xiě),專用于推薦系統(tǒng)。

起初,超參數(shù)和神經(jīng)網(wǎng)絡(luò)架構(gòu)在 JSON 配置中定義,然后通過(guò)命令行接口執(zhí)行。

近期,我們添加了 Python API,使其更易于使用。

表 1 匯總了命令行和 Python API 之間的主要區(qū)別。

我們建議使用 Python API,并將在后面部分中重點(diǎn)介紹。

但是,如果您對(duì)命令行界面感興趣,可以在此處找到一些示例。

表 1:HugeCTR 接口比較。

直接從 Python 配置和訓(xùn)練 HugeCTR

自 v2.3 版本起,HugeCTR 開(kāi)始提供易于使用的 Python 接口,用于定義模型架構(gòu)、超參數(shù)、數(shù)據(jù)加載程序以及訓(xùn)練循環(huán)。

此接口使 HugeCTR 更接近于數(shù)據(jù)科學(xué) Python 生態(tài)系統(tǒng)和實(shí)踐。

利用此接口的方法有兩種:

1. 類似于 Keras 的高級(jí) Python API

HugeCTR 現(xiàn)在提供了一個(gè)類似 Keras 的高級(jí) Python API 套件,用于定義模型、層、優(yōu)化器和執(zhí)行訓(xùn)練。

下文提供了一個(gè)示例代碼段。

如下所示,此 API 模擬熱門的 Keras 構(gòu)建-編譯-適應(yīng)范式。

2. 低級(jí) Python API

HugeCTR 低級(jí) Python API 允許從 JSON 文件讀取模型定義和優(yōu)化器配置,從而提供向后兼容性。

此外,此 API 允許使用 Python 循環(huán)不斷手動(dòng)執(zhí)行訓(xùn)練,從而獲得對(duì)訓(xùn)練的精細(xì)控制。

在本博客的動(dòng)手實(shí)踐部分中,我們將詳細(xì)介紹如何使用此 API 基于兩個(gè)數(shù)據(jù)集訓(xùn)練模型。

我們將在以下示例中演示此 API。

使用預(yù)訓(xùn)練的 HugeCTR 模型進(jìn)行預(yù)測(cè)

隨著 v3.0 版本的發(fā)布,HugeCTR 增加了對(duì)基于 GPU 的推理的支持,可生成許多批次的預(yù)測(cè)。

HugeCTR 將參數(shù)服務(wù)器、嵌入緩存和推理會(huì)話分離開(kāi)來(lái),以便更好地管理資源以及更有效地利用 GPU。

參數(shù)服務(wù)器用于加載和管理嵌入表。

對(duì)于超過(guò) GPU 顯存的嵌入表,參數(shù)服務(wù)器將嵌入表存儲(chǔ)在 CPU 內(nèi)存上。

嵌入緩存為模型提供嵌入查找服務(wù)?;顒?dòng)嵌入條目存儲(chǔ)在 GPU 顯存上,以便快速查找。

推理會(huì)話將這兩者與模型權(quán)重和其他參數(shù)結(jié)合起來(lái),以執(zhí)行前向傳播。

下文提供了初始化 HugeCTR 推理的函數(shù)調(diào)用序列示例。

我們將使用 config_file、embedding_cache 和 parameter_server 初始化 InferenceSession。

HugeCTR Python 推理 API 需要一個(gè) JSON 格式的推理配置文件,該文件類似于訓(xùn)練配置 JSON。

但是,在添加推理子句時(shí),我們需要省略優(yōu)化器和求解器子句。

我們還需要將輸出層更改為 Sigmoid 類型。

推理子句中的 dense_model_file 和 sparse_model_file 參數(shù)應(yīng)設(shè)置為指向由 HugeCTR 訓(xùn)練的模型文件(_dense_xxxx.model 和 0_sparse_xxxx.model)。

我們?cè)?Github 存儲(chǔ)庫(kù)中提供了多個(gè)完整示例:電子商務(wù)行為數(shù)據(jù)集和 Microsoft 新聞數(shù)據(jù)集。

我們一起來(lái)看一些示例

我們?cè)?Github 存儲(chǔ)庫(kù)中提供了 HugeCTR API 的多個(gè)端到端示例。這些筆記本基于實(shí)際數(shù)據(jù)集和應(yīng)用領(lǐng)域提供了完整的 Merlin 演練,從數(shù)據(jù)下載、預(yù)處理和特征工程到模型訓(xùn)練和推理。

1. 高級(jí) Python API 與 Criteo 數(shù)據(jù)集

Criteo 1TB Click Logs 數(shù)據(jù)集是公開(kāi)可用于推薦系統(tǒng)的大型數(shù)據(jù)集。

它包含約 40 億個(gè)示例的 1.3TB 未壓縮點(diǎn)擊日志。

在我們的示例中,數(shù)據(jù)集使用 Pandas 或 NVTabular 進(jìn)行預(yù)處理,以規(guī)范化連續(xù)特征,并對(duì)分類特征進(jìn)行分類。

之后,我們使用 HugeCTR 的高級(jí) API 訓(xùn)練深度和交叉神經(jīng)網(wǎng)絡(luò)架構(gòu)。

首先,我們定義求解器和優(yōu)化器,以使用它初始化 HugeCTR 模型。

然后,我們可以逐層添加,這類似于 TensorFlow Keras API。

最后,我們只需要調(diào)用 .fit() 函數(shù)。

2. 低級(jí) Python API 與電子商務(wù)行為數(shù)據(jù)集

在此演示筆記本中,我們將使用 REES46 營(yíng)銷平臺(tái)中的多品類商店的電子商務(wù)行為數(shù)據(jù)[/u]作為我們的數(shù)據(jù)集。

此筆記本基于 RecSys 2020 大會(huì)上的 NVIDIA 教程構(gòu)建而成。

我們使用 NVTabular 進(jìn)行特征工程和預(yù)處理,并使用 HugeCTR 訓(xùn)練 Facebook 深度學(xué)習(xí)推薦系統(tǒng)模型 (DLRM)。

我們針對(duì) Criteo 點(diǎn)擊日志數(shù)據(jù)集改編了一個(gè)示例 Json 配置文件。

需要編輯以與此數(shù)據(jù)集匹配的幾個(gè)參數(shù)為:

slot_size_array:分類變量的基數(shù),可以從 NVTabular 工作流程對(duì)象獲取。

dense_dim:密集特征的數(shù)量

slot_num:分類變量的數(shù)量

以下 Python 代碼會(huì)按批執(zhí)行參數(shù)更新。

同樣,我們針對(duì) Microsoft 新聞數(shù)據(jù)集提供了第 2 個(gè)示例。

嘗試使用 HugeCTR 的命令行和 Python API 訓(xùn)練推薦系統(tǒng)管線

我們致力于提供用戶友好且易于使用的體驗(yàn),以簡(jiǎn)化推薦系統(tǒng)工作流程。

我們近期根據(jù)早期采用者和客戶的反饋對(duì) HugeCTR 接口進(jìn)行了改進(jìn)。

HugeCTR Github 存儲(chǔ)庫(kù)提供了有關(guān)如何基于多個(gè)公共數(shù)據(jù)集(從小型到大型數(shù)據(jù)集都包含在內(nèi))使用此新接口的示例。

我們想邀請(qǐng)您針對(duì)您自己的領(lǐng)域改編這些示例,并見(jiàn)證 Merlin 的處理能力。

和往常一樣,我們希望通過(guò) Github 以及其他渠道獲得您的反饋。

這是我們 HugeCTR 系列中關(guān)于“使用 HugeCTR 的新 API 訓(xùn)練大型深度學(xué)習(xí)推薦系統(tǒng)模型”的第二篇博文。

下一篇博文將討論如何部署到生產(chǎn)。

關(guān)于作者

Vinh Nguyen 是一位深度學(xué)習(xí)的工程師和數(shù)據(jù)科學(xué)家,發(fā)表了 50 多篇科學(xué)文章,引文超過(guò) 2500 篇。在 NVIDIA ,他的工作涉及廣泛的深度學(xué)習(xí)和人工智能應(yīng)用,包括語(yǔ)音、語(yǔ)言和視覺(jué)處理以及推薦系統(tǒng)。

審核編輯:郭婷

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

    關(guān)注

    14

    文章

    4856

    瀏覽量

    102711
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1473

    瀏覽量

    61750
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5466

    瀏覽量

    120891
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    直播預(yù)約 |數(shù)據(jù)智能系列講座4期:預(yù)訓(xùn)練的基礎(chǔ)模型下的持續(xù)學(xué)習(xí)

    鷺島論壇數(shù)據(jù)智能系列講座4期「預(yù)訓(xùn)練的基礎(chǔ)模型下的持續(xù)學(xué)習(xí)」10月30日(周三)20:00精彩開(kāi)播期待與您云相聚,共襄學(xué)術(shù)盛宴!|直播信息
    的頭像 發(fā)表于 10-18 08:09 ?134次閱讀
    直播預(yù)約 |數(shù)據(jù)智能<b class='flag-5'>系列</b>講座<b class='flag-5'>第</b>4期:預(yù)<b class='flag-5'>訓(xùn)練</b>的基礎(chǔ)<b class='flag-5'>模型</b>下的持續(xù)<b class='flag-5'>學(xué)習(xí)</b>

    如何進(jìn)行電源設(shè)計(jì)–2部分

    電子發(fā)燒友網(wǎng)站提供《如何進(jìn)行電源設(shè)計(jì)–2部分.pdf》資料免費(fèi)下載
    發(fā)表于 09-07 11:09 ?0次下載
    如何進(jìn)行電源設(shè)計(jì)–<b class='flag-5'>第</b><b class='flag-5'>2</b><b class='flag-5'>部分</b>

    電源設(shè)計(jì)方法-5部分

    電子發(fā)燒友網(wǎng)站提供《電源設(shè)計(jì)方法-5部分.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 14:58 ?0次下載
    電源設(shè)計(jì)方法-<b class='flag-5'>第</b>5<b class='flag-5'>部分</b>

    電源設(shè)計(jì)方法-6部分

    電子發(fā)燒友網(wǎng)站提供《電源設(shè)計(jì)方法-6部分.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 14:57 ?0次下載
    電源設(shè)計(jì)方法-<b class='flag-5'>第</b>6<b class='flag-5'>部分</b>

    電源設(shè)計(jì)方法-3部分

    電子發(fā)燒友網(wǎng)站提供《電源設(shè)計(jì)方法-3部分.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 14:56 ?0次下載
    電源設(shè)計(jì)方法-<b class='flag-5'>第</b>3<b class='flag-5'>部分</b>

    電源設(shè)計(jì)方法-2部分

    電子發(fā)燒友網(wǎng)站提供《電源設(shè)計(jì)方法-2部分.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 11:42 ?1次下載
    電源設(shè)計(jì)方法-<b class='flag-5'>第</b><b class='flag-5'>2</b><b class='flag-5'>部分</b>

    電源設(shè)計(jì)方法-1部分

    電子發(fā)燒友網(wǎng)站提供《電源設(shè)計(jì)方法-1部分.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 11:40 ?0次下載
    電源設(shè)計(jì)方法-<b class='flag-5'>第</b>1<b class='flag-5'>部分</b>

    電源設(shè)計(jì)方法-4部分

    電子發(fā)燒友網(wǎng)站提供《電源設(shè)計(jì)方法-4部分.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 11:39 ?0次下載
    電源設(shè)計(jì)方法-<b class='flag-5'>第</b>4<b class='flag-5'>部分</b>

    深度學(xué)習(xí)模型中的過(guò)擬合與正則化

    測(cè)試數(shù)據(jù)或新數(shù)據(jù)上表現(xiàn)不佳的現(xiàn)象。為了解決這個(gè)問(wèn)題,正則化(Regularization)技術(shù)應(yīng)運(yùn)而生,成為深度學(xué)習(xí)中不可或缺的一部分。本文將從過(guò)擬合的原因、表現(xiàn)、正則化的原理、方法及其在深度
    的頭像 發(fā)表于 07-09 15:56 ?678次閱讀

    llm模型訓(xùn)練一般用什么系統(tǒng)

    。 硬件系統(tǒng) 1.1 GPU(圖形處理器) 在訓(xùn)練大型語(yǔ)言模型時(shí),GPU是首選的硬件設(shè)備。相比于CPU,GPU具有更高的并行處理能力,可以顯著提高訓(xùn)練速度。目前,NVIDIA的Tesl
    的頭像 發(fā)表于 07-09 10:02 ?331次閱讀

    深度學(xué)習(xí)模型訓(xùn)練過(guò)程詳解

    深度學(xué)習(xí)模型訓(xùn)練是一個(gè)復(fù)雜且關(guān)鍵的過(guò)程,它涉及大量的數(shù)據(jù)、計(jì)算資源和精心設(shè)計(jì)的算法。訓(xùn)練一個(gè)深度
    的頭像 發(fā)表于 07-01 16:13 ?1023次閱讀

    如何優(yōu)化深度學(xué)習(xí)模型?

    因?yàn)榇?b class='flag-5'>部分人使用的模型都是預(yù)訓(xùn)練模型,使用的權(quán)重都是在大型數(shù)據(jù)集上訓(xùn)練好的
    發(fā)表于 01-29 14:25 ?2854次閱讀
    如何優(yōu)化<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>模型</b>?

    如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)工件切割點(diǎn)位置預(yù)測(cè)

    Hello大家好,今天給大家分享一下如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)工件切割點(diǎn)位置預(yù)測(cè),主要是通過(guò)對(duì)YOLOv8姿態(tài)評(píng)估模型在自定義的數(shù)據(jù)集上
    的頭像 發(fā)表于 12-22 11:07 ?726次閱讀
    如何基于<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>實(shí)現(xiàn)工件切割點(diǎn)位置預(yù)測(cè)

    如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)圓檢測(cè)與圓心位置預(yù)測(cè)

    Hello大家好,今天給大家分享一下如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)圓檢測(cè)與圓心位置預(yù)測(cè),主要是通過(guò)對(duì)YOLOv8姿態(tài)評(píng)估模型在自定義的數(shù)據(jù)集上
    的頭像 發(fā)表于 12-21 10:50 ?1673次閱讀
    如何基于<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>實(shí)現(xiàn)圓檢測(cè)與圓心位置預(yù)測(cè)

    深度學(xué)習(xí)如何訓(xùn)練出好的模型

    算法工程、數(shù)據(jù)派THU深度學(xué)習(xí)在近年來(lái)得到了廣泛的應(yīng)用,從圖像識(shí)別、語(yǔ)音識(shí)別到自然語(yǔ)言處理等領(lǐng)域都有了卓越的表現(xiàn)。但是,要訓(xùn)練出一個(gè)高效準(zhǔn)確的深度學(xué)
    的頭像 發(fā)表于 12-07 12:38 ?1036次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>如何<b class='flag-5'>訓(xùn)練</b>出好的<b class='flag-5'>模型</b>