自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)

發(fā)布于 2025-1-17 11:48
瀏覽
0收藏

什么是混合專家模型MoE呢?

混合專家模型MoE是一種能讓大型語言模型(LLM)質(zhì)量變好的技術(shù)。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

它主要由兩部分組成:

專家——現(xiàn)在每個(gè)前饋神經(jīng)網(wǎng)絡(luò)(FFNN)層都有好多個(gè)“專家”,每次可以用其中一部分?!皩<摇币话阋彩乔梆伾窠?jīng)網(wǎng)絡(luò)。

門控網(wǎng)絡(luò)——它能決定把哪些tokens送到哪些專家那兒。

在帶混合專家模型MoE的大型語言模型的每一層,都能看到這些有點(diǎn)專門作用的專家:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

要知道,這里的‘專家’可不是像‘心理學(xué)’‘生物學(xué)’這種特定領(lǐng)域的專家哦。最多就是學(xué)學(xué)詞語層面的語法信息:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

說得更細(xì)點(diǎn)兒,它們擅長處理特定情境下的特定詞。

門控網(wǎng)絡(luò)會(huì)挑出最適合給定輸入的專家:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

每個(gè)專家也不是一個(gè)完整的大型語言模型,只是大型語言模型架構(gòu)里的一部分小模型。

專家

要搞清楚專家代表啥、咋工作的,咱們先瞅瞅混合專家模型MoE是想替代啥;就是密集層。

密集層

混合專家模型MoE都是從大型語言模型(LLM)一個(gè)比較基礎(chǔ)的功能開始的,就是前饋神經(jīng)網(wǎng)絡(luò)(FFNN)。

得記得,標(biāo)準(zhǔn)的只解碼器的Transformer架構(gòu)里,前饋神經(jīng)網(wǎng)絡(luò)是在層歸一化之后用的。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

前饋神經(jīng)網(wǎng)絡(luò)(FFNN)能讓模型利用注意力機(jī)制產(chǎn)生的上下文信息,進(jìn)一步轉(zhuǎn)換它,從而捕捉數(shù)據(jù)里更復(fù)雜的關(guān)系。

不過,前饋神經(jīng)網(wǎng)絡(luò)的大小可是會(huì)迅速變大的。為了學(xué)習(xí)這些復(fù)雜關(guān)系,它通常會(huì)擴(kuò)充它接收到的輸入:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

稀疏層

傳統(tǒng)Transformer里的前饋神經(jīng)網(wǎng)絡(luò)(FFNN)被稱為密集模型,因?yàn)樗械膮?shù)(權(quán)重和偏置)都被激活了。啥都不落下,全用來算輸出。

要是仔細(xì)瞅瞅密集模型,你會(huì)發(fā)現(xiàn)輸入會(huì)不同程度地激活所有參數(shù):

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

相比之下,稀疏模型只激活一部分總參數(shù),和混合專家模型MoE關(guān)系很近。

舉個(gè)例子,我們可以把密集模型切塊(這些塊就是所謂的專家),重新訓(xùn)練它,然后在特定時(shí)間只激活一小部分專家:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

背后的想法是,每個(gè)專家在訓(xùn)練時(shí)學(xué)不同的信息。然后在推理時(shí),只用特定的專家,因?yàn)樗鼈儗μ囟ㄈ蝿?wù)最相關(guān)。

當(dāng)被問問題時(shí),我們可以挑出最適合特定任務(wù)的專家:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

專家都學(xué)了些啥呢?

之前說過,專家學(xué)的不是整個(gè)領(lǐng)域的知識,而是更細(xì)致的信息,所以有時(shí)候把它們叫‘專家’還挺容易讓人誤解的。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

在ST-MoE論文里,編碼器模型的專家有專門的分工。不過,解碼器模型的專家好像就沒這種專門分工了。但這并不意味著所有專家都一樣。

Mixtral 8x7B論文里有個(gè)很好的例子,每個(gè)詞都用第一個(gè)選中的專家來上色。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

這個(gè)圖也說明了專家更關(guān)注語法,而不是特定領(lǐng)域。所以,雖然解碼器專家好像沒有專門的領(lǐng)域,但它們在處理某些類型的詞時(shí)確實(shí)會(huì)一直被用到。

