日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

了解SOK的原理

星星科技指導(dǎo)員 ? 來(lái)源:NVIDIA ? 作者:Kunlun Lee ? 2022-08-15 15:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

poYBAGL59JiARZz4AACrm9j_bTw807.png

圖 1:SOK 訓(xùn)練的數(shù)據(jù)并行-模型并行-數(shù)據(jù)并行流程

1. Input Dispatcher

Input Dispatcher 的職責(zé)是將數(shù)據(jù)以并行的形式的輸入,分配到各個(gè) GPU 上??偣卜譃橐韵聨讉€(gè)步驟:

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

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

pYYBAGL59J-ANIPxAABP8FWKNo8475.png

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

poYBAGL59KWAChITAADEtKC5X1Q738.png

圖 4:GPU 間交換 Input key

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

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

pYYBAGL59KyAZ2_9AABYzcg3JBk527.png

圖 5:整除 input key

2. Lookup

Lookup 的功能比較簡(jiǎn)單,和單機(jī)的 lookup 的行為相同,就是用 input dispatcher 輸出的 key,在本地的 embedding table 里查詢出對(duì)應(yīng)的 embedding vector,我們同樣用一個(gè)簡(jiǎn)單的圖來(lái)舉例。注意下圖中 Global Index 代表每個(gè) embedding vector 在實(shí)際的 embedding table 中對(duì)應(yīng)的 key,而 Index 則是當(dāng)前 GPU 的“部分”embedding table 中的 key。

poYBAGL59LKAPnZrAADtkpy9jkU142.png

圖 6:使用 Embedding Table 進(jìn)行 Lookup

3. Output Dispatcher

和 input dispatcher 的功能對(duì)應(yīng),output dispatcher 是將 embedding vector 按照和 input dispatcher 相同的路徑、相反的方向?qū)?embedding vector 返回給各個(gè) GPU,讓模型并行的 lookup 結(jié)果重新變成數(shù)據(jù)并行。

第一步:復(fù)用 input dispatcher 中的分組信息,將 embedding vector 進(jìn)行分組,如圖 7 所示。

pYYBAGL59LuAWMvcAADkv5anG2M175.png

圖 7:Embedding vector 的分組

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

poYBAGL59NuAervyAADkv5anG2M680.png

圖 8:Embedding vector 的返還

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

poYBAGL59NCAaZ8HAADMql64990015.png

圖 9:Embedding vector 的重排序

可以看到, GPU 0 上輸入的[0, 1, 3, 5],最終被轉(zhuǎn)化為了[0.0, …], [0.1, …], [0.3, …], [0.5, …] 四個(gè) embedding vector,雖然其中有 3 個(gè) embedding vector 被存儲(chǔ)在 GPU 1 上,但是以一種對(duì)用戶透明的方式,在 GPU 0 上拿到了對(duì)應(yīng)的 vector。在用戶看來(lái),就好像整個(gè) embedding table 都存在 GPU 0 上一樣。

4. Backward

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

結(jié)語(yǔ)

