99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

NVIDIA Merlin分布式嵌入使快速、TB級推薦培訓變得簡單

星星科技指導員 ? 來源:NVIDIA ? 作者:NVIDIA ? 2022-10-11 10:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入在深度學習推薦模型中起著關(guān)鍵作用。它們用于將數(shù)據(jù)中的編碼分類輸入映射到可由數(shù)學層或多層感知器( MLP )處理的數(shù)值。

嵌入通常構(gòu)成深度學習推薦模型中的大部分參數(shù),并且可以相當大,甚至達到 TB 級。在訓練期間,很難將它們放入單個 GPU 的內(nèi)存中。

因此,現(xiàn)代推薦者可能需要模型并行和數(shù)據(jù)并行分布式訓練方法的組合,以實現(xiàn)合理的訓練時間和可用 GPU 計算的最佳利用。

NVIDIA Merlin 分布式嵌入 ,在 TensorFlow 2 中,一個用于訓練大型基于嵌入的(例如,推薦者)模型的庫使您只需幾行代碼即可輕松完成。

背景

通過 GPU 上的數(shù)據(jù)并行分布式訓練,在每個 GPU 工作人員上復制整個模型。在訓練過程中,一批數(shù)據(jù)在多個 GPU 中分割,每個設備獨立操作其自己的數(shù)據(jù)碎片。

這允許將計算擴展到更大批量的更高數(shù)據(jù)量。在反向傳播期間計算的梯度使用減少操作(例如, horovod.tensorflow.allreduce ) 用于同步參數(shù)更新。

通過模型并行分布式訓練,模型參數(shù)在不同工作人員之間進行分割。這是一種更適合分發(fā)大型嵌入表的方法。訓練需要使用全對全通信原語(例如, horovod.tensorflow.alltoall ) 使得工人可以訪問不在其分區(qū)中的參數(shù)。

在之前的相關(guān)文章中, 在 TensorFlow 2 中使用 100B +參數(shù)在 DGX A100 上訓練推薦系統(tǒng) , Tomasz 討論了如何為 1130 億參數(shù)分配嵌入 DLRM 跨多個 NVIDIA GPU 的模型有助于在僅 CPU 的解決方案上實現(xiàn) 672 倍的加速。這一重大改進可能會將訓練時間從幾天縮短到幾分鐘!這是通過模型并行分布嵌入表和通過數(shù)據(jù)并行執(zhí)行小得多的數(shù)學密集型 MLP 層計算來實現(xiàn)的。

與將嵌入存儲在 CPU 內(nèi)存中相比,這種混合方法使您能夠使用 GPU 內(nèi)存的高內(nèi)存帶寬進行內(nèi)存綁定嵌入查找。它還使用幾個 GPU 設備中的計算能力加速 MLP 層。作為參考 NVIDIA A100-80GB GPU 具有帶寬超過 2 TB / s 的 80 GB HBM2 存儲器)。

poYBAGNE2Y2ADFHDAANKw2kfFzg615.png

圖 1.用于訓練大型推薦系統(tǒng)的通用“混合并行”方法

嵌入表可以分為“表方式”(例如,嵌入表 0 和 N )、“列方式”(例如嵌入表 2 )或“行方式”。跨所有 GPU 復制 MLP 層。數(shù)字特征可以直接輸入 MLP 層,并且在圖中未示出。

然而,實現(xiàn)這種復雜的混合并行訓練方法并不簡單,需要領(lǐng)域?qū)<以O計幾百行低級代碼來開發(fā)和優(yōu)化訓練。

為了使其更廣泛地使用 NVIDIA Merlin 分布式嵌入 該庫提供了一個易于使用的包裝器,只需三行 Python 代碼即可在 TensorFlow 2 中民主化模型并行性。它提供了一個可伸縮的模型并行包裝器 分發(fā)嵌入表 除了一些 高效嵌入操作 這涵蓋并擴展了 TensorFlow 的嵌入功能。下面是它如何實現(xiàn)混合并行。

分布式并行模型

NVIDIA Merlin 分布式嵌入提供了 distributed_embeddings.dist_model_parallel 單元。它有助于在多個 GPU 工作者之間分發(fā)嵌入,而無需任何復雜的代碼來處理與原語的跨工作者通信,如 all2all 下面的代碼示例顯示了此 API 的用法:

import dist_model_parallel as dmp