專家的架構(gòu)

雖然把專家想象成密集模型里切塊的隱藏層挺形象的,但它們通常本身就是完整的前饋神經(jīng)網(wǎng)絡(luò)(FFNN):


因?yàn)榇蠖鄶?shù)大型語言模型(LLM)有好幾個(gè)解碼器模塊,一段文本在生成之前要經(jīng)過多個(gè)專家處理:


選中的專家在不同詞之間可能不一樣,這就導(dǎo)致走不同的“路徑”:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

要是我們更新一下解碼器模塊的可視化,那現(xiàn)在里面就會(huì)有更多前饋神經(jīng)網(wǎng)絡(luò)(每個(gè)專家一個(gè)):

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

解碼器模塊現(xiàn)在有多個(gè)前饋神經(jīng)網(wǎng)絡(luò)(每個(gè)都是一個(gè)“專家”),在推理時(shí)可以用它們。

路由機(jī)制

既然我們有了這么一幫專家,那模型咋知道該用哪個(gè)專家呢?在專家前面加了個(gè)門控網(wǎng)絡(luò),它會(huì)學(xué)著挑出給定詞用哪個(gè)專家。

路由器

路由器(門控網(wǎng)絡(luò))也是前饋神經(jīng)網(wǎng)絡(luò),根據(jù)特定輸入來選專家。它會(huì)輸出概率,用這些概率來挑出最匹配的專家:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

專家層會(huì)返回選中的專家的輸出乘以門控值(選擇概率)。

路由器加上專家(只選幾個(gè))就組成了專家混合(MoE)層:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

一個(gè)MoE層有兩種尺寸,要么是稀疏的,要么是密集的專家混合。

兩者都用路由器選專家,但稀疏MoE只挑幾個(gè),密集MoE雖然全選,但可能按不同分布來選。


比如,給定一串詞,MoE會(huì)把詞分給所有專家,而稀疏MoE就只挑幾個(gè)專家。

在目前大型語言模型(LLM)的狀況下,看到‘MoE’一般指稀疏MoE,因?yàn)樗苡脤<业囊粋€(gè)子集。這樣計(jì)算成本低,對大型語言模型來說很重要。

專家的選擇

門控網(wǎng)絡(luò)可以說是專家混合(MoE)里最重要的部分,因?yàn)樗粌H決定了推理時(shí)用哪些專家,訓(xùn)練時(shí)也一樣。

最基礎(chǔ)的形式下,我們把輸入(x)和路由器的權(quán)重矩陣(W)相乘:


然后,對輸出應(yīng)用 SoftMax 函數(shù),為每個(gè)專家生成一個(gè)概率分布


路由器用這個(gè)概率分布來挑出給定輸入最適合的專家。

最后,我們把每個(gè)路由器的輸出和每個(gè)選中的專家的輸出相乘,再把結(jié)果加起來。

咱們把所有步驟串起來,看看輸入是怎么通過路由器和專家的:


路由的復(fù)雜性

不過,這個(gè)簡單的函數(shù)常常會(huì)導(dǎo)致路由器總是選同一個(gè)專家,因?yàn)橛行<铱赡軐W(xué)得比其他專家快:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

這不僅會(huì)導(dǎo)致專家選擇的分布不均,還會(huì)使一些專家?guī)缀醪槐挥?xùn)練,從而在訓(xùn)練和推理過程中引發(fā)問題。

為了解決這個(gè)問題,我們希望在訓(xùn)練和推理過程中,所有專家都能得到平等的重視,這被稱為負(fù)載均衡。這樣可以防止模型過度依賴少數(shù)幾個(gè)專家,從而避免過擬合。

負(fù)載均衡

為了平衡專家的重要性,我們需要關(guān)注路由器,因?yàn)樗菦Q定在特定時(shí)間選擇哪些專家的主要組件。

KeepTopK

一種負(fù)載均衡路由器的方法是通過一個(gè)簡單的擴(kuò)展,稱為 KeepTopK。通過引入可訓(xùn)練的高斯噪聲,有助于打破對特定專家的偏好,使選擇更加隨機(jī)化,這樣我們可以防止總是選擇相同的專家:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

