Megatron-LM(模型并行)

Megatron-LM: Training Multi-Billion Parameter Language Models Using
Model Parallelism

1. 技術設計原則

Megatron-LM 提出輕量級層內模型并行,無需定制編譯器或修改框架,僅通過在 PyTorch 原生代碼中插入少量通信操作(如all-reduce)實現,且與流水線模型并行正交互補,可靈活組合。

2.背景:矩陣分塊計算

參考:https://www.bilibili.com/video/BV1HdXtY9EuF/?share_source=copy_web&vd_source=0f3d85b09673431159069a2a9a3da50c

在這里插入圖片描述
矩陣XXXYYY相乘,即計算XYXYXY,有兩種分塊運算方式:

  1. YYY拆分為[Y1,Y2][Y_1,Y_2][Y1?,Y2?]XXX不變
    XmnYnk=Xmn[Y1nk2,Y2nk2]=[XY1,XY2]X^{mn}Y^{nk}=X^{mn}[Y_1^{n\frac{k}{2}},Y_2^{n\frac{k}{2}}]=[XY_1,XY_2]XmnYnk=Xmn[Y1n2k??,Y2n2k??]=[XY1?,XY2?]
  2. YYY拆分為 [Y1Y2]\begin{bmatrix} Y_1 \\ Y_2 \end{bmatrix}[Y1?Y2??],把XXX拆分為[X1,X2][X_1,X_2][X1?,X2?]
    XmnYnk=[X1mn2,X2mn2]×[Y1n2kY2n2k]=(X1Y1)mk+(X2Y2)mkX^{mn}Y^{nk}= \begin{bmatrix}X_1^{m \frac{n}{2}},X_2^{m \frac{n}{2}} \end{bmatrix} \times \begin{bmatrix} Y_1^{\frac{n}{2} k} \\ Y_2^{\frac{n}{2} k} \end{bmatrix} = (X_1Y_1)^{mk} + (X_2Y_2)^{m k}XmnYnk=[X1m2n??,X2m2n???]×[Y12n?k?Y22n?k??]=(X1?Y1?)mk+(X2?Y2?)mk

3. 關鍵模塊并行化實現

這一部分的圖解為作者自己根據理解畫的,如果有錯誤請指正

(1)前饋網絡層(MLP)

公式:FFN(X)=σ(XA)BFFN(X)=\sigma(XA)BFFN(X)=σ(XA)B
設序列長度為lll,隱藏層維度為ddd,前饋網絡的隱藏層維度為dFFNd_{FFN}dFFN?A∈Rd×dFFN,B∈RdFFN×dA \in \mathbb{R}^{d \times d_{FFN}}, B \in \mathbb{R}^{d_{FFN} \times d}ARd×dFFN?,BRdFFN?×d
張量并行-前饋網絡層