class MyEmbeddingModel(tf.keras.Model):
  def  __init__(self, table_sizes):
    ...
    self.embedding_layers = [tf.keras.layers.Embedding(input_dim, output_dim) for input_dim, output_dim in table_sizes]
    # 1. Add this line to wrap list of embedding layers used in the model
    self.embedding_layers = dmp.DistributedEmbedding(self.embedding_layers)
  def call(self, inputs):
    # embedding_outputs = [e(i) for e, i in zip(self.embedding_layers, inputs)]
    embedding_outputs = self.embedding_layers(inputs)
    ...

要使用 Horovod 以數(shù)據(jù)并行方式運行密集層,請?zhí)鎿QHorovod’sDistributed GradientTapebroadcast方法及其在分布式嵌入中的等效。以下示例直接取自 Horovod 文檔,并進行了相應修改。

@tf.function
def training_step(inputs, labels, first_batch):
  with tf.GradientTape() as tape:
    probs = model(inputs)
    loss_value = loss(labels, probs)

  # 2. Change Horovod Gradient Tape to dmp tape
  # tape = hvd.DistributedGradientTape(tape)
  tape = dmp.DistributedGradientTape(tape)
  grads = tape.gradient(loss_value, model.trainable_variables)
  opt.apply_gradients(zip(grads, model.trainable_variables))

  if first_batch:
    # 3. Change Horovod broadcast_variables to dmp's
    # hvd.broadcast_variables(model.variables, root_rank=0)
    dmp.broadcast_variables(model.variables, root_rank=0)
  return loss_value

通過這些微小的改變,您就可以使用混合并行訓練步驟了!

我們還提供了以下完整示例: 使用 Criteo 1TB 點擊日志數(shù)據(jù)訓練 DLRM 模型 以及 合成數(shù)據(jù) 這將模型尺寸擴展到 22.8 TiB 。

性能

為了證明使用 NVIDIA Merlin 分布式嵌入的好處,我們展示了在 Criteo 1TB 數(shù)據(jù)集上訓練的 DLRM 模型的基準測試,以及各種具有多達 3 個 TiB 嵌入表大小的合成模型。

Criteo 數(shù)據(jù)集上的 DLRM 基準

基準測試表明,我們使用更簡單的 API 保持了類似于專家工程代碼的性能。這個 NVIDIA 深度學習示例 DLRM 使用 TensorFlow 2 的代碼現(xiàn)在也已更新,以利用 NVIDIA Merlin 分布式嵌入的混合并行訓練。更多信息,請參閱我們之前的文章, 在 TensorFlow 2 中使用 100B +參數(shù)在 DGX A100 上訓練推薦系統(tǒng) 。

這個 基準 自述部分提供了對性能數(shù)字的更多了解。

具有 1130 億個參數(shù)( 421 個 GiB 模型大小)的 DLRM 模型在 Criteo TB 點擊日志 數(shù)據(jù)集,三種不同的硬件設置:

僅 CPU 的解決方案。

單 – GPU 解決方案,其中 CPU 內(nèi)存用于存儲最大的嵌入表。

使用 NVIDIA DGX A100-80GB 和 8 GPU 的混合并行解決方案。這利用了 NVIDIA Merlin 分布式嵌入提供的模型并行包裝器和嵌入 API 。

我們觀察到, DGX-A100 上的分布式嵌入解決方案比僅使用 CPU 的解決方案提供了驚人的 683 倍的加速!我們還注意到,與單一 GPU 解決方案相比,性能有了顯著改善。這是因為在 GPU 內(nèi)存中保留所有嵌入消除了通過 CPU-GPU 接口嵌入查找的開銷。

綜合模型基準

為了進一步演示解決方案的可伸縮性,我們創(chuàng)建了不同大小的合成 DLRM 模型(表 2 )。

每個合成模型使用一個或多個 DGX-A100-80GB 節(jié)點進行訓練,全局批量大小為 65536 ,并使用 Adagrad 優(yōu)化器。從表 3 中可以看出, NVIDIA Merlin 分布式嵌入可以在數(shù)百 GPU 上輕松訓練 TB 級模型。

另一方面,與傳統(tǒng)的數(shù)據(jù)并行相比,即使對于可以容納在單個 GPU 中的模型,分布式嵌入的模型并行仍然提供了多 GPU 的顯著加速。這如表 4 所示,其中一個微型模型在 DGX A100-80GB 上運行。

本實驗使用了 65536 的全局批量和 Adagrad 優(yōu)化器。

結(jié)論

在這篇文章中,我們介紹了 NVIDIA Merlin 分布式嵌入庫,僅需幾行代碼即可在 NVIDIA GPU 上實現(xiàn)基于嵌入的深度學習模型的可擴展和高效模型并行訓練。