然后,除了你想要激活的頂部 k 個(gè)專家(例如 2 個(gè))之外,其他專家的權(quán)重會(huì)被設(shè)置為 ?∞:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

通過將這些權(quán)重設(shè)置為 ?∞,SoftMax 函數(shù)在這些權(quán)重上的輸出將導(dǎo)致概率為 0:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

SoftMax 函數(shù)的性質(zhì): SoftMax 函數(shù)將一個(gè)向量轉(zhuǎn)換為概率分布,每個(gè)元素的值在 0 和 1 之間,且所有元素的和為 1。 SoftMax 函數(shù)的公式為:

其中,是輸入向量,是向量的長度,是向量的第 個(gè)元素。 設(shè)置權(quán)重為 :

當(dāng)某個(gè)元素的值為 時(shí),的值為 0。

因此,對于任何包含的向量,SoftMax 函數(shù)將這些元素的輸出概率設(shè)置為 0。 具體步驟

假設(shè)我們有中間向量 ,其中某些元素被設(shè)置為:

應(yīng)用 SoftMax 函數(shù):

具體計(jì)算:由于e^{-\infty} = 0,上述表達(dá)式簡化為:\text{SoftMax}(\math

計(jì)算具體值:\text{SoftMax}(\mathbf{z}_{\text{top-k}}) = \left, \frac{1.6487}{1.6487 + $2.22$55}, 0, \frac{2.2255}{1.6487 + 2.2255}, 0 \right] = \left[ 0, 0.4256, 0,0.5744, 0 \right]

結(jié)果

通過將權(quán)重設(shè)置為 ,SoftMax 函數(shù)確保了這些專家的激活概率為 0,從而只激活頂部 個(gè)專家。

優(yōu)點(diǎn)

負(fù)載均衡:確保每個(gè)專家都有機(jī)會(huì)被激活,避免某些專家過度使用而其他專家閑置。

防止過擬合:通過引入噪聲,防止模型過度依賴少數(shù)幾個(gè)專家,從而提高模型的泛化能力。

靈活性:可以根據(jù)具體需求調(diào)整的值,靈活控制專家的選擇數(shù)量。

KeepTopK 策略是許多大型語言模型(LLM)仍在使用的一種方法,盡管有許多有前景的替代方案。需要注意的是,KeepTopK 也可以在不添加額外噪聲的情況下使用。

Token Choice

KeepTopK 策略將每個(gè)詞路由到幾個(gè)選定的專家。這種方法稱為 Token Choice,允許給定的詞被發(fā)送到一個(gè)專家(top-1 路由)或多個(gè)專家(top-k 路由)。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

或者發(fā)送到多個(gè)專家(top-k 路由):

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

輔助損失

一個(gè)主要的好處是,它允許對各個(gè)專家的貢獻(xiàn)進(jìn)行加權(quán)和整合。

為了在訓(xùn)練過程中實(shí)現(xiàn)專家的更均勻分布,輔助損失(也稱為負(fù)載均衡損失)被添加到了網(wǎng)絡(luò)的常規(guī)損失中。

它增加了一個(gè)約束,迫使專家具有相等的重要性。 這個(gè)輔助損失的第一個(gè)組成部分是在整個(gè)批次中對每個(gè)專家的路由器值進(jìn)行求和:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

這為我們提供了每個(gè)專家的重要性分?jǐn)?shù),這些分?jǐn)?shù)表示無論輸入是什么,給定專家被選中的可能性。

我們可以利用這些分?jǐn)?shù)來計(jì)算變異系數(shù)(CV),它告訴我們專家之間的重要性分?jǐn)?shù)的差異程度。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

例如,如果重要性分?jǐn)?shù)差異很大,變異系數(shù)(CV)將會(huì)很高:

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

相反,如果所有專家的重要性分?jǐn)?shù)相似,變異系數(shù)(CV)將會(huì)很低(這是我們所期望的):

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