權重矩陣拆分策略:
第一層線性層的權重矩陣按列拆分(A=[A1,A2]A=[A_1,A_2]A=[A1?,A2?]

  • 使 GeLU 非線性激活可在各 GPU 上獨立計算,避免中間同步;
  • 即使得GeLU(XA)=[GeLU(XA1),?,GeLU(XAn)]\text{GeLU}(XA)=[ \text{GeLU}(XA_1),\cdots ,\text{GeLU}(XA_n)]GeLU(XA)=[GeLU(XA1?),?,GeLU(XAn?)]

第二層線性層的權重矩陣按行拆分,直接接收 GeLU 輸出

  • 在前向傳播時僅需對第二層的輸出做一次 All-Reduce 聚合輸出。
  • 在反向傳播時僅需在返回到輸入時做一次 All-Reduce 聚合梯度。

通信優化:整個 MLP 模塊僅需 2 次 all-reduce 操作(前向1次、反向1次),無額外同步點。

(2)多頭注意力(Multi-Head Attention)模塊

在這里插入圖片描述
注意力頭拆分:

  • 將 Q、K、V 對應的權重矩陣按拆分,每個 GPU 負責部分注意力頭的計算,無需中間通信;
    注意力輸出層權重按拆分,直接接收并行計算結果,僅需在反向傳播聚合梯度。

優勢:充分利用注意力頭的天然并行性,每個 GPU 僅處理部分頭的計算,降低單設備內存壓力。

(3)輸入層與輸出層優化

張量并行-輸入層
輸入嵌入:

  • 按詞匯表維度列拆分嵌入矩陣(E=[E1,E2]E=[E_1,E_2]E=[E1?,E2?]
  • 通過 g 算子(前向 all-reduce)聚合結果,避免單 GPU 存儲完整詞匯表。

在這里插入圖片描述

輸出層與損失計算:

  • 融合最終線性層的輸出與交叉熵損失計算,直接在各 GPU 上計算局部損失后聚合
  • 無需傳輸大規模 logits,減少通信量從b×s×vb×s×vb×s×vb×sb×sb×s
  • bbb 為批次大小、sss 為序列長度、vvv 為詞匯表大小

4.混合并行策略(模型+數據并行)

混合并行策略
GPU分組:

  • 將 GPU 劃分為模型并行組(如8個GPU一組,共同承載一個模型)和數據并行組(不同模型并行組中同位置 GPU 組成,負責梯度同步)
  • 總 GPU 數 = 模型并行度 × 數據并行度

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/97399.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/97399.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/97399.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C/C++:AddressSanitizer內存檢測工具

AddressSanitizer是gcc自帶的內存檢測工具&#xff0c;無需額外安裝 常見問題 #include <stdlib.h>// 越界訪問 void stack_buffer_overflow() {char buffer[1];int i 10;buffer[i] A; // 訪問越界 }// 野指針 void use_after_free() {char *text (char *)malloc(size…

【源碼】智慧工地系統:智能化施工現場的全新管理方案

智慧工地系統是一個綜合利用物聯網&#xff08;IoT&#xff09;、大數據、云計算、人工智能&#xff08;AI&#xff09;、移動互聯網和BIM&#xff08;建筑信息模型&#xff09;等新一代信息技術&#xff0c;對施工現場的“人、機、料、法、環”等關鍵要素進行實時、全面、智能…

網絡安全等級保護(等保2.0)

網絡安全等級保護&#xff08;等保2.0&#xff09;工作全流程指南 等級保護&#xff08;全稱“網絡安全等級保護”&#xff09;是我國網絡安全領域的核心制度&#xff0c;是《網絡安全法》規定的法定義務&#xff0c;等保2.0相關國家標準于2019年5月10日正式發布。2019年12月1日…

【Docker】Docker初識

目錄 容器技術發展史 Jail時代 1979年貝爾實驗室發明chroot 2000年FreeBSD 4.0發行FreeBSD Jail 2001年Linux VServer發行 2004年Solaris Containers發行 云時代 2006年google推出Process Containers 2008年LXC推出 2011年CloudFoundry推出Warden 2013年LMCTFY啟動 …

SNMPv3開發--snmptrapd

SNMPv3開發–snmptrapd REF:3min搞定snmpdtrap的配置與使用

機器學習時間序列算法進行隨機劃分數據是不合適的!

問題代碼&#xff1a;數據集劃分方式不適合時間序列&#xff0c;會導致評估結果不可靠。 代碼在整體流程上是合理的&#xff0c;但針對時間序列數據&#xff0c;存在一個關鍵問題&#xff1a;使用train_test_split進行隨機劃分是不合適的。時間序列的特殊性風速數據屬于時間序列…

逆向思維下,如何把基金投資做虧?

投資界常說“聰明的人學習別人賺錢的方式”&#xff0c;但如果我們刻意采用逆向思維&#xff0c;想要把基金投資做虧&#xff0c;其實也有科學依據。 今天&#xff0c;我們就從心理學和行為金融的角度&#xff0c;揭示那些真實的投資虧損方法。 ?? 1. 總想追熱點&#xff0c…

1-python 自定義模板導出文檔-基礎實現

使用 Python 根據自定義的 Word 模板和傳入的 JSON 數據生成 Word 報告&#xff0c;是自動化文檔生成的常見需求。最常用的方法是使用 python-docx 和 docxtpl 庫。其中&#xff0c;docxtpl 是基于 python-docx 的模板引擎&#xff0c;支持 Jinja2 模板語法&#xff0c;非常適合…

LeetCode算法日記 - Day 24: 顏色分類、排序數組

目錄 1. 顏色分類 1.1 題目分析 1.2 解法 1.3 代碼實現 2. 排序數組 2.1 題目解析 2.2 解法 2.3 代碼實現 1. 顏色分類 75. 顏色分類 - 力扣&#xff08;LeetCode&#xff09; 給定一個包含紅色、白色和藍色、共 n 個元素的數組 nums &#xff0c;原地 對它們進行排序…

學習一下動調

[NSSCTF 2nd]MyBasedie查一下用ida64打開main函數里面沒有什么信息&#xff0c;接著追一下函數&#xff0c;內容在test函數里面函數會對我們輸入的內容進行base64加密&#xff0c;這段邏輯也很簡單&#xff0c;就是將加密后的字符串和目標字符串依次進行比較&#xff0c;一樣就…

Java試題-選擇題(22)

Java試題-選擇題&#xff08;22&#xff09; 題目以下對JDBC事務描述錯誤的是 &#xff1f; A) JDBC事務屬于JAVA事務的一種 B) JDBC事務屬于容器事務類型 C) JDBC事務可以保證操作的完整性和一致性 D) JDBC事務是由Connection發起的&#xff0c;并由Connection控制要通過可滾動…

藍牙5.3核心技術架構解析:從控制器到主機的無線通信設計

藍牙5.3核心技術架構解析&#xff1a;從控制器到主機的無線通信設計在無線通信領域&#xff0c;藍牙技術如何通過精巧的架構設計實現設備間的高效互操作&#xff1f;答案在于其分層架構與標準化的接口定義。藍牙5.3核心規范作為現代無線通信的重要標準&#xff0c;其系統架構設…

android View#performClick() 和 View#callOnClick() 的差異

文章目錄performClick()callOnClick()關鍵區別對比總結在 Android 中&#xff0c;View.performClick() 和 View.callOnClick() 都是用于觸發視圖點擊事件的方法&#xff0c;但它們的設計目的和執行邏輯存在細微差異&#xff0c;具體區別如下&#xff1a;performClick() 核心作…

PHP單獨使用phinx使用數據庫遷移

可以獨立使用的遷移包對比后&#xff0c;感覺phinx更接近PHP的使用習慣。 為什么要單獨用&#xff1f; 因為我不想數據庫的遷移文件依賴于某種框架。本來是可以在框架里直接安裝這個包的&#xff0c;但是發現這個包依賴cakephp&#xff0c;而cakephp的函數與thinkphp的env()函…

從零開始學習單片機18

使用STM32CubeMX創建工程選擇對應芯片后創建工程&#xff0c;首先設置時鐘源內部時鐘源包括LSI&#xff08;低速時鐘&#xff09;和HSI&#xff08;高速時鐘&#xff09;&#xff0c;使用內部時鐘源就需要將圖中的一二處勾選HCLK是芯片運行時的評率&#xff0c;雖然下面標的最大…

如何使用 DeepSeek 幫助自己的工作?

技術文章大綱&#xff1a;利用 DeepSeek 提升工作效率 了解 DeepSeek 的基本功能 DeepSeek 的核心能力&#xff1a;文本生成、代碼輔助、數據分析支持的平臺與訪問方式&#xff08;網頁端/API/集成工具&#xff09;適用場景&#xff1a;技術文檔撰寫、自動化流程設計、數據處理…

計算機畢設javayit商城 基于SSM框架的校園二手交易全流程管理系統設計與實現 Java+MySQL的校園二手商品交易與供需對接平臺開發

計算機畢設 javayit 商城uwd1i9 &#xff08;配套有源碼 程序 mysql數據庫 論文&#xff09;本套源碼可以先看具體功能演示視頻領取&#xff0c;文末有聯xi 可分享隨著校園二手物品流通需求增長&#xff0c;傳統校園二手交易依賴線下擺攤、社群發布的模式&#xff0c;存在信息分…

Java函數式編程之【流(Stream)性能優化】

Java函數式編程之【流&#xff08;Stream&#xff09;性能優化一、流&#xff08;Stream&#xff09;性能優化的預備知識&#xff08;一&#xff09;并行與并發的區別&#xff08;二&#xff09;Stream操作特性分類&#xff08;三&#xff09;Stream流管道的相關知識二、流&…

Cybero: 1靶場滲透

Cybero: 1 來自 <Cybero: 1 ~ VulnHub> 1&#xff0c;將兩臺虛擬機網絡連接都改為NAT模式 2&#xff0c;攻擊機上做namp局域網掃描發現靶機 nmap -sn 192.168.23.0/24 那么攻擊機IP為192.168.23.128&#xff0c;靶場IP192.168.23.139 3&#xff0c;對靶機進行端口服務探…

【學習筆記】非異步安全函數(禁止在信號處理中調用)

非異步安全函數&#xff08;禁止在信號處理中調用&#xff09; 一、測試 在信號處理函數&#xff08;Signal Handler&#xff09;中&#xff0c;只有異步信號安全函數&#xff08;async-signal-safe functions&#xff09; 可以安全調用。這類函數的特點是&#xff1a;不使用全…