關(guān)于作者

Shashank Verma 是 NVIDIA 的一名深入學習的技術(shù)營銷工程師。他負責開發(fā)和展示各種深度學習框架中以開發(fā)人員為中心的內(nèi)容。他從威斯康星大學麥迪遜分校獲得電氣工程碩士學位,在那里他專注于計算機視覺、數(shù)據(jù)科學的安全方面和 HPC 。

Wenwen Gao 是 NVIDIA Merlin 的高級產(chǎn)品經(jīng)理,擁有 Amazon 和其他技術(shù)公司的產(chǎn)品管理經(jīng)驗,專注于個性化和推薦。她擁有多倫多大學計算機科學學士學位和麻省理工學院斯隆管理學院工商管理碩士學位。

Hao Wu 是 NVIDIA 的高級 GPU 計算架構(gòu)師。他在完成博士學位后于 2011 年加入 NVIDIA 計算架構(gòu)組。在中國科學院。近年來, Hao 的技術(shù)重點是將低精度應用于深度神經(jīng)網(wǎng)絡訓練和推理。

Deyu Fu 是 NVIDIA 深度學習框架團隊的高級開發(fā)技術(shù)工程師,負責加速軟件堆棧 CUDA 內(nèi)核、數(shù)學、通信、框架和模型的 DL 培訓工作。他最近專注于 NVIDIA Merlin 分布式嵌入和推薦系統(tǒng)。

Tomasz Grel 是一名深度學習工程師。在NVIDIA ,他專注于確保眾多推薦系統(tǒng)的質(zhì)量和執(zhí)行速度,包括 NCF 、 VAE-CF 和 DLRM 。

