Lecture 4 Mixture of experts課程筆記

什么是MoE?

在這里插入圖片描述

用(多個)大型前饋網絡和一個選擇器層取代大型前饋網絡。你可以在不影響浮點運算次數的情況下增加專家數量。

MoE受歡迎的原因

相同的浮點運算次數,更多的參數表現更好

在這里插入圖片描述

訓練混合專家模型(MoEs)速度更快

在這里插入圖片描述

訓練混合專家模型(MoEs)速度更快

在這里插入圖片描述

與密集型等效模型相比極具競爭力

在這里插入圖片描述

可并行到多個設備(專家并行性)

有多個前饋層,可以將每個專家放在不同的設備上
在這里插入圖片描述

一些混合專家(MoE)的成果——來自西方

混合專家模型(MoE)大多是性能最高的開源模型,而且速度相當快
在這里插入圖片描述

中國團隊早期的混合專家(MoE)成果——通義千問

中國的大語言模型公司也在較小規模上做了不少混合專家(MoE)相關工作。
在這里插入圖片描述

中國團隊早期的混合專家模型(MoE)成果

最近也有一些關于混合專家模型(MoE)的不錯的消融實驗研究,表明它們總體表現良好。
在這里插入圖片描述

近期混合專家(MoE)結果 – DeepSeek v3

在這里插入圖片描述

為什么混合專家模型(MoEs)沒有更受歡迎呢?

基礎設施復雜 / 多節點優勢
訓練目標在一定程度上是啟發式的(且有時不穩定)
在這里插入圖片描述

混合專家模型(MoE)通常是什么樣子

典型做法:將多層感知器(MLP)替換為專家混合(MoE)層
在這里插入圖片描述

不太常見的做法:將MoE用于注意力頭(不穩定)
在這里插入圖片描述

MoE的變種

路由函數
專家規模
訓練目標

路由功能

概述

許多路由算法歸根結底都是“選擇前 k 個”
在這里插入圖片描述

路由類型

幾乎所有的混合專家模型(MoE)都采用標準的“令牌選擇前 k 個”路由方式。最近的一些消融實驗
在這里插入圖片描述

常見路由變體詳解

Top-k

殘差流輸入x
x將進入路由器中,路由器類似于注意力操作(存在線性內積+softmax)
然后選出活躍度最高的前 K 名專家,并對這些輸出進行門控
根據具體情況,可能會根據此路由器權重對輸出進行加權,然后,將只輸出加權平均值或綜合
在這里插入圖片描述

用于大多數混合專家模型(MoE)
Switch Transformer(k=1)
Gshard ((k=2)) 、Grok(2個)、Mixtral(2個)、通義千問(4個)、DBRX(4個)

Hashing

只需要使用哈希函數,就可以將x映射到專家上,即使沒有處理語義信息,依舊可以從基于散列的MoE中得到收益
在這里插入圖片描述

其他路由方法
通過強化學習學習路由

計算成本高,大于好處
在這里插入圖片描述

解決一個匹配問題

在這里插入圖片描述

Top-K路由詳解

