色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

SOK的Embedding計算過程及原理詳解

NVIDIA英偉達企業解決方案 ? 來源:NVIDIA英偉達企業解決方案 ? 作者:NVIDIA英偉達企業解 ? 2022-06-14 11:34 ? 次閱讀

在上期文章中,我們對 HugeCTR Sparse Operation Kit (以下簡稱SOK) 的基本功能,性能,以及 API 用法做了初步的介紹,相信大家對如何使用 SOK 已經有了基本的了解。在這期文章中,我們將從在 TensorFlow 上使用 SOK 時常見的“數據并行-模型并行-數據并行”流程入手,帶大家詳細了解 SOK 的原理。

1f4928c8-eb09-11ec-ba43-dac502259ad0.png

SOK 的 Embedding 計算主要分為三個階段:input-dispatcher -> lookup -> output-dispatcher,接下來我們將以 all-to-all 稠密 Embedding 層為例,帶大家梳理各個階段的計算過程。

1. Input Dispatcher

Input Dispatcher 的職責是將數據以并行的形式的輸入,分配到各個 GPU 上。總共分為以下幾個步驟:

第一步:對每個 GPU 接收到的數據并行的 category key,按照 key 求余 GPU 的數量計算出其對應的 GPU ID,并分成和 GPU 數量相同的組;同時計算出每組內有多少 key。例如圖 2 中,GPU 的總數為 2,GPU 0 獲取的輸入為 [0, 1, 2, 3],根據前面所講的規則,它將會被分成 [0, 2], [1, 3]兩組。注意,在這一步,我們還會為每個分組產生一個 order 信息,用于 output dispacher 的重排序。

第二步:通過 NCCL 交換各個 GPU 上每組 key 的數量。由于每個 GPU 獲取的輸入,按照 key 求余 GPU 數量不一定能夠均分,如圖 3 所示,提前在各個 GPU 上交換 key 的總數,可以在后面交換 key 的時候減少通信量。

1f8b1b0c-eb09-11ec-ba43-dac502259ad0.png

第三步:使用 NCCL,在各個 GPU 間按照 GPU ID 交換前面分好的各組 key,如圖 4 所示。

1f971a24-eb09-11ec-ba43-dac502259ad0.png

Step4:對交換后的所有 key 除以 GPU 總數,這一步是為了讓每個 GPU 上的 key的數值范圍都小于 embedding table size 整除 GPU 的數量,保證后續在每個 worker 上執行 lookup 時不會越界,結果如圖 5 所示。

總而言之,經過上面 4 個步驟,我們將數據并行地輸入,按照其求余 GPU 數量的結果,分配到了不同對應的 GPU 上,完成了 input key 從數據并行到模型并行的轉化。雖然用戶往每個 GPU 上輸入的都可以是 embedding table 里的任何一個 key,但是經過上述的轉化過程后,每個 GPU 上則只需要處理 embedding table 里 1/GPU_NUMBER 的 lookup。

1fc5d65c-eb09-11ec-ba43-dac502259ad0.png

2. Lookup

Lookup 的功能比較簡單,和單機的 lookup 的行為相同,就是用 input dispatcher 輸出的 key,在本地的 embedding table 里查詢出對應的 embedding vector,我們同樣用一個簡單的圖來舉例。注意下圖中 Global Index 代表每個 embedding vector 在實際的 embedding table 中對應的 key,而 Index 則是當前 GPU 的“部分”embedding table 中的 key。

201f419c-eb09-11ec-ba43-dac502259ad0.png

3. Output Dispatcher

和 input dispatcher 的功能對應,output dispatcher 是將 embedding vector 按照和 input dispatcher 相同的路徑、相反的方向將 embedding vector 返回給各個 GPU,讓模型并行的 lookup 結果重新變成數據并行。

第一步:復用 input dispatcher 中的分組信息,將 embedding vector 進行分組,如圖 7 所示。

204b0610-eb09-11ec-ba43-dac502259ad0.png

第二步:通過 NCCL 將 embedding vector 按 input dispatcher 的路徑返還,如圖 8 所示。

2078053e-eb09-11ec-ba43-dac502259ad0.png

第三步:復用 input dispatcher 第一步驟的結果,將 embedding vector 進行重排序,讓其和輸入的 key 順序保持一致,如圖 9 所示。

