在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

SOKey如何將數據并行轉化為模型并行再轉回數據并行

科技綠洲 ? 來源:NVIDIA英偉達企業解決方案 ? 作者:NVIDIA英偉達企業解 ? 2022-06-14 15:05 ? 次閱讀

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

poYBAGKoMvSAYGaWAABmdfsrJiE812.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 獲取的輸入為 ,根據前面所講的規則,它將會被分成兩組。注意,在這一步,我們還會為每個分組產生一個 order 信息,用于 output dispacher 的重排序。

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

poYBAGKoMv2AJqUBAAA3cyhqBsc646.png

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

pYYBAGKoMwWAT6j4AAAq8s52F_A277.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。

pYYBAGKoMxKAYivpAAAu6m8aqLA636.png

2. Lookup

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

poYBAGKoMxyAHnezAAD8Q5G-3Ho061.png

3. Output Dispatcher

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

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

poYBAGKoMyaAayGnAABezq78Is0376.png

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

poYBAGKoMy-AULrGAABdfOr709U744.png

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

pYYBAGKoMzeAWghNAABg1OZ5H-A524.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 即可輕松完成訓練。

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

    關注

    8

    文章

    7145

    瀏覽量

    89582
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4776

    瀏覽量

    129358
  • API
    API
    +關注

    關注

    2

    文章

    1511

    瀏覽量

    62399
  • SOK
    SOK
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6349
收藏 人收藏

    評論

    相關推薦

    基于Transformer做大模型預訓練基本的并行范式

    在之前的內容中,我們已經介紹過流水線并行數據并行(DP,DDP和ZeRO)。 今天我們將要介紹最重要,也是目前基于Transformer做大模型預訓練最基本的
    的頭像 發表于 05-31 14:38 ?2819次閱讀
    基于Transformer做大<b class='flag-5'>模型</b>預訓練基本的<b class='flag-5'>并行</b>范式

    用單片機進行串并行數據轉化及其在家用電器控制中的應用

    Holtek單片機46R47配合74HC164移位鎖存器來實現串行數據并行數據轉化,并探討如何將其應用到鍵盤掃描和顯示之中。
    發表于 03-03 14:56

    verilog串并轉換,串行輸入八個12位的數據,請問如何將這八個12位的數據并行輸出?

    串行輸入八個12位的數據,請問如何將這八個12位的數據并行輸出?
    發表于 04-01 12:41

    串行和并行的區別

    傳輸時,數據是一位一位地在通信線上傳輸的,先由具有幾位總線的計算機內的發送設備,幾位并行數據經并--串轉換硬件轉換成串行方式,逐位經 傳輸線到達接收站的設備中,并在接收端
    發表于 11-24 18:24

    串行和并行的區別

    速度快,處理簡單。 串行數據傳輸時,數據是一位一位地在通信線上傳輸的,先由具有幾位總線的計算機內的發送設備,幾位并行數據經并--串轉換硬件轉換成串行方式,
    發表于 01-11 09:40

    并行編程模型有什么優勢

    并行編程模型并行計算,尤其是并行軟件的基礎,也是并行硬件系統的導向,在面臨多核新挑戰的情況下,什么樣的
    發表于 07-11 08:03

    什么是數據并行傳輸,并行傳輸原理是什么?

    什么是數據并行傳輸,并行傳輸原理是什么? 數據通信的基本方式可分為并行通信與串行通信。 并行
    發表于 03-17 16:25 ?8146次閱讀

    單片機進行串/并行數據轉化及在家用電器控制中的應用

    在家用電器控制中,數據并行轉換是經常進行的,這是因為很多時候我們需要并行數據傳輸,比如驅動一個七段顯示器顯示出
    發表于 03-14 14:21 ?94次下載

    并行總線是什么?(并行總線協議介紹)

    并行總線,就是并行接口與計算機設備之間傳遞數據的通道。采用并行傳送方式在 微型計算機與外部設備之間進行數據傳送的接口叫
    發表于 11-13 09:55 ?1.3w次閱讀
    <b class='flag-5'>并行</b>總線是什么?(<b class='flag-5'>并行</b>總線協議介紹)

    Spark的并行數據挖掘的研究

    本文研究了基于Spark的并行數據挖掘,并將其應用到了流程對象數據分析中。文章通過對串行的流程 對象數據挖掘算法流的研究,提出了一種基于Spark并行計算框架的
    發表于 12-30 17:31 ?0次下載

    如何使用FPGA驅動并行ADC和并行DAC芯片

    ADC和DAC是FPGA與外部信號的接口,從數據接口類型的角度劃分,有低速的串行接口和高速的并行接口。FPGA經常用來采集中高頻信號,因此使用并行ADC和DAC居多。本文介紹如何使用
    的頭像 發表于 04-21 08:55 ?7250次閱讀

    了解SOK的原理

      以上就是 SOK 數據并行轉化為模型并行
    的頭像 發表于 08-15 15:22 ?2002次閱讀
    了解SOK的原理

    圖解大模型訓練之:數據并行上篇(DP, DDP與ZeRO)

    數據并行的核心思想是:在各個GPU上都拷貝一份完整模型,各自吃一份數據,算一份梯度,最后對梯度進行累加來更新整體模型。理念不復雜,但到了大
    發表于 06-16 09:54 ?3648次閱讀
    圖解大<b class='flag-5'>模型</b>訓練之:<b class='flag-5'>數據</b><b class='flag-5'>并行</b>上篇(DP, DDP與ZeRO)

    模型分布式訓練并行技術(一)-概述

    數據并行是最常見的并行形式,因為它很簡單。在數據并行訓練中,數據集被分割成幾個碎片,每個碎片被分
    的頭像 發表于 08-24 15:17 ?1587次閱讀
    大<b class='flag-5'>模型</b>分布式訓練<b class='flag-5'>并行</b>技術(一)-概述

    基于PyTorch的模型并行分布式訓練Megatron解析

    NVIDIA Megatron 是一個基于 PyTorch 的分布式訓練框架,用來訓練超大Transformer語言模型,其通過綜合應用了數據并行,Tensor并行和Pipeline
    的頭像 發表于 10-23 11:01 ?3264次閱讀
    基于PyTorch的<b class='flag-5'>模型</b><b class='flag-5'>并行</b>分布式訓練Megatron解析
    主站蜘蛛池模板: 久久女同| 成人五级毛片免费播放 | 屁屁影院在线 | 国产午夜a理论毛片在线影院 | 狠狠色丁香婷婷综合橹不卡 | 成人a级特黄毛片 | 四虎影视免费观看 | 成人av在线播放 | 一级毛片视屏 | 国产精品美女在线观看 | 6080国产午夜精品 | 夜夜夜夜夜夜夜工噜噜噜 | 最近最新中文字幕在线第一页 | 国产精品久久免费观看 | 伦理一区二区三区 | 免费视频一区 | 操一操日一日 | 国产午夜精品片一区二区三区 | 亚洲www色| www.91在线 | 婷婷 夜夜 | 射在老师的里面真爽 | 伊人久久大香线蕉综合影 | 毛片.com| 国产精品成人观看视频国产奇米 | 亚洲综合欧美日本另类激情 | 免费一级特黄特色大片在线 | 日日日干干干 | 午夜视频你懂的 | 久久青草国产手机看片福利盒子 | 免费看欧美一级特黄a大片一 | 午夜亚洲国产精品福利 | 男女性生动态免费视频 | 五月婷婷色网 | 国产高清在线免费 | 狼色网站 | 久久美女免费视频 | 拍拍拍无档又黄又爽视频 | 在线视频精品视频 | a一级日本特黄aaa大片 | 在线色资源 |