利用這個(gè) CV 分?jǐn)?shù),我們可以在訓(xùn)練過程中更新輔助損失,使其盡可能降低 CV 分?jǐn)?shù)(從而給予每個(gè)專家相等的重要性):

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

最后,輔助損失作為單獨(dú)的損失在訓(xùn)練過程中進(jìn)行優(yōu)化。

專家容量

不平衡不僅存在于被選擇的專家中,還存在于發(fā)送到專家的令牌分布中。

例如,如果輸入令牌不成比例地發(fā)送到一個(gè)專家而不是另一個(gè)專家,這可能會(huì)導(dǎo)致訓(xùn)練不足。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

這里,問題不僅僅在于使用了哪些專家,還在于對它們的使用程度。

一個(gè)解決方案是限制給定專家可以處理的令牌數(shù)量,即專家容量(Expert Capacity)。當(dāng)一個(gè)專家達(dá)到其容量時(shí),后續(xù)的令牌將被發(fā)送給下一位專家。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

如果兩個(gè)專家都達(dá)到容量了,這個(gè)詞就不會(huì)被任何專家處理,而是直接送到下一層。這就叫做詞溢出。

簡單來說,就好比有兩個(gè)專家在處理任務(wù),但他們都忙不過來了,手上的活兒已經(jīng)堆得滿滿的。這時(shí)候再來的新任務(wù),他們就沒辦法處理了,只能把這個(gè)任務(wù)往后傳,讓下一層的專家或者別的機(jī)制來處理。這就叫詞溢出。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

用 Switch Transformer 簡化 MoE

最早解決 MoE 訓(xùn)練不穩(wěn)定性問題(如負(fù)載均衡)的基于 Transformer 的 MoE 模型之一是 Switch Transformer。它極大地簡化了架構(gòu)和訓(xùn)練過程,同時(shí)提高了訓(xùn)練的穩(wěn)定性。

Switch Transformer

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

Switch Transformer 是 Google 在 2022 年發(fā)表的一篇論文中提出的一種模型,它簡化了 MoE 的路由算法,減少了計(jì)算量和通信量,同時(shí)支持 bfloat16 精度進(jìn)行訓(xùn)練?;?T5-Base 和 T5-Large 設(shè)計(jì)的模型在相同的算力下訓(xùn)練速度提升了 7 倍;同時(shí)發(fā)布了 1.6 萬億參數(shù)的 MoE 模型,相比 T5-XXL 模型訓(xùn)練速度提升了 4 倍。

模型介紹

Switch Transformer 是一個(gè) T5 模型(編碼器-解碼器),它用切換層替換了傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)層。切換層是一個(gè)稀疏的 MoE 層,它為每個(gè)詞元選擇一個(gè)專家(Top-1 路由)。

簡化稀疏路由

在傳統(tǒng)的 MoE 層中,網(wǎng)絡(luò)接收一個(gè)輸入詞元 ,輸出會(huì)路由到 top-K 個(gè)專家進(jìn)行計(jì)算。Switch Transformer 采用了一種簡化的路由策略,即每次只發(fā)給一個(gè)專家,這樣可以顯著減少路由的計(jì)算量,同時(shí)保證模型的性能。

高效稀疏路由

Switch Transformer 通過以下方式實(shí)現(xiàn)高效稀疏路由:

路由計(jì)算量減少:只有一個(gè)專家被激活,減少了計(jì)算量。

專家容量減半:專家中的 batch_size 至少減半,進(jìn)一步減少了計(jì)算量。

簡化路由實(shí)現(xiàn):減少了傳統(tǒng) MoE 方法中通信的代價(jià)。

分布式 Switch 實(shí)現(xiàn)

Switch Transformer 的分布式實(shí)現(xiàn)中,所有核心被分配給數(shù)據(jù)分區(qū)維度 ,這也對應(yīng)于模型中的專家數(shù)量。對于每個(gè)核心的每個(gè)詞元,路由器會(huì)本地計(jì)算分配給專家的分配。輸出是一個(gè)大小為 的二進(jìn)制矩陣,該矩陣在第一維度上進(jìn)行分區(qū),并確定專家的分配。

負(fù)載均衡損失