20ac5ea6-eb09-11ec-ba43-dac502259ad0.png

可以看到, GPU 0 上輸入的[0, 1, 3, 5],最終被轉化為了[0.0, …], [0.1, …], [0.3, …], [0.5, …] 四個 embedding vector,雖然其中有 3 個 embedding vector 被存儲在 GPU 1 上,但是以一種對用戶透明的方式,在 GPU 0 上拿到了對應的 vector。在用戶看來,就好像整個 embedding table 都存在 GPU 0 上一樣。

4. Backward

在 backward 中,每個 GPU 會得到和 input 的 key 所對應的梯度,也就是數據并行的梯度。此時的梯度對應的 embedding vector 可能并不在當前 GPU 上,所以還需要做一步梯度的交換。這個步驟和 output dispatcher 的第三步驟中的工作流程的路徑完全相同,只是方向相反。仍然以前面的例子舉例,GPU 0 獲取了 key [0, 1, 3, 5]的梯度,我們把它們分別叫做 grad0, grad1, grad3, grad5;由于 grad1,grad3,grad5 對應的 embedding vector 在 GPU 1 上,所以我們把它們和 GPU 1 上的 grad4, grad6 進行交換,最終在得到了 GPU 0 上的梯度為[grad0, grad4, grad6],GPU 1 上的梯度為[grad1, grad3, grad5, grad5, gard7]。

結語

以上就是 SOK 將數據并行轉化為模型并行再轉回數據并行的過程,這整個流程都被封裝在了 SOK 的 Embedding Layer 中,用戶可以直接調用相關的 Python API 即可輕松完成訓練。

原文標題:Merlin HugeCTR Sparse Operation Kit 系列之二

文章出處:【微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅

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

    關注

    14

    文章

    5013

    瀏覽量

    103246
  • 計算
    +關注

    關注

    2

    文章

    450

    瀏覽量

    38833
  • SOK
    SOK
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6338

