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

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

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

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

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

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

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

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

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

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

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

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

這篇博文將著重討論我們在易用性方面的持續(xù)承諾和近期改進(jìn)。

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

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

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

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

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

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

表 1:HugeCTR 接口比較。

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

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

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

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

1. 類似于 Keras 的高級 Python API

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

下文提供了一個示例代碼段。

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

2. 低級 Python API

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

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

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

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

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

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

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

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

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

嵌入緩存為模型提供嵌入查找服務(wù)。活動嵌入條目存儲在 GPU 顯存上,以便快速查找。

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

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

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

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

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

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

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

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

我們一起來看一些示例

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

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

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

它包含約 40 億個示例的 1.3TB 未壓縮點擊日志。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

和往常一樣,我們希望通過 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é)文章,引文超過 2500 篇。在 NVIDIA ,他的工作涉及廣泛的深度學(xué)習(xí)和人工智能應(yīng)用,包括語音、語言和視覺處理以及推薦系統(tǒng)。

審核編輯:郭婷

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

    關(guān)注

    14

    文章

    4818

    瀏覽量

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

    關(guān)注

    2

    文章

    1468

    瀏覽量

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

    關(guān)注

    73

    文章

    5442

    瀏覽量

    120800
收藏 人收藏

    評論

    相關(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精彩開播期待與您云相聚,共襄學(xué)術(shù)盛宴!|直播信息
    的頭像 發(fā)表于 10-18 08:09 ?88次閱讀
    直播預(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è)計–2部分

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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