以上就是 SOK 將數(shù)據(jù)并行轉(zhuǎn)化為模型并行再轉(zhuǎn)回?cái)?shù)據(jù)并行的過(guò)程,這整個(gè)流程都被封裝在了 SOK 的 Embedding Layer 中,用戶可以直接調(diào)用相關(guān)的 Python API 即可輕松完成訓(xùn)練。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    5283

    瀏覽量

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

    關(guān)注

    2

    文章

    2481

    瀏覽量

    67060
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4889

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    深入了解Maxim產(chǎn)品命名規(guī)則

    深入了解Maxim產(chǎn)品命名規(guī)則 電子工程師在進(jìn)行產(chǎn)品設(shè)計(jì)時(shí),常常需要與各種不同的電子元件打交道。而熟悉這些元件的命名規(guī)則,對(duì)于我們準(zhǔn)確選擇和使用產(chǎn)品至關(guān)重要。今天,就讓我們一起來(lái)詳細(xì)了解Maxim
    的頭像 發(fā)表于 04-02 14:55 ?202次閱讀

    了解全國(guó)產(chǎn)轉(zhuǎn)速地磁測(cè)量模塊的應(yīng)用前景

    。在一些科研和工業(yè)應(yīng)用中,這類模塊的作用不可小覷。 你可能會(huì)問(wèn),為什么我們需要如此精密的測(cè)量工具?其實(shí),地磁測(cè)量在地球科學(xué)、環(huán)境監(jiān)測(cè)、航天航空等領(lǐng)域都具有重要價(jià)值。比如,科學(xué)家們可以通過(guò)這些數(shù)據(jù)了解
    發(fā)表于 03-23 10:35

    【「芯片設(shè)計(jì)基石——EDA產(chǎn)業(yè)全景與未來(lái)展望」閱讀體驗(yàn)】--EDA了解與發(fā)展概況

    本篇對(duì)EDA進(jìn)行專業(yè)了解及其發(fā)展概況一.了解EDA EDA(Electronic Design Automation,電子設(shè)計(jì)自動(dòng)化),它不是一種工具或一種軟件的集合,而是一整套復(fù)雜的、相互關(guān)聯(lián)
    發(fā)表于 01-19 21:45

    網(wǎng)絡(luò)接口:數(shù)字世界的“門鈴”,你了解多少?

    ;淮安移動(dòng)則在某科技園區(qū)采用了FTTO(光纖到桌面)技術(shù),使工作人員能使用高達(dá)1Gbps的專屬帶寬。 結(jié)語(yǔ) 網(wǎng)絡(luò)接口雖小,卻是連接數(shù)字世界的橋梁。了解網(wǎng)絡(luò)接口的基礎(chǔ)知識(shí),不僅能幫助我們更好地使用網(wǎng)絡(luò)設(shè)備
    發(fā)表于 11-26 18:53

    電池老化儀:了解電池壽命的重要工具

    電池老化儀是一種用于測(cè)試電池性能和壽命的設(shè)備。它可以模擬電池在不同條件下的使用情況,幫助人們了解電池的耐久性和可靠性。這種儀器在電池生產(chǎn)和研發(fā)過(guò)程中起著重要作用。
    的頭像 發(fā)表于 09-19 18:18 ?960次閱讀

    ALM(應(yīng)用生命周期管理)解析:一文了解其概念、關(guān)鍵階段及Perforce ALM工具推薦

    什么是ALM(應(yīng)用生命周期管理)?它遠(yuǎn)不止是SDLC!一文了解其概念、關(guān)鍵階段以及如何借助Perforce ALM這類工具,實(shí)現(xiàn)端到端的可追溯性、加速發(fā)布并保障合規(guī)性。
    的頭像 發(fā)表于 09-19 11:03 ?2186次閱讀
    ALM(應(yīng)用生命周期管理)解析:一文<b class='flag-5'>了解</b>其概念、關(guān)鍵階段及Perforce ALM工具推薦

    峰均比:你了解多少?

    定義:峰均比是一種對(duì)波形的測(cè)量參數(shù),等于波形的振幅除以有效值(RMS)所得到的一個(gè)比值。對(duì)這個(gè)定義還有一種理解:峰值的功率和平均功率之比。這里先了解峰值功率:很多信號(hào)從
    的頭像 發(fā)表于 07-02 17:32 ?3469次閱讀
    峰均比:你<b class='flag-5'>了解</b>多少?

    一文帶你了解電源測(cè)試系統(tǒng)的功能!

    在當(dāng)今電子與電力技術(shù)飛速發(fā)展的時(shí)代,各類電子設(shè)備、電力系統(tǒng)以及新能源相關(guān)產(chǎn)品的研發(fā)、生產(chǎn)和維護(hù)過(guò)程中,電源測(cè)試系統(tǒng)扮演著至關(guān)重要的角色。本文將帶你了解源儀電子的電源測(cè)試系統(tǒng)的功能。
    的頭像 發(fā)表于 07-02 09:10 ?1257次閱讀
    一文帶你<b class='flag-5'>了解</b>電源測(cè)試系統(tǒng)的功能!

    【HZ-RK3568開(kāi)發(fā)板免費(fèi)體驗(yàn)】--開(kāi)發(fā)板了解與初探

    感謝合眾恒躍與發(fā)燒友論壇提供的開(kāi)發(fā)板與平臺(tái),收到實(shí)物如下 下面來(lái)了解下開(kāi)發(fā)板 開(kāi)發(fā)板由底板和核心板組成,核心板基于瑞芯微RK3568J處理器設(shè)計(jì),支持圖像H.264編解碼處理,內(nèi)置3D GPU可圖像
    發(fā)表于 06-28 23:42

    一文了解電壓諧波

    我們經(jīng)常會(huì)聽(tīng)到諧波,到底什么是諧波,怎么定義的?為什么要關(guān)注諧波?什么時(shí)候關(guān)注諧波?諧波如何計(jì)算或標(biāo)準(zhǔn)規(guī)定的諧波的算法是怎樣的?GB關(guān)于電壓諧波又是如何評(píng)估的?帶著諸多的問(wèn)題,我們一起來(lái)了解
    的頭像 發(fā)表于 06-28 17:23 ?5307次閱讀
    一文<b class='flag-5'>了解</b>電壓諧波

    科普|關(guān)于GPS和GNSS,你了解多少?

    定位(Positioning)為萬(wàn)物互聯(lián)提供了最基礎(chǔ)信息;當(dāng)今以GPS、GLONASS、Galileo和Beidou為代表的全球定位系統(tǒng)為人們帶來(lái)了極大便利;而對(duì)于它們你是不是真正的了解,回答完以下
    的頭像 發(fā)表于 06-28 07:06 ?3247次閱讀
    科普|關(guān)于GPS和GNSS,你<b class='flag-5'>了解</b>多少?

    了解信號(hào)完整性的基本原理

    ,設(shè)計(jì)人員必須注意電路板布局并使用適當(dāng)?shù)膶?dǎo)線和連接器,從而最大限度地減少反射、噪聲和串?dāng)_。此外,還必須了解傳輸線、阻抗、回波損耗和共振等基本原理。 本文將介紹討論信號(hào)完整性時(shí)使用的一些術(shù)語(yǔ),以及設(shè)計(jì)人員需要考慮的問(wèn)題,然后介紹 [Amphenol] 優(yōu)異的電纜和
    的頭像 發(fā)表于 05-25 11:54 ?1658次閱讀
    <b class='flag-5'>了解</b>信號(hào)完整性的基本原理

    充電接口你真的了解嗎?

    不同的類型嗎?今天,我們就來(lái)詳細(xì)了解一下USB接口的三大類型:Type-A、Type-B和Type-C。 Type-A:最常見(jiàn)的“USB口” 外觀特征:扁平的矩形接口,通常用于電腦、電視等設(shè)備。 常見(jiàn)
    的頭像 發(fā)表于 05-18 17:39 ?5514次閱讀

    什么是超級(jí)電容?你對(duì)超級(jí)電容了解多少?

    什么是超級(jí)電容?你對(duì)超級(jí)電容了解多少?1、雙電層電容:是在電極/溶液界面通過(guò)電子或離子的定向排列造成電荷的對(duì)峙而產(chǎn)生的。對(duì)一個(gè)電極/溶液體系,會(huì)在電子導(dǎo)電的電極和離子導(dǎo)電的電解質(zhì)溶液界面上形成雙電層
    的頭像 發(fā)表于 05-16 08:52 ?1587次閱讀
    什么是超級(jí)電容?你對(duì)超級(jí)電容<b class='flag-5'>了解</b>多少?

    簡(jiǎn)單了解I2C接口

    在電子電路的復(fù)雜世界里,各種電路模塊設(shè)備需要相互通信才能協(xié)同工作 ,I2C接口就像是電路模塊設(shè)備間的溝通橋梁,今天就帶大家深入了解它。
    的頭像 發(fā)表于 05-08 14:15 ?2841次閱讀
    簡(jiǎn)單<b class='flag-5'>了解</b>I2C接口
    姚安县| 饶阳县| 东台市| 中牟县| 义马市| 通渭县| 夏河县| 江达县| 莒南县| 广饶县| 手游| 乐山市| 古蔺县| 遵化市| 清苑县| 开阳县| 吉安县| 松桃| 大丰市| 蒙山县| 榆林市| 尚义县| 新密市| 濮阳县| SHOW| 中阳县| 赤峰市| 涿鹿县| 茶陵县| 佛冈县| 醴陵市| 乌苏市| 张掖市| 大足县| 苗栗县| 理塘县| 嘉兴市| 类乌齐县| 安溪县| 岑巩县| 涿鹿县|