Mistral上周末丟出的磁力鏈接震驚了開源圈子,這個7B×8E的開源MoE大模型性能已經(jīng)到達了LLaMA2 70B的級別!
而根據(jù)Jim Fan猜測,如果Mistral內部訓練了34B×8E或者甚至100B+×8E級別的模型,那他們的能力很有可能已經(jīng)無限接近GPT-4了。
而在之前對于GPT-4結構的曝料中,大部分的信息也指向GPT-4很可能是由8個或者是16個MoE構成。
為什么MoE能成為高性能大模型的必選項?
簡單來說,MoE是一種神經(jīng)網(wǎng)絡架構設計,在Transformer模塊中集成了專家/模型層。
當數(shù)據(jù)流經(jīng)MoE層時,每個輸入token都會動態(tài)路由到專家子模型進行處理。當每個專家專門從事特定任務時,這種方法可以實現(xiàn)更高效的計算并獲得更好的結果。
MoE最關鍵的組件:
- 專家(Expert):MoE層由許多專家、小型MLP或復雜的LLM(如 Mistral 7B)組成。
- 路由器(Router):路由器確定將哪些輸入token分配給哪些專家。
路由策略有兩種:token選擇路由器或路由器選擇token。
路由器使用softmax門控函數(shù)通過專家或token對概率分布進行建模,并選擇前k個。
MoE能夠帶來的好處:
- 每個專家都可以專門處理不同的任務或數(shù)據(jù)的不同部分。
- MoE構架能向LLM添加可學習參數(shù),而不增加推理成本。
- 可以利用稀疏矩陣的高效計算
- 并行計算所有專家層,以有效利用GPU的并行能力
- 幫助有效地擴展模型并減少訓練時間。以更低的計算成本獲得更好的結果!
MoE:建立高效大模型的關鍵技術
大型語言模型(LLM)席卷了機器學習領域,而隨著現(xiàn)代數(shù)據(jù)集的復雜性和規(guī)模的增加,每個數(shù)據(jù)集都包含不同的模式,特征和標注之間的關系截然不同。
——這時,就需要MoE出手了。
專家混合(MoE)就像神經(jīng)網(wǎng)絡世界中的一種團隊合作技術。
想象一下,將一項大任務分解成更小的部分,并讓不同的專家處理每個部分。然后,有一個聰明的法官會根據(jù)情況,決定遵循哪位專家的建議,所有這些建議都混合在一起。
——就像你利用不同的口味,組合成一道好吃的菜。
對于復雜的數(shù)據(jù)集,可以劃分為局部子集(local subsets),同樣,將需要預測的問題劃分為子任務(采用領域知識或者無監(jiān)督聚類算法)。
然后,針對每個數(shù)據(jù)子集訓練專家模型(Expert Models),專家模型可以是任何模型,比如支持向量機 (SVM) 或者神經(jīng)網(wǎng)絡,每個專家模型接收相同的輸入模式并進行預測。
MoE還包含門控模型(Gating Model),用于解釋每個專家做出的預測,并根據(jù)輸入選擇信任哪個專家。
最后,MoE需要一種聚合機制(Pooling Method),根據(jù)門控模型和專家的輸出進行預測。
在現(xiàn)實的應用中,研究人員提出一種稱為「稀疏門控專家混合層」的方法,作為原始MoE的迭代,這個方法提供了一個通用的神經(jīng)網(wǎng)絡組件,可以適應不同類型的任務。
稀疏門控專家混合層(Sparsely-Gated Mixture-of-Experts Layer)由許多專家網(wǎng)絡組成,每個專家網(wǎng)絡都是一個簡單的前饋神經(jīng)網(wǎng)絡和一個可訓練的門控網(wǎng)絡。門控網(wǎng)絡負責選擇這些專家的稀疏組合來處理每個輸入。
這里的重點是在門控功能中使用稀疏性,——這意味著對于每個輸入實例,門控網(wǎng)絡只選擇少數(shù)專家進行處理,其余的專家保持非活動狀態(tài)。
這種稀疏性和專家選擇是針對每個輸入動態(tài)實現(xiàn)的,整個過程具有高度的靈活性和適應性,而由于不需要處理網(wǎng)絡的非活動部分,計算效率大大提高。
——簡單來說就是,算得快、消耗少、省錢。
MoE層可以分層堆疊,其中主MoE選擇稀疏加權的「專家」組合。每個組合都使用一個MoE圖層。
此外,研究人員還提出了一種名為「Noisy Top-K Gating」的創(chuàng)新技術。
這種機制在門控函數(shù)中增加了一個可調的高斯噪聲,只保留前K個值,并將其余值分配給負無窮大,從而轉換為零門控值。
這種方法確保了門控網(wǎng)絡的稀疏性,同時保持了對門控函數(shù)輸出中潛在不連續(xù)性的魯棒性。另外,它還有助于跨專家網(wǎng)絡進行負載平衡。
MoE和Transformer
下面我們來看一下MoE在Transformer ,也就是當下大火的大語言模型中發(fā)揮了怎樣的作用。
MoE作為一種神經(jīng)網(wǎng)絡架構設計,可以集成進Transformer的結構中。
當數(shù)據(jù)流經(jīng)MoE層時,每個輸入(tokens)都會動態(tài)路由到某個專家模型進行計算,這樣每個專家都可以專注于特定的任務,更好、更高效地給出結果。
上圖展示了具有MoE層的Transformer編碼器的演化(對于解碼器的修改也類似),MoE層取代了Transformer的前饋層。
上圖左邊是標準Transformer模型的編碼器,包括自注意力層和前饋層,交錯著殘差連接和歸一化層。
中間部分通過用MoE層替換其他前饋層,得到了MoE Transformer Encoder的模型結構。
上圖右側是當模型擴展到多個設備時的情況,MoE層將跨設備分片,而所有其他層都會被復制。
我們可以看到MoE的關鍵組件就是各種專家模型和路由模塊。
專家模型也可以是小型MLP, 或者復雜的LLM,如Mistral 7B。
而路由模塊用來確定將哪些輸入tokens分配給哪些專家。
一般有兩種路由策略:token選擇路由器,或路由器選擇token。這里使用softmax門控函數(shù),通過專家模型或者tokens,對概率分布進行建模,并選擇top k。
由此,我們可知MoE層在Transformer中發(fā)揮了重要的作用。
每個專家都可以專門處理不同的任務或數(shù)據(jù)的不同部分;使用MoE可以在不增加推理成本的情況下向LLM添加可學習參數(shù);
此外,MoE還有助于對稀疏矩陣進行高效計算;而MoE中的專家層可以并行計算,這樣就有效利用了GPU的并行能力。
最后,MoE在幫助減少訓練時間的同時,還可以做到有效地擴展模型,以更低的計算成本獲得更好的結果。
MoE開源再受關注
在Mistral放出這個開源的7B×8E的MoE之前,英偉達和谷歌也放出過其他完全開源的MoE。
曾在英偉達實習的新加坡國立大學博士生Fuzhao Xue表示,他們的團隊在4個月前也開源了一個80億參數(shù)的MoE模型。
項目地址:https://Github.com/XueFuzhao/OpenMoE數(shù)據(jù)來源
- 一半來自The RedPajama,另一半來自The Stack Dedup
- 為提升模型的推理能力,采用了大量的編程相關數(shù)據(jù)
模型架構
- OpenMoE模型基于「ST-MoE」,但采用了decoder-only架構。
其它設計
- 采用umT5 tokenizer
- 使用RoPE技術
- 采用SwiGLU激活函數(shù)
- 設定2000 token的上下文長度
BigBench評估
團隊在BigBench-Lite上進行了少樣本測試,其中包括與BIG-G、BIG-G-Sparse以及GPT-3的對比。
通過計算每個詞元激活的參數(shù)數(shù)量和訓練詞元的數(shù)量來大致估計相對成本。圖中每個點的大小代表了相應詞元激活的參數(shù)數(shù)量。特別需要指出的是,淺灰色的點表示MoE模型的總參數(shù)量。
對此,Jim Fan也表示,MoE并不新鮮,它只是沒有得到那么多關注而已......
比如,谷歌很早之前就開源了基于T5的MoE模型——Switch Transformer。
面臨的挑戰(zhàn)和機遇
MoE基礎設施建設
由于MoE擁有大量可訓練參數(shù),理想的軟件環(huán)境應該支持靈活組合的專家級、張量級、流水線級和數(shù)據(jù)并行,無論是節(jié)點內還是節(jié)點間。
此外,如果能支持簡單快速的激活卸載和權重量化,從而減輕MoE權重的內存占用,就更好了。
MoE指令微調
FLAN-MoE研究提出:盡管將MoE的性能通過特定任務的微調轉移到下游任務上存在挑戰(zhàn),但指令微調卻能有效地與MoE模型協(xié)調一致。這展示了基于MoE的語言模型巨大的潛力。
MoE 評估
MoE模型的歸納偏置(Inductive bias)可能在困惑度(perplexity)之外還有其他效果,就像其他自適應模型(如Universal Transformer和AdaTape)那樣。
硬件挑戰(zhàn)
值得一提的是,GPU在跨節(jié)點通信方面面臨挑戰(zhàn),因為每個節(jié)點通常只能配備有限數(shù)量的GPU。這使得專家并行中,通信成為瓶頸。
幸運的是,NVIDIA最近推出了DGX GH200,將256個NVIDIA Grace Hopper Superchips集成到一個單一GPU中,很大程度上解決了通信帶寬問題,為開源領域的MoE模型的訓練和部署提供了幫助。