審核編輯:郭婷

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

    關(guān)注

    14

    文章

    5309

    瀏覽量

    106445
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4949

    瀏覽量

    131275
  • 深度學習
    +關(guān)注

    關(guān)注

    73

    文章

    5561

    瀏覽量

    122805
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    分布式軟件系統(tǒng)

    一個組織機構(gòu)需要增加新的相對自主的組織單位來擴充機構(gòu),則分布式數(shù)據(jù)庫系統(tǒng)可以在對當前機構(gòu)影響最小的情況下進行擴充。 3、均衡負載的需要。數(shù)據(jù)的分解采用使局部應用達到最大,這使得各處理機之間的相互干擾
    發(fā)表于 07-22 14:53

    LED分布式恒流原理

    需要恒流,但是電流的大小取決于應用環(huán)境,LED照明智能化發(fā)展是關(guān)鍵,分布式恒流技術(shù)充份預留智能化接口。在分布式LED驅(qū)動設計中,驅(qū)動回搜、色溫可調(diào)、灰度控制都要變得方便。這是分布式恒流
    發(fā)表于 03-09 16:47

    使用分布式I/O進行實時部署系統(tǒng)的設計

    的同時,不犧牲現(xiàn)有實時系統(tǒng)確定性。在沒有實時通信協(xié)議的情況下,你可能需要借助于數(shù)字I/O模塊的共享時鐘或硬件觸發(fā)器對多個實時控制器進行同步。但隨著添加的控制器越來越多,同步的復雜度使工作變得很費時而且很笨拙,特別是需要分布式I/
    發(fā)表于 03-12 17:47

    基于分布式調(diào)用鏈監(jiān)控技術(shù)的全息排查功能

    解決的問題和主要的使用場景,下文在這方面簡單展開做一下介紹。分布式鏈路追蹤概要介紹和其面臨的主要問題分布式調(diào)用鏈是微服務時代下的監(jiān)控必備利器。該技術(shù)理論基礎(chǔ)建立在Google Dapper論文基礎(chǔ)之上,主要運用于
    發(fā)表于 08-07 17:02

    如何設計分布式干擾系統(tǒng)?

    ”的電子戰(zhàn)系統(tǒng),共同完成對敵信號的探測、定位、干擾任務。因此,嵌入式網(wǎng)關(guān)是分布式干擾系統(tǒng)研究的關(guān)鍵技術(shù)之一。目前國內(nèi)對分布式干擾系統(tǒng)的研究還停留在理論基礎(chǔ)上,而對其關(guān)鍵技術(shù)的研究不多。怎么利用
    發(fā)表于 08-08 06:57

    分布式系統(tǒng)的優(yōu)勢是什么?

    當討論分布式系統(tǒng)時,我們面臨許多以下這些形容詞所描述的 同類型: 分布式的、刪絡的、并行的、并發(fā)的和分散的。分布式處理是一個相對較新的領(lǐng)域,所以還沒有‘致的定義。與順序計算相比、并行的、并發(fā)的和
    發(fā)表于 03-31 09:01

    HarmonyOS分布式數(shù)據(jù)庫,為啥這么牛?

    考慮到照片數(shù)據(jù)在多設備間是怎么存儲、怎么共享和怎么訪問? HarmonyOS 分布式數(shù)據(jù)管理的目標就是為開發(fā)者在系統(tǒng)層面解決這些問題,讓應用開發(fā)變得簡單。 它能夠保證多設備間的數(shù)據(jù)安全,解決多設備
    發(fā)表于 11-19 15:38

    分布式嵌入式系統(tǒng)的過程中利用Jini技術(shù)有什么優(yōu)勢?

    在構(gòu)建分布式嵌入式系統(tǒng)的過程中利用Jini技術(shù),不但可以降低系統(tǒng)的開發(fā)難度、實現(xiàn)嵌入式環(huán)境中基于服務的互操作,而且可使系統(tǒng)具有很好的靈活性和可靠性。
    發(fā)表于 04-28 06:46

    【木棉花】:簡單分布式任務調(diào)度

    更新。此次是對實現(xiàn)分布式任務調(diào)度的一個分享,以一個簡單的案例來講解。(? ?_?)?概述正文部分分為兩個部分。O(∩_∩)O第一部分是對分布式任務調(diào)度的簡單概述,第二部分是
    發(fā)表于 09-03 14:34

    如何高效完成HarmonyOS分布式應用測試?

    Testing從測試標準、測試服務及云測服務三個方面提供分布式應用測試的解決方案。下面,我們將逐一介紹。1. 測試標準測試標準定義APP的入門測試要求,重點覆蓋消費者用戶最關(guān)心的HarmonyOS特征
    發(fā)表于 12-13 18:07

    分布式電源分布式電源裝置是指什么?有何特點

    區(qū)的電力供應,節(jié)約輸變電投資,提高供電可靠性等。含義簡明的分布式電源定義為:35kV及以下電壓等級的電源,不能直接連接到中央輸電系統(tǒng),主要包括發(fā)電設備和儲能裝置。特點分布式能源系統(tǒng)不是簡單地采用傳統(tǒng)的發(fā)電技術(shù),而是基于自動控制系
    發(fā)表于 12-29 06:51

    快速在線分布式對偶平均優(yōu)化算法

    為提高分布式在線優(yōu)化算法的收斂速度,對底層網(wǎng)絡拓撲依次添邊,提出一種快速的一階分布式在線對偶平均優(yōu)化( FODD)算法。首先,對于分布式在線優(yōu)化問題,運用添邊方法
    發(fā)表于 01-22 14:45 ?5次下載
    <b class='flag-5'>快速</b>在線<b class='flag-5'>分布式</b>對偶平均優(yōu)化算法

    基于Jini互聯(lián)技術(shù)實現(xiàn)分布式嵌入式系統(tǒng)的設計

    系統(tǒng)的開發(fā)。在構(gòu)建分布式嵌入式系統(tǒng)的過程中利用Jini互聯(lián)技術(shù),不但可以降低系統(tǒng)開發(fā)難度,實現(xiàn)嵌入式環(huán)境中基于服務的互操作,而且還可提高整個系統(tǒng)的靈活性和可靠性。因此Jini技術(shù)推出
    的頭像 發(fā)表于 09-11 17:37 ?3571次閱讀
    基于Jini互聯(lián)技術(shù)實現(xiàn)<b class='flag-5'>分布式</b><b class='flag-5'>嵌入式</b>系統(tǒng)的設計

    用于分布式負載點應用的簡單電源跟蹤

    用于分布式負載點應用的簡單電源跟蹤
    發(fā)表于 03-21 00:52 ?7次下載
    用于<b class='flag-5'>分布式</b>負載點應用的<b class='flag-5'>簡單</b>電源跟蹤

    如何使用NVIDIA Merlin推薦系統(tǒng)框架實現(xiàn)嵌入優(yōu)化

    HugeCTR TensorFlow 嵌入插件今天可以從 HugeCTR GitHub 存儲庫以及 NGC NVIDIA Merlin TensorFlow 容器獲得。如果您是 TensorFlow
    的頭像 發(fā)表于 04-02 14:18 ?2232次閱讀
    如何使用<b class='flag-5'>NVIDIA</b> <b class='flag-5'>Merlin</b>推薦系統(tǒng)框架實現(xiàn)<b class='flag-5'>嵌入</b>優(yōu)化