馬斯克的Grok-1為什么不采用經(jīng)典Transformer?
前段時間,馬斯克開源了大模型Grok-1的源代碼。開源本來是件好事,不過很多人發(fā)現(xiàn)Grok-1采用的是Mixture-of-Expert,而不是大家熟悉的Transformer架構。這是為什么呢?本文嘗試解答一下此類問題。
2024年3月17日馬斯克旗下的xAI公司開源了其大語言模型Grok-1的源代碼。Grok-1并未像GPT模型那樣,采用AI新貴Transformer,而是用了AI老兵Mixture-of-Expert(混合專家架構)。
經(jīng)典Transformer架構作為當前自然語言處理領域的一項重要成就,雖然在許多任務上表現(xiàn)出色,但在某些情況下可能存在一些局限性。
Grok-1選擇采用混合專家(MoE)架構,源于對未來低成本超大參數(shù)模型架構的訓練研究和預期,以及對模型性能、效率和靈活性的追求。
在本文中,我們將探討Grok-1為何不采用經(jīng)典Transformer架構的原因,以及采用MoE架構的優(yōu)勢和潛在影響。
一、Grok-1詳情
1. Grok技術詳情
Grok-1和Grok-1.5能力評估表
根據(jù)Grok-1公開的技術詳情如下:
(1)Parameters:314B。
這表示架構的參數(shù)數(shù)量為3140億,即3140億的訓練權重量,是目前發(fā)布的大語言模型中參數(shù)量最大的一種。
(2)Architecture:Mixture of 8 Experts (MoE)。
這指的是Grok-1采用了專家混合(MoE)架構,其中包含8個專家。MoE是一種架構,通過組合多個專家網(wǎng)絡,以便可以選擇性地依賴于不同專家的輸出。
(3)Experts Utilization:2 experts used per token。
對于每個Token,架構使用了2個專家,這意味著對每個輸入Token,架構可以從2個專家的輸出中進行選擇。
(4)Layers:64。
表示架構由64個神經(jīng)網(wǎng)絡層組成,每一層都包含一組特定的向量矩陣和計算操作。
(5)Attention Heads:48 for queries,8 for keys/values。
說明架構依然采用了自注意力機制,注意力頭(Attention Heads)被分為兩部分:48個用于查詢(queries),8個用于鍵(keys)和值(values)。幫助架構理解輸入序列中的不同部分之間的關系。
(6)Embedding Size:6144。
表示輸入Token映射到向量空間的維度大小是6144,即將每個輸入Token映射到6144維的向量空間中進行處理。
(7)Tokenization:SentencePiece tokenizer with 131072 tokens。
架構使用SentencePiece的Token生成器,共有131072個Token。Token生成器用于將文本輸入拆分為架構可以理解的單詞或子詞單元。
SentencePiece tokenizer是一種用于分詞和標記化文本數(shù)據(jù)的工具,它可以將文本數(shù)據(jù)拆分成模型可理解的單詞或子詞單元。SentencePiece tokenizer可以將文本分割為子詞級別,這有助于處理未登錄詞(Out-Of-Vocabulary,OOV)和稀有單詞,提高模型對于復雜語言的適應能力;可以根據(jù)數(shù)據(jù)動態(tài)調整詞匯量,從而更好地適應不同任務和數(shù)據(jù)集的需求;其采用內存和時間效率較高的算法,可以快速有效地處理大規(guī)模文本數(shù)據(jù);可以應用于多種語言的文本處理,幫助跨語言任務的進行。
(8)Additional Features
Rotary embeddings (RoPE):架構使用旋轉嵌入作為一種特征表示方法。
RoPE是一種用于神經(jīng)網(wǎng)絡中表示特征的技術,旨在改善對序列數(shù)據(jù)的處理。
RoPE的設計靈感來自于對旋轉變換(rotation transformations)的研究,這種變換可以幫助減少神經(jīng)網(wǎng)絡中的對稱性,并提高網(wǎng)絡的表示能力。
RoPE的關鍵思想是將輸入特征映射到一個高維球面(high-dimensional sphere)上,并通過在球面上進行旋轉操作來引入額外的非線性表示。這種球面上的旋轉變換可以幫助網(wǎng)絡學習更為復雜和多樣化的特征表示,從而提高其性能和泛化能力。
Supports activation sharding and 8-bit quantization:架構支持激活分片(Activation Sharding)和8位量化(8-bit Quantization),這些技術有助于提高模型的效率和性能。其中激活分片是一種優(yōu)化技術,用于減少內存消耗和加速推斷過程。在神經(jīng)網(wǎng)絡中,激活是指在每層網(wǎng)絡中經(jīng)過激活函數(shù)后的輸出。激活分片將這些激活數(shù)據(jù)劃分成多個片段(shards),每個片段表示神經(jīng)網(wǎng)絡中的一部分激活輸出。通過將激活數(shù)據(jù)分割成片段,模型可以更有效地管理內存,并且可以在多個計算設備上并行處理不同的激活片段,從而提高推斷速度和效率。
8位量化(8-bit Quantization)是一種減少模型計算和存儲需求的技術,通過將浮點數(shù)參數(shù)和激活值轉換為更小的整數(shù)或定點數(shù)。8位量化特指將參數(shù)或激活值表示為8位(即一個字節(jié))整數(shù)。8位量化可以顯著減少模型在內存和計算資源上的需求,從而加快推斷速度并減少功耗,適用于一些資源受限的場景,如移動設備或邊緣計算環(huán)境。
(9)Maximum Sequence Length (context):8192 tokens。
架構支持的最大上下文序列長度為8192個Token,這限制了架構能夠處理的輸入序列的最大長度。
2. 科學計算庫
Grok-1采用了JAX作為科學計算庫。
JAX(即可加速的Python)是一種用于高性能數(shù)值計算和深度學習的開源軟件庫。它由Google開發(fā),旨在提供NumPy的功能,同時允許用戶利用GPU、TPU等加速器進行高效的計算。
JAX的設計理念包括函數(shù)式編程、自動微分和XLA編譯器等方面的理念,使其成為許多深度學習框架的底層支持,如Flax、Haiku等。JAX不僅支持自動微分,還能將用戶編寫的Python代碼轉換成高效的XLA內核,從而提高計算性能。這使得JAX成為深度學習研究和實踐中的重要工具之一。
3. 開發(fā)語言
Grok-1采用Rust作為編程語言。
Rust是一種由Mozilla開發(fā)的系統(tǒng)級編程語言。它被設計為一種安全、并發(fā)和實用的編程語言,旨在解決C和C++等語言存在的安全性和內存安全性問題。Rust具有許多特性,包括零成本抽象、模式匹配、類型系統(tǒng)、所有權系統(tǒng)等,這些特性使得編寫高性能和安全的軟件變得更加容易。Rust還支持并發(fā)編程,提供了輕量級的線程和通道機制,使得編寫并發(fā)程序更加簡單和安全。由于其性能和安全性方面的優(yōu)勢,Rust在諸如系統(tǒng)編程、嵌入式開發(fā)、網(wǎng)絡服務等領域得到了廣泛的應用。
Rust是一種注重安全、并發(fā)和性能的系統(tǒng)編程語言。它旨在幫助開發(fā)者構建高效、可靠的軟件,而不犧牲速度或低級控制。這使得Rust在系統(tǒng)編程、網(wǎng)絡服務、并發(fā)應用、嵌入式設備等領域越來越受歡迎。許多公司和項目已經(jīng)采用Rust來提高其軟件的性能和安全性,包括Mozilla、Dropbox、Cloudflare等。美國政府內部的一些機構和項目開始探索和采用Rust,特別是那些關注軟件安全和性能的部門。例如,美國國家安全局(NSA)發(fā)布的一份報告中推薦使用內存安全語言,如Rust,來增強軟件開發(fā)的安全性。
4. 訓練架構
MoE—混合專家架構(Mixture-of-Experts)是一種采用人工神經(jīng)網(wǎng)絡的訓練架構,最早由Jacobs 等人在1991年的論文《Adaptive Mixtures of Local Experts》中提出。其核心思想是一種將多個局部專家模型組合在一起的方法,以適應不同的輸入數(shù)據(jù)分布,并且這些專家模型可以動態(tài)地分配權重。
在MoE中,每個專家模型都被訓練來解決特定的子問題,而門控網(wǎng)絡則是用來決定在給定輸入情況下,哪個專家模型應該負責給出最終的輸出。MoE出現(xiàn)時間較早,是為解決算法復雜性、提高訓練性能、降低成本而提出的。與Transformer不同,其架構充分利用GPU集群的分布式計算能力,將多任務執(zhí)行從算法結構層面轉移到GPU集群層面從而降低算法的結構復雜性。
經(jīng)典MoE示意圖
Mixture-of-Experts架構的主要組成部分:
- 專家模型(Expert Models):每個專家模型是一個獨立的神經(jīng)網(wǎng)絡,它們被設計用于解決特定的子問題或者在特定的輸入數(shù)據(jù)分布下表現(xiàn)良好。每個專家模型都接收輸入數(shù)據(jù),并且輸出對應的預測結果。
- 門控網(wǎng)絡(Gating Network):門控網(wǎng)絡用于動態(tài)地分配權重給各個專家模型。給定輸入數(shù)據(jù),門控網(wǎng)絡計算每個專家模型對于當前輸入數(shù)據(jù)的相關性或者重要性。這些權重通常是通過softmax函數(shù)歸一化得到的,以確保它們的總和為1。
- 混合操作(Mixture Operation):通過將每個專家模型的輸出與門控網(wǎng)絡計算得到的權重相乘并相加,可以得到最終的輸出。每個專家模型的輸出都被乘以對應的權重,然后再相加,以產(chǎn)生最終的輸出。
- 訓練策略:MoE架構通常使用端到端的反向傳播算法進行訓練。在訓練過程中,專家模型和門控網(wǎng)絡的參數(shù)都會被調整,以最小化模型在訓練數(shù)據(jù)上的損失函數(shù)。門控網(wǎng)絡的訓練目標通常是最大化模型的整體性能,并且也可以通過額外的正則化策略來提高模型的泛化能力。
總體上,Mixture-of-Experts架構通過將多個專家模型組合在一起,并且通過門控網(wǎng)絡動態(tài)地分配權重,可以提高模型的靈活性和適應性,從而在處理復雜的輸入數(shù)據(jù)分布時取得更好的性能表現(xiàn)。MoE架構的專家可以是任何神經(jīng)網(wǎng)絡,例如:多層感知器(MLP)、卷積神經(jīng)網(wǎng)絡(CNN)等。
MoE早在1991年就問世,當時的專家模型主要用知識庫和規(guī)則引擎。隨著NLP各類神經(jīng)網(wǎng)絡算法和架構的演進,MoE架構也隨之演進。通過Grok-1的技術詳情不難看出Grok在MoE架構中依然結合了Transformer,通過將MoE組件嵌入到Transformer的每個層中,以增強每個層的表達能力。
MoE+Transformer混合架構示意圖
如右圖所示,在每個Transformer層中,可以將輸入分成多個子空間,并為每個子空間分配一個MoE組件。這些MoE組件將并行地處理各個子空間的信息,并產(chǎn)生相應的輸出。然后,將這些輸出組合起來,作為下一層Transformer的輸入。這樣,每個Transformer層都能夠從多個專家的信息中受益,并在整個模型中實現(xiàn)更強大的建模能力。每個MoE層都由作為“專家”的獨立前饋神經(jīng)網(wǎng)絡集合組成,由一個門控函數(shù)使用softmax激活函數(shù)來對這些專家的概率分布進行建模。
每個MoE層(底部塊)與Transformer層(上部塊)交錯。對于每個輸入Token,例如“roses”,門控模塊從多個專家模型中動態(tài)選擇兩個最相關的專家,這由MoE層中的藍色網(wǎng)格表示。然后,這兩位專家模型輸出的加權平均值將被傳遞到上層Transformer層。對于輸入序列中的下一個Token,將選擇兩個不同的專家系統(tǒng)。
二、為什么不用經(jīng)典Transformer?
1. 支持超大規(guī)模參數(shù)和復雜任務
MoE允許在不顯著增加計算成本的情況下擴大模型容量。MoE架構通過在處理輸入時僅激活與輸入相關的專家子集來實現(xiàn)這一點。換句話說,對于每個輸入,只有與其相關的一部分專家會被激活,而其他專家則處于非激活狀態(tài)。
由于只有部分專家被激活,MoE架構實際上只需要處理一部分模型參數(shù),而不是整個模型的參數(shù)。這使得模型的參數(shù)量得以增加,而實際的計算負載卻只增加了少量或不增加。換言之,盡管模型的容量增加了,但由于只有部分參數(shù)被激活,因此模型的計算成本并沒有顯著增加。
這種設計使得MoE架構能夠更好地利用參數(shù),以應對更復雜的任務和更大規(guī)模的數(shù)據(jù),而不會顯著增加計算成本。
2. 更好的計算效率和性能
MoE提高了計算效率,因為它可以根據(jù)輸入動態(tài)激活模型的不同部分。這意味著對于每個輸入,只有一小部分專家會被計算,從而減少了不必要的計算并提高了處理速度。研究表明,MoE架構在多個任務和基準測試中提供了優(yōu)于經(jīng)典Transformer架構的性能。通過合適的專家選擇和路由策略,MoE可以提供更豐富的數(shù)據(jù)表示和更精細的決策能力。
3. 靈活性和專業(yè)化考慮
在MoE架構中,每個“專家”都可以學習并專門處理輸入空間的不同部分。這意味著在MoE架構中,不同的專家被設計成負責處理輸入數(shù)據(jù)的不同方面或子空間,而不是一概而論地處理整個輸入。這種專業(yè)化的設計使得模型可以更靈活地適應多樣化的數(shù)據(jù)特征和復雜的任務需求。
例如:假設一個MoE架構用于自然語言處理任務。在這個模型中,可以有一個專家負責處理詞義的理解,另一個專家負責處理句法結構的分析,還有另一個專家負責處理上下文信息的推理,等等。每個專家在訓練過程中會學習到針對自己負責的那部分輸入數(shù)據(jù)的特定特征和模式,從而使得模型可以更好地理解和利用輸入數(shù)據(jù)的不同方面。
通過這種專業(yè)化的設計,MoE架構可以更好地適應多樣化的數(shù)據(jù)特征和復雜的任務需求,從而提高了模型的靈活性和泛化能力。這也是MoE架構在許多任務和基準測試中表現(xiàn)出色的原因之一。
4. 擁有天然的可擴展性和并行
MoE架構的設計允許不同專家在不同的處理單元上獨立運行。因為每個專家只處理輸入空間的一部分,所以它們之間沒有直接的依賴關系。這意味著每個專家可以在獨立的處理單元上并行地執(zhí)行,而無需等待其他專家的結果。這種天然的并行性使得MoE架構可以在并行計算環(huán)境中高效地運行。
由于MoE架構可以并行地處理輸入數(shù)據(jù),因此它在擴展到大型數(shù)據(jù)集和復雜任務時具有很強的能力。在處理大規(guī)模數(shù)據(jù)集時,可以將數(shù)據(jù)分配給多個處理單元,每個處理單元負責獨立地處理一部分數(shù)據(jù)。這樣不僅可以加快處理速度,還可以有效地利用計算資源。
MoE架構的并行計算性質使得它可以有效地利用計算資源,從而保持高效的資源利用率。通過在多個處理單元上并行地執(zhí)行專家網(wǎng)絡,MoE架構可以充分利用現(xiàn)代計算平臺的并行計算能力,實現(xiàn)高效的計算。
5. 節(jié)省成本和能耗
MoE架構使用稀疏激活的專家混合架構來擴展模型容量,同時與密集變體相比,訓練成本也大大降低。相關研究表明當有1.2萬億個參數(shù)MoE訓練架構,參數(shù)量大約是GPT-3的7倍,但只消耗了訓練GPT-3能耗的1/3,并且需要一半的計算觸發(fā)器來進行推理,同時在29個NLP任務中仍然實現(xiàn)了更好的零次、一次和少次學習性能。
當然,MoE也有一個問題,就是靜態(tài)內存占用大。盡管使用稀疏門控網(wǎng)絡可以降低計算成本,但參數(shù)總數(shù)會隨著專家數(shù)量的增加而線性或亞線性增加。增加專家的數(shù)量需要保留大量的硬件設備。因此,節(jié)省了動態(tài)(已使用)功率,而不節(jié)省靜態(tài)(保留)功率。需要節(jié)能技術擁有在不使用時硬件設備時,置于低功率狀態(tài)的能力,這樣有助于降低保留能耗。
三、最后
分治原理是貫穿應用數(shù)學和計算機科學始終的一個具有廣泛適用性的原理。通過將復雜問題分解為更簡單的子問題,并通過組合這些子問題的解決方案,我們可以更有效地解決復雜問題。
Grok-1采用Mixture-of-Experts(MoE)架構,也是出于類似的分治原理。
這種架構使得低成本處理超大參數(shù)量的大型語言模型(LLM)訓練成為可能,通過將模型劃分為多個專家,并對每個專家進行獨立處理,最終將它們的輸出進行組合,從而達到更高效和優(yōu)雅的算法結構。
這種分治的方法為解決復雜的計算問題提供了一種有效的方式,為未來的研究和應用提供了新的思路和可能性。
參考文獻
- Jacobs R A, Jordan M I, Nowlan S J, et al. Adaptive mixtures of local experts[J]. Neural computation, 1991, 3(1): 79-87.
- Jordan M I, Jacobs R A. Hierarchical mixtures of experts and the EM algorithm[J]. Neural computation, 1994, 6(2): 181-214.
- Yuksel S E, Wilson J N, Gader P D. Twenty years of mixture of experts[J]. IEEE transactions on neural networks and learning systems, 2012, 23(8): 1177-1193.
- Eigen D, Ranzato M A, Sutskever I. Learning factored representations in a deep mixture of experts[J]. arXiv preprint arXiv:1312.4314, 2013.
- Masoudnia S, Ebrahimpour R. Mixture of experts: a literature survey[J]. Artificial Intelligence Review, 2014, 42: 275-293.
- Shazeer N, Mirhoseini A, Maziarz K, et al. Outrageously large neural networks: The sparsely-gated mixture-of-experts layer[J]. arXiv preprint arXiv:1701.06538, 2017.
- Riquelme C, Puigcerver J, Mustafa B, et al. Scaling vision with sparse mixture of experts[J]. Advances in Neural Information Processing Systems, 2021, 34: 8583-8595.
- Zhou Y, Lei T, Liu H, et al. Mixture-of-experts with expert choice routing[J]. Advances in Neural Information Processing Systems, 2022, 35: 7103-7114.
- Du N, Huang Y, Dai A M, et al. Glam: Efficient scaling of language models with mixture-of-experts[C]//International Conference on Machine Learning. PMLR, 2022: 5547-5569.
- Rajbhandari S, Li C, Yao Z, et al. Deepspeed-moe: Advancing mixture-of-experts inference and training to power next-generation ai scale[C]//International conference on machine learning. PMLR, 2022: 18332-18346.
專欄作家
黃銳,人人都是產(chǎn)品經(jīng)理專欄作家。高級系統(tǒng)架構設計師、資深產(chǎn)品經(jīng)理、多家大型互聯(lián)網(wǎng)公司顧問,金融機構、高??妥芯繂T。主要關注新零售、工業(yè)互聯(lián)網(wǎng)、金融科技和區(qū)塊鏈行業(yè)應用版塊,擅長產(chǎn)品或系統(tǒng)整體性設計和規(guī)劃。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉載。
題圖來自Unsplash,基于 CC0 協(xié)議。
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發(fā)揮!