在這里插入圖片描述

  1. 計算專家權重((s_{i,t})):對于第l層的輸入特征(utl)(u_{t}^{l})(utl?),通過與專家i的門控向量(eile_{i}^{l}eil?)進行內積運算,再經過 Softmax 函數歸一化,得到該輸入分配給專家i的權重(si,ts_{i,t}si,t?),即(si,t=Softmaxi(utlTeil)s_{i, t}=Softmax_{i}\left(u_{t}^{l^{T}} e_{i}^{l}\right)si,t?=Softmaxi?(utlT?eil?))。

  2. 篩選 Top-k 專家((KaTeX parse error: Expected '}', got 'EOF' at end of input: g_{i,t})):從所有專家的權重(si,ts_{i,t}si,t?)中選取數值最高的前k個,對于這k個專家,保留其權重作為門控系數(gi,tg_{i,t}gi,t?);而其他未被選中的專家,門控系數設為 0,即(gi,t={si,t,si,t∈Topk({sj,t∣1≤j≤N},K),0,otherwise,g_{i, t}= \begin{cases}s_{i, t}, & s_{i, t} \in Topk\left(\left\{s_{j, t} | 1 \leq j \leq N\right\}, K\right), \\ 0, & otherwise, \end{cases}gi,t?={si,t?,0,?si,t?Topk({sj,t?∣1jN},K),otherwise,?)。

  3. 計算輸出特征((htlh_{t}^{l}htl?)):將篩選出的 Top-k 專家對輸入特征(utlu_{t}^{l}utl?)的處理結果(即(FFNi(utl)FFN_{i}\left(u_{t}^{l}\right)FFNi?(utl?)))與各自的門控系數(gi,tg_{i,t}gi,t?)相乘后求和,再加上原始輸入特征(utlu_{t}^{l}utl?),得到該層的輸出特征(htlh_{t}^{l}htl?),即(htl=∑i=1N(gi,tFFNi(utl))+utlh_{t}^{l}=\sum_{i=1}^{N}\left(g_{i, t} FFN_{i}\left(u_{t}^{l}\right)\right)+u_{t}^{l}htl?=i=1N?(gi,t?FFNi?(utl?))+utl?)。
    如果這里只使用softmax而不是用TOP-k,那么就失去了模型本身的意義,使得每次都會激活所有模型,違背了我們在訓練和推理中都有少量稀疏的活躍模型的目的

近期由DeepSeek和其他中國大語言模型帶來的變化

在這里插入圖片描述

規模較小、數量較多的專家 + 一些始終在線的共享專家。

DeepSeek論文中的各種消融實驗

在這里插入圖片描述

更多的專家、共享專家似乎總體上都有幫助

OlMoE的消融實驗

效果都是來自細粒度專家的增益,而沒有來自共享專家的增益。
在這里插入圖片描述

我們如何訓練混合專家模型(MoEs)?

主要挑戰:為了提高訓練效率,我們需要稀疏性……
但稀疏門控決策是不可微的!
(具體來說,稀疏門控通過路由機制(如 Top-K 路由)選擇部分專家,未被選中的專家對應的門控系數會被設為 0。這種 “非此即彼” 的離散選擇過程(要么選中專家并保留其權重,要么不選中并置零)不存在連續的梯度變化,而深度學習模型的訓練依賴反向傳播算法,需要計算參數關于損失函數的梯度以更新參數。因此,稀疏門控的離散性導致無法直接通過常規的反向傳播對門控相關參數進行優化,給模型訓練帶來了困難)
解決方案?

  1. 強化學習優化門控策略
  2. 隨機擾動
  3. 啟發式“平衡”損失。

多專家模型的強化學習

通過REINFORCE算法的強化學習確實有效,但并沒有好到能明顯勝出。
強化學習是“正確的解決方案”,但梯度方差和復雜性意味著它并未得到廣泛應用
在這里插入圖片描述

隨機擾動

出自沙澤爾等人2017年的研究——路由決策是隨機的,伴有高斯擾動。

  1. 這自然會產生更具魯棒性的專家。
  2. softmax 意味著模型學習如何對 K 個專家進行排序
    在這里插入圖片描述

啟發式平衡損失

另一個關鍵問題——系統效率要求我們均衡地使用專家。
輔助損失是向量 f(各專家的 token 分配比例)與 P(各專家的路由概率比例)的縮放點積。通過最小化該損失,可促使模型讓 token 實際分配比例((fif_ifi?))與路由概率分配比例((PiP_iPi?))更接近,從而平衡各專家的負載
在這里插入圖片描述

深度求索(v1-2)示例

每個專家平衡-與Switch Transformer相同
在這里插入圖片描述

每個設備平衡-按設備匯總
在這里插入圖片描述

DeepSeek v3變體——專家級偏差

設置每個專家的偏差(使其更有可能獲得詞元)并使用在線學習 gi,t′={si,t,si,t+bi∈Topk({sj,t+bj∣1≤j≤Nr},Kr),0,otherwise.g_{i, t}'= \begin{cases}s_{i, t}, & s_{i, t}+b_{i} \in Topk\left(\left\{s_{j, t}+b_{j} | 1 \leq j \leq N_{r}\right\}, K_{r}\right), \\ 0, & otherwise. \end{cases}gi,t?={si,t?,0,?si,t?+bi?Topk({sj,t?+bj?∣1jNr?},Kr?),otherwise.?
他們將此稱為“無輔助損失平衡”

  • (bib_ibi?) 是專家 i 的偏置項,通過在線學習調整:若某專家被分配的 token 過少,(bib_ibi?) 會增大,使其更易被選入 Top-K 專家;若某專家負載過重,(bib_ibi?) 會減小,降低其被選中的概率;

去除負載均衡損失會發生什么?

在這里插入圖片描述

如果不做負載均衡,除了粉色和黃色的模型,其他模型都被浪費了

從系統層面訓練MoEs

混合專家模型(MoEs)的并行性良好——每個前饋神經網絡(FFN)都可以適配一個設備
在這里插入圖片描述

混合專家(MoE)路由允許并行計算,但也存在一些復雜性
在這里插入圖片描述

像MegaBlocks這樣的現代庫(在許多開源混合專家模型中使用)采用了更智能的稀疏矩陣乘法運算。

有趣的附帶問題——混合專家(MoE)模型的隨機性

有人猜測GPT-4的隨機性是由于混合專家(MoE)造成的。
為什么混合專家模型(MoE)會有額外的隨機性?
在這里插入圖片描述

從路由中丟棄令牌是在批次級別進行的——這意味著其他人的查詢可能會丟棄你的令牌!

混合專家模型(MoE)的問題 - 穩定性

在這里插入圖片描述

解決方案:僅對專家路由器使用Float 32(有時帶有輔助z損失) Lz(x)=1B∑i=1B(log∑j=1Nexj(i))2(5)L_{z}(x)=\frac{1}{B} \sum_{i=1}^{B}\left(log \sum_{j=1}^{N} e^{x_{j}^{(i)}}\right)^{2} (5)Lz?(x)=B1?i=1B?(logj=1N?exj(i)?)2(5)

路由器的Z損失穩定性

當我們去掉z損失時會發生什么?
在這里插入圖片描述

混合專家模型(MoE)的問題——微調

稀疏混合專家模型(Sparse MoEs)在較小的微調數據上可能會過擬合
在這里插入圖片描述

佐夫等人的解決方案——微調非混合專家(MoE)多層感知器(MLP)
在這里插入圖片描述

DeepSeek解決方案 - 使用大量數據140萬個監督微調樣本
訓練數據:為了訓練聊天模型,我們使用內部精心整理的數據集進行有監督微調(SFT),該數據集包含140萬個訓練示例。此數據集涵蓋廣泛的類別,包括數學、代碼、寫作、問答、推理、摘要等。我們的有監督微調訓練數據大多為英文和中文,這使得聊天模型用途廣泛,可應用于雙語場景。

其他訓練方法 - 升級循環利用

在這里插入圖片描述

我們可以使用預訓練的大語言模型(LM)來初始化一個混合專家模型(MoE)嗎?

  • 原始密集塊中的多層感知機(MLP)模塊被復制了 E 份,形成了混合專家(MoE)模塊中的多個多層感知機。
  • 新引入了路由模塊(Router from scratch)來處理輸入并將其分配給不同的多層感知機。
  • 最后通過加權求和(Weighted Sum)操作將多個多層感知機的輸出合并。

混合專家模型(MoE)總結

混合專家模型(MoEs)利用了稀疏性——并非所有輸入都需要完整的模型。
離散路由很難,但前 k 啟發式算法似乎可行
現在有大量實證證據表明專家混合模型(MoEs)有效且具有成本效益。

總結

問題1:什么是混合專家模型(MoE),其核心特點是什么?

混合專家模型(MoE)用多個前饋網絡(專家)和一個選擇器層替代傳統大型前饋網絡,核心特點是通過稀疏路由僅激活部分專家,在不顯著增加浮點運算量(FLOPs)的情況下提升參數規模,兼顧效率與性能。

問題2:混合專家模型(MoE)受歡迎的主要原因有哪些?

1.相同FLOPs下,更多參數帶來更好性能;2. 訓練速度更快;3. 與密集模型相比競爭力強;4. 支持專家并行,可將不同專家部署在多個設備上,易于擴展。

問題3:MoE中常見的路由方式有哪些?主流方式的原理是什么?

常見路由方式包括Top-k、哈希、強化學習路由等,主流為Top-k路由。其原理是:輸入通過門控向量計算各專家權重,篩選出權重最高的前k個專家,僅用這些專家處理輸入并加權求和,實現稀疏激活。

問題4:訓練MoE的核心挑戰是什么?有哪些解決方案?

核心挑戰是稀疏門控的離散性導致不可微,難以通過反向傳播優化。解決方案包括:1. 強化學習優化路由(成本高,應用少);2. 隨機擾動(引入高斯噪聲使路由連續化);3. 啟發式平衡損失(促使專家負載均衡,如輔助損失調整token分配)。

問題5:MoE存在哪些主要問題,如何應對?

1.穩定性問題:稀疏路由易導致訓練不穩定,可通過對路由器使用float32或添加z損失緩解;2. 微調過擬合:在小數據集上易過擬合,可采用大量微調數據(如DeepSeek用140萬樣本)或微調非MoE的MLP;3. 基礎設施復雜:需支持專家并行,依賴MegaBlocks等庫優化稀疏計算。

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

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

相關文章

微服務架構的演進:從 Spring Cloud Netflix 到云原生新生態

過去十年,Spring Cloud 憑借 Netflix 全家桶(Eureka、Ribbon、Hystrix、Zuul 等)幾乎成為 Java 微服務的事實標準。但隨著這些核心組件逐步停止更新或進入維護模式,微服務架構正經歷一場深刻的演進。新的微服務架構更加注重 云原生兼容性、社區活躍度、企業級穩定性和低運維…

網絡流量分析——基礎知識

文章目錄所需技能和知識TCP/IP 堆棧和 OSI 模型基本網絡概念常用端口和協議IP 數據包和子層的概念協議傳輸封裝環境與設備常見的流量分析工具BPF 語法執行網絡流量分析NTA工作流程NTA工作流程網絡 - 第 1-4 層OSI / TCP-IP 模型尋址機制MAC地址IP 尋址IPv4IPv6IPv6 尋址類型IPv…

ansible playbook 實戰案例roles | 實現基于 IHS 的 AWStats 訪問監控系統

文章目錄一、核心功能描述二、roles內容2.1 文件結構2.2 主配置文件2.3 tasks文件內容三、files文件內容四、關鍵價值免費個人運維知識庫,歡迎您的訂閱:literator_ray.flowus.cn 一、核心功能描述 這個 Ansible Role 的核心功能是:?實現 ?…

DELL服務器 R系列 IPMI的配置

1、iDRAC功能默認都是關閉,需要在BIOS面啟用,首先重啟計算機,按F2然后進入BIOS,選擇iDRAC Setting進行iDRAC配置 2、重置一下idrac卡-重置才能恢復默認密碼 3、進入iDRAC Setting之后,選擇設置網絡Network 4、啟用iDRA…

模式組合應用-橋接模式(一)

寫在前面Hello,我是易元,這篇文章是我學習設計模式時的筆記和心得體會。如果其中有錯誤,歡迎大家留言指正!文章為設計模式間的組合使用,涉及代碼較多,個人覺得熟能生巧,希望自己能從中學習到新的…

【clion】visual studio的sln轉cmakelist并使用clion構建32位

我想在linux上運行,所以先轉為cmake工程 例如可以把exe mfc 部分不構建,這樣ubuntu就不用移植。 先轉cmakelist,而后clion完成win32的構建,與vs構建對比,驗證腳本正確性。 Vcxproj2CMake https://github.com/gns333/Vcxproj2CMake cmakeconverter https://github.com/pave…

MySQL之分區功能

序言 隨著業務發展,我們維護的項目數據庫中的數據可能會越來越大,那么單張表的數據變多后,接口查詢效率可能會變慢,那我們就直接照抄大廠常見的分庫分表嗎?—— 當然不是的,分庫分表不是萬能的。 分庫分表…

java_spring boot 中使用 log4j2 及 自定義layout設置示例

1. log4j2對比 原始Logback 優勢 對于 Spring Boot 3.x,Logback 是默認日志框架,但在高并發、異步日志場景下,Log4j2 通常表現更優。當業務百萬級用戶、微服務、日志量大時: ? 1. Logback(默認 Spring Boot 集成&am…

記錄Webapi Excel 導出

文章目錄1、helper2、control3、前端 axios記錄webapi excel 導出File示例.NET8.0 NPOI2.731、helper using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System.Data; using System.IO; /// <summary> /// 導出EXCEL /// </summary> public class Exce…

VPS服務器安全審計方案:從風險評估到防護實施

隨著云計算技術的快速發展&#xff0c;VPS服務器已成為企業信息化建設的重要基礎設施。隨之而來的安全威脅也日益增多&#xff0c;如何通過專業的安全審計方案保障VPS服務器的穩定運行成為關鍵課題。本文將系統闡述從漏洞掃描到應急響應的全周期安全審計實施策略&#xff0c;幫…

libmicrohttpd 入門

libmicrohttpd 是一個小型的 C 庫&#xff0c;用于在項目中嵌入 HTTP 服務器功能。它設計簡單、輕量級&#xff0c;適合需要 HTTP 接口但不想要大型 Web 服務器開銷的應用程序。 安裝 libmicrohttpd Linux 系統 在基于 Debian/Ubuntu 的系統上&#xff1a; bash sudo apt-…

【網絡】使用 DNAT 進行負載均衡時,若未配置配套的 SNAT,回包失敗

【網絡】iptables 1 概念 【網絡】iptables 2 查看規則 【網絡】使用 DNAT 進行負載均衡時&#xff0c;若未配置配套的 SNAT&#xff0c;回包失敗 【網絡】回包路由原理 使用 DNAT 進行負載均衡時&#xff0c;若未配置配套的 SNAT&#xff0c;后端服務器將直接回包給客戶端&am…

深入解析GCC:從編譯原理到嵌入式底層實戰

繼續更新編譯器底層系列&#xff01;&#xff01;&#xff01;硬核C語言的屠龍之術&#xff1a;從GCC到匯編的底層征途&#xff08;一&#xff09;總綱&#xff1a; 恭喜你&#xff0c;決定踏上這條通往嵌入式大佬的硬核之路。這條路的起點&#xff0c;不是C語言的語法書&#…

最新MySQL面試題(2025超詳細版)

2025最新超詳細MySQL面試題 文章目錄2025最新超詳細MySQL面試題[toc]一、 SQL 和基本操作1. SQL的執行順序2. 如何優化MySQL查詢3. 常用的聚合函數4. 數據庫事務5. 事務的四大特性(ACID)6. 視圖7. MySQL中使用LIMIT子句進行分頁8. MySQL中使用變量和用戶定義的函數9. MySQL中的…

Spring Retry實戰指南_讓你的應用更具韌性

1 Spring Retry概述 1.1 什么是Spring Retry Spring Retry是Spring生態系統中的一個重要組件,專門用于處理應用程序中的重試邏輯。在分布式系統和微服務架構中,網絡通信、外部服務調用、數據庫訪問等操作都可能因為各種原因而失敗,如網絡抖動、服務暫時不可用、資源競爭等…

大數據畢業設計選題推薦-基于大數據的1688商品類目關系分析與可視化系統-Hadoop-Spark-數據可視化-BigData

?作者主頁&#xff1a;IT畢設夢工廠? 個人簡介&#xff1a;曾從事計算機專業培訓教學&#xff0c;擅長Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等項目實戰。接項目定制開發、代碼講解、答辯教學、文檔編寫、降重等。 ?文末獲取源碼? 精彩專欄推薦?…

【Grafana】grafana-image-renderer配合python腳本實現儀表盤導出pdf

背景 os&#xff1a;centos7Grafana&#xff1a;v12grafana-image-renderer&#xff1a;v4.0.10插件&#xff1a;否grafana-image-renderer可以以插件形式啟動&#xff0c;也可以以單獨服務啟動&#xff0c;在centos7插件啟動時&#xff0c;報錯glibc版本太低&#xff0c;未找到…

靜/動態庫 IIC(arm) day58

十七&#xff1a;動態庫和靜態庫 庫&#xff1a;一堆可執行二進制文件的集合&#xff0c;由若干個.o文件歸并生成 一&#xff1a;靜態(鏈接)庫&#xff1a;libxxx.a 生成一個獨立的可執行程序(運行時僅需要一個文件即可) 使用方便 不需要安裝 文件比較大 多個程序使用同一個靜態…

uniapp 手寫簽名組件開發全攻略

引言在移動應用開發中&#xff0c;手寫簽名功能是一個常見的需求&#xff0c;特別是在電子合同、審批流程、金融交易等場景中。本文將詳細介紹如何基于uni-app框架開發一個高性能、功能豐富的手寫簽名組件&#xff0c;并分享開發過程中的技術要點和最佳實踐。組件概述這個簽名組…

理解JavaScript中的函數賦值和調用

&#x1f468; 作者簡介&#xff1a;大家好&#xff0c;我是Taro&#xff0c;全棧領域創作者 ?? 個人主頁&#xff1a;唐璜Taro &#x1f680; 支持我&#xff1a;點贊&#x1f44d;&#x1f4dd; 評論 ??收藏 文章目錄前言一、函數賦值二、函數調用三、 代碼示例總結前言…