原文標題:Merlin HugeCTR Sparse Operation Kit 系列之二

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ADS1299器件手冊里的這個衰減怎么計算出來的?

    我的計算過程:33uV x 10.3/(952+10.3) = 0.35uV ?而不是要求的3.5uV,請指教
    發表于 11-18 06:41

    CPK為什么要大于1.33?一文詳解CPK計算

    原文標題:CPK為什么要大于1.33?一文詳解CPK計算
    的頭像 發表于 11-01 11:08 ?389次閱讀

    求助,TAS5731關于DRC和EQ的寄存器的計算和設置問題?

    TAS5731的文檔只描述了寄存器地址,但是并沒有說明這些寄存器如何計算設置,文檔里說明參考EVM的設計手冊,可是這手冊中也沒有具體計算和設置說明,只是說需要通過GE軟件計算。并沒有計算過程
    發表于 10-28 08:29

    計算滯回比較器的上下門限電壓

    請教各位大佬,如圖是過欠壓保護電路,過壓部分和欠壓部分的上下門限電壓怎么計算呢?以及二極管D6、D8的作用是什么? 如果能給出詳細計算過程那就太感激不盡了!??!
    發表于 09-20 15:44

    求助,以下恒流源電路Io的計算表達式怎么計算?

    這個恒流源電路Io的計算表達式怎么計算,求給出詳細計算過程
    發表于 08-22 08:16

    正反饋式恒流源電路原理是什么?

    想問一下各位,這個的原理是什么?如果可以的話,能否給一個計算過程?
    發表于 08-13 07:14

    SOK在手機行業的應用案例

    通過封裝 NVIDIA Merlin HugeCTR,Sparse Operation Kit(以下簡稱 SOK)使得 TensorFlow 用戶可以借助 HugeCTR 的一些相關特性和優化加速 GPU 上的分布式 Embedding 訓練。
    的頭像 發表于 07-25 10:01 ?368次閱讀
    <b class='flag-5'>SOK</b>在手機行業的應用案例

    【《計算》閱讀體驗】量子計算

    相互作用,其中大部分振幅相互抵消,只留下幾個答案,甚至一個答案。測量這個答案,或者重等計算過程并記錄下答案的分布,就能得到所有2\"個輸入的信息。 另一個制造量子計算機的巨大困難來自量子的退
    發表于 07-13 22:15

    簡述遞歸神經網絡的計算過程

    、時間序列預測等領域有著廣泛的應用。本文將詳細介紹RNN的計算過程。 基本概念 1.1 神經網絡 神經網絡是一種受人腦神經元結構啟發的計算模型,由大量的神經元(或稱為節點)組成,這些神經元通過權重連接在一起。每個神經元接收輸入信號,通過激活函數處理信號,并將處
    的頭像 發表于 07-05 09:30 ?472次閱讀

    卷積神經網絡計算過程和步驟

    卷積神經網絡(Convolutional Neural Network, CNN)是一種深度學習模型,廣泛應用于圖像識別、視頻分析、自然語言處理等領域。本文將詳細介紹卷積神經網絡的計算過程和步驟
    的頭像 發表于 07-03 09:36 ?628次閱讀

    深度學習模型訓練過程詳解

    深度學習模型訓練是一個復雜且關鍵的過程,它涉及大量的數據、計算資源和精心設計的算法。訓練一個深度學習模型,本質上是通過優化算法調整模型參數,使模型能夠更好地擬合數據,提高預測或分類的準確性。本文將
    的頭像 發表于 07-01 16:13 ?1337次閱讀

    TouchGFX 中 MCU 負載的計算過程介紹

    從 TouchGFX Desinger 下載的 TBS(TouchGFX Board Setup)大都帶有 MCU 的 負載計算功能,那么如何在自己的板子上增加 MCU 負載計算功能呢?本文檔參考從 TouchGFX Designer 上下載的 STM32F746 的 T
    的頭像 發表于 05-24 13:24 ?497次閱讀
    TouchGFX 中 MCU 負載的<b class='flag-5'>計算過程</b>介紹

    全志T527芯片詳解計算性能與高清圖像編解碼

    全志T527芯片詳解計算性能與高清圖像編解碼
    的頭像 發表于 05-21 14:37 ?2937次閱讀
    全志T527芯片<b class='flag-5'>詳解</b>:<b class='flag-5'>計算</b>性能與高清圖像編解碼

    什么是寄生電感?如何計算過孔的寄生電感?

    對電路的性能產生影響,因此需要進行計算和考慮。電感是指導體或線圈對電流變化的響應能力。當電流通過導體或線圈時,會產生磁場,這個磁場又會導致導體或線圈內部產生感應電動
    的頭像 發表于 03-15 08:19 ?2331次閱讀
    什么是寄生電感?如何<b class='flag-5'>計算過</b>孔的寄生電感?

    GD32 MCU ADC采樣率如何計算?

    大家在使用ADC采樣的時候是否計算過ADC的采樣率,這個問題非常關鍵!
    的頭像 發表于 01-23 09:29 ?2658次閱讀
    GD32 MCU ADC采樣率如何<b class='flag-5'>計算</b>?
    主站蜘蛛池模板: 全黄H全肉细节文NP| 日本一本在线播放| 日日噜噜夜夜躁躁狠狠| 成人综合在线观看| 天美麻豆成人AV精品| 国产一区二区在线观看免费| 野花影院手机在线观看| 美女脱了内裤张开腿让男人爽| H狠狠躁死你H| 色欲AV精品人妻一区二区三区| 国产亚洲精品久久久久久国模美| 亚洲视频 在线观看| 嫩草影院一区| 国产成人教育视频在线观看| 亚洲三级视频在线观看| 男人边吃奶边挵进去呻吟漫画| 好男人在线高清WWW免费观看| 总裁呻吟双腿大开男男H| 前后灌满白浆护士| 国产亚洲精品久久久久久国模美 | 久久re视频精品538在线| 最近在线视频观看2018免费| 亚洲爆乳无码精品AAA片蜜桃| 麻美ゆま夫の目の前で犯| 动听968| 亚洲香蕉视频在线播放| 无限资源在线完整高清观看1| 乱精品一区字幕二区| 动漫美女无衣| 永久久久免费人妻精品| 色狠狠色狠狠综合天天| 日本阿v片在线播放免费| 奶大B紧17p| 花蝴蝶在线观看免费中文版高清| XXX国产麻豆HD| 偷窥自拍性综合图区| 日本888 xxxx| 青青青草国产| 青青久久国产| 日日操夜夜操狠狠操| 免费成年人在线观看视频|