為了促使每個(gè)專家都可以拿到近似均勻分布的樣本,Switch Transformer 引入了負(fù)載均衡損失。 當(dāng) 時(shí),損失是最小的。

切換層

Switch Transformer 是一個(gè) T5 模型(編碼器-解碼器),它用切換層替換了傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)層。切換層是一個(gè)稀疏的 MoE 層,它為每個(gè)詞元選擇一個(gè)專家(Top-1 路由)。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

簡單來說,就是路由器在挑專家的時(shí)候,就是按照老規(guī)矩來,把輸入數(shù)據(jù)和專家的權(quán)重相乘,然后用 SoftMax 函數(shù)處理一下,看看哪個(gè)專家最合適。沒有啥復(fù)雜的操作,就是常規(guī)操作。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

Switch Transformer 用了一種很簡單的辦法 來挑專家。以前的方法是讓每個(gè)詞元找好幾個(gè)專家來處理,這種方法叫 top-k 路由。但 Switch Transformer 說,其實(shí)每個(gè)詞元找一個(gè)專家就足夠了,這種方法叫 top-1 路由。這樣做的好處是,計(jì)算量變小了,通信成本也降低了,而且訓(xùn)練起來更穩(wěn)定。

容量因子

容量因子就像是給每個(gè)專家分配任務(wù)的“額度”。這個(gè)值很重要,因?yàn)樗鼪Q定了每個(gè)專家能處理多少個(gè)詞元。Switch Transformer 在這方面做了改進(jìn),通過直接調(diào)整容量因子來控制每個(gè)專家的處理能力。這樣做的好處是,可以更好地平衡每個(gè)專家的負(fù)載,避免有些專家忙不過來,而有些專家卻很閑。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

tokens per batch:每個(gè)批次中的令牌總數(shù)。

number of experts:專家的數(shù)量。

capacity factor:容量因子,通常大于 1,以提供額外的緩沖空間。

專家容量的組成部分其實(shí)挺簡單的。專家容量主要由兩個(gè)因素決定:每個(gè)批次中的令牌數(shù)量和專家的數(shù)量。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

如果我們把容量因子調(diào)大,每個(gè)專家就能處理更多的詞元。這聽起來好像挺好的,因?yàn)閷<覀兡芨筛嗟幕顑骸?/p>

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

但是,如果把這個(gè)因子調(diào)得太大,就會(huì)浪費(fèi)很多計(jì)算資源,因?yàn)橛行<铱赡軙?huì)閑著沒事干。反過來,如果容量因子太小,專家們就會(huì)忙不過來,處理不了所有的詞元,這就叫令牌溢出。結(jié)果就是,模型的性能會(huì)變差,因?yàn)橛行┰~元沒被處理好。所以,容量因子得找個(gè)合適的值,這樣才能讓專家們既不過載,也不閑置,模型性能也能保持在最佳狀態(tài)。

輔助損失

輔助損失這個(gè)東西,就是為了防止模型在處理數(shù)據(jù)時(shí)丟掉一些重要的信息。想象一下,每個(gè)專家都有自己的工作量,我們希望這些工作量分配得均勻一些。為了達(dá)到這個(gè)目的,我們引入了一個(gè)簡化的輔助損失函數(shù)。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

這個(gè)輔助損失函數(shù)不是去計(jì)算那些復(fù)雜的變異系數(shù),而是直接看每個(gè)專家被分配到的令牌比例和路由器預(yù)測的概率。具體來說,我們希望每個(gè)專家處理的令牌數(shù)量和它們被選中的概率都差不多,也就是每個(gè)專家都能均勻地分到活兒干。

α 這個(gè)超參數(shù)就像是一個(gè)調(diào)節(jié)旋鈕,用來控制這個(gè)輔助損失在訓(xùn)練過程中的重要性。如果 α 值設(shè)得太高,輔助損失就會(huì)太強(qiáng)勢,把主要的損失函數(shù)都蓋過去了;如果 α 值太低,那這個(gè)輔助損失就起不到什么作用,專家們的工作量還是不平衡。所以,α 值需要好好調(diào)整,才能讓模型既不丟信息,又能讓每個(gè)專家都忙得過來。

混合專家模型MoE在視覺模型中的應(yīng)用

混合專家模型(MoE)這種技術(shù)不僅在語言模型里有用,在視覺模型里也能大顯身手。比如 ViT(Vision-Transformer)這種模型,它用的是 Transformer 的架構(gòu),所以完全可以把 MoE 用起來。

簡單來說,ViT 這個(gè)模型是把圖像切成很多小塊,這些小塊就像是語言模型里的詞元一樣被處理。具體來說,比如一張 224x224 像素的圖像,可以切成 16x16 像素的小塊,這樣就能得到 196 個(gè)小塊。每個(gè)小塊再被轉(zhuǎn)換成一維向量,這樣就能用 Transformer 來處理了。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

這種方法的好處是,可以利用 Transformer 在處理序列數(shù)據(jù)上的強(qiáng)大能力,來處理圖像這種二維數(shù)據(jù)。這樣,視覺模型也能像語言模型一樣,通過 MoE 來提高效率和可擴(kuò)展性。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

在 Vision Transformer(ViT)模型中,我們先把圖像切成很多小塊,這些小塊就像是語言模型里的詞元一樣。然后,我們把這些小塊轉(zhuǎn)換成嵌入向量,這個(gè)過程有點(diǎn)像給每個(gè)小塊加上一個(gè)標(biāo)簽,幫助模型更好地理解它們。

這個(gè)轉(zhuǎn)換過程包括兩個(gè)步驟:

線性變換:每個(gè)小塊被展平成一維向量,然后通過一個(gè)線性變換(全連接層)映射到一個(gè)固定的維度 D,形成每個(gè)小塊的嵌入向量。這個(gè)嵌入向量的維度就是 Transformer 的輸入維度。

位置嵌入:為了幫助模型理解每個(gè)小塊在圖像中的位置,我們還會(huì)加上位置嵌入。位置嵌入是一個(gè)額外的向量,它包含了每個(gè)小塊的位置信息。這樣,模型不僅知道每個(gè)小塊的內(nèi)容,還知道它們在圖像中的位置。

最后,這些帶有位置嵌入的嵌入向量被輸入到常規(guī)的 Transformer 編碼器中,編碼器會(huì)通過自注意力機(jī)制來處理這些向量,提取圖像的全局特征。這個(gè)過程有點(diǎn)像語言模型處理詞元序列一樣,只不過這里是處理圖像的小塊序列。

當(dāng)這些小塊(也就是圖像被切成的小方塊)進(jìn)入編碼器的時(shí)候,它們的處理方式和語言模型里的詞元一樣。這就意味著,每個(gè)小塊都會(huì)被當(dāng)作一個(gè)獨(dú)立的單元來處理,就像處理句子中的每個(gè)詞一樣。這種處理方式讓 Vision Transformer(ViT)這種架構(gòu)非常適合用混合專家(MoE)模型來優(yōu)化。因?yàn)?MoE 模型本來就是設(shè)計(jì)來處理這種“分而治之”的任務(wù)的,每個(gè)專家可以專注于處理一部分?jǐn)?shù)據(jù),這樣既能提高效率,又能保持高性能。

Vision-MoE

Vision-MoE(V-MoE)是圖像模型中第一個(gè)實(shí)現(xiàn) MoE 的例子之一。它把 ViT 中的密集前饋神經(jīng)網(wǎng)絡(luò)(FFNN)層換成了稀疏 MoE。這樣,ViT 模型(通常比語言模型?。┚湍芡ㄟ^增加專家數(shù)量來大規(guī)模擴(kuò)展。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

因?yàn)閳D像通常包含很多小塊,為了減少硬件限制,每個(gè)專家使用了一個(gè)較小的預(yù)定義專家容量。但是,較低的容量會(huì)導(dǎo)致一些小塊被丟棄,就像令牌溢出一樣。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

為了應(yīng)對這個(gè)問題,網(wǎng)絡(luò)會(huì)為小塊分配重要性分?jǐn)?shù),并優(yōu)先處理這些小塊,這樣溢出的小塊通常就不那么重要了。這個(gè)方法叫做批量優(yōu)先級路由(Batch Priority Routing)。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

所以,即使處理的小塊數(shù)量減少了,重要的小塊仍然會(huì)被路由。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

優(yōu)先級路由允許模型通過專注于最重要的小塊來減少處理的小塊數(shù)量。這樣,模型在保持高性能的同時(shí),還能減少計(jì)算資源的消耗。

活躍與稀疏參數(shù):以 Mixtral 8x7B 為例

MoE(混合專家)模型的一個(gè)關(guān)鍵優(yōu)勢在于它的計(jì)算效率。

以 Mixtral 8x7B 為例,這個(gè)模型雖然總參數(shù)量很大,但在實(shí)際運(yùn)行時(shí),每次只激活一部分專家。這意味著,雖然模型有 47B 參數(shù),但實(shí)際計(jì)算量相當(dāng)于 12B 參數(shù)的密集模型。這種設(shè)計(jì)讓模型在保持高性能的同時(shí),大大減少了計(jì)算資源的消耗。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

具體來說,MoE 模型在訓(xùn)練和推理時(shí)有以下優(yōu)勢:

訓(xùn)練速度更快:與相同參數(shù)規(guī)模的密集模型相比,MoE 可以用更少的計(jì)算資源和時(shí)間完成預(yù)訓(xùn)練。例如,Google 的 Switch Transformer 模型大小是 T5-XXL 的 15 倍,但在相同計(jì)算資源下,Switch Transformer 模型在達(dá)到固定困惑度 PPL 時(shí),比 T5-XXL 模型快 4 倍。

推理速度快:雖然模型總參數(shù)量大,但推理時(shí)只激活部分專家網(wǎng)絡(luò)。對于同等參數(shù)規(guī)模的密集模型,MoE 推理速度更快。例如,Mixtral 8x7B 雖然有 47B 參數(shù),但推理時(shí)計(jì)算量相當(dāng)于 12B 參數(shù)的密集模型。

擴(kuò)展性強(qiáng):MoE 允許模型在保持計(jì)算成本不變的情況下增加參數(shù)數(shù)量,這使得它能夠擴(kuò)展到非常大的模型規(guī)模,如萬億參數(shù)模型。

多任務(wù)學(xué)習(xí)能力:MoE 在多任務(wù)學(xué)習(xí)中表現(xiàn)出色,能夠同時(shí)處理多種不同的任務(wù),每個(gè)專家可以專注于特定的任務(wù)或數(shù)據(jù)類型。

換句話說,我們?nèi)匀恍枰獙⒄麄€(gè)模型(包括所有專家)加載到你的設(shè)備上(稀疏參數(shù)),但在運(yùn)行推理時(shí),我們只需要使用其中的一部分(活躍參數(shù))。MoE 模型需要更多的顯存來加載所有專家,但在推理時(shí)運(yùn)行得更快。

Mixtral 8x7B 就是這樣一個(gè)模型,它有很多參數(shù)(稀疏參數(shù)),但實(shí)際推理時(shí)只用到其中的一部分(活躍參數(shù))。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

具體來說,Mixtral 8x7B 模型有 8 個(gè)專家,每個(gè)專家有 5.6B 參數(shù)。雖然模型總參數(shù)量是 46.7B(8 個(gè)專家的參數(shù)加上共享參數(shù)),但在推理時(shí),每個(gè)輸入只用到 2 個(gè)專家,所以實(shí)際激活的參數(shù)量是 12.8B。這意味著,雖然加載整個(gè)模型需要很多顯存,但實(shí)際運(yùn)行時(shí)效率很高。

全面指南!掰細(xì)了講混合專家模型MoE的內(nèi)部結(jié)構(gòu)-AI.x社區(qū)

這種設(shè)計(jì)讓 Mixtral 8x7B 在處理大規(guī)模數(shù)據(jù)時(shí)非常高效,既能保持高性能,又減少了計(jì)算資源的消耗。這就是為什么 MoE 模型在大型語言模型和視覺模型中越來越受歡迎的原因。

文章參考:https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-mixture-of-experts

本文轉(zhuǎn)載自 ??智駐未來??,作者: 小智

收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