2024-06-03 18:45:10
2024年6月3日,昆侖萬維宣布開源2000億稀疏大模型Skywork-MoE,性能強勁,同時推理成本更低。Skywork-MoE基于之前昆侖萬維開源的Skywork-13B模型中間checkpoint擴展而來,是首個完整將MoE Upcycling技術應用并落地的開源千億MoE大模型,也是首個支持用單臺4090服務器推理的開源千億MoE大模型。
Skywork-MoE的模型權重、技術報告完全開源,免費商用,無需申請:
•模型權重下載:
https://huggingface.co/Skywork/Skywork-MoE-base
https://huggingface.co/Skywork/Skywork-MoE-Base-FP8
•模型開源倉庫:https://github.com/SkyworkAI/Skywork-MoE
•模型技術報告:https://github.com/SkyworkAI/Skywork-MoE/blob/main/skywork-moe-tech-report.pdf
•模型推理代碼:(支持8x4090服務器上8 bit量化加載推理)https://github.com/SkyworkAI/vllm
本次開源的Skywork-MoE模型隸屬于天工3.0的研發模型系列,是其中的中檔大小模型(Skywork-MoE-Medium),模型的總參數量為146B,激活參數量22B,共有16個Expert,每個Expert大小為13B,每次激活其中的2個Expert。
天工3.0還訓練了75B(Skywork-MoE-Small)和400B(Skywork-MoE-Large)兩檔MoE模型,并不在此次開源之列。
基于目前各大主流模型評測榜單評測了Skywork-MoE,在相同的激活參數量20B(推理計算量)下,Skywork-MoE能力在行業前列,接近70B的Dense模型。使得模型的推理成本有近3倍的下降。同時Skywork-MoE的總參數大小比DeepSeekV2的總參數大小要小1/3,用更小的參數規模做到了相近的能力。
為了解決MoE模型訓練困難,泛化性能差的問題,相較于Mixtral-MoE,Skywork-MoE設計了兩種訓練優化算法:
1.Gating Logits歸一化操作
昆侖萬維在Gating Layer的token分發邏輯處新增了一個normalization操作,使得Gating Layer的參數學習更加趨向于被選中的top-2 experts,增加MoE模型對于top-2的置信度:
2.自適應的Aux Loss
有別于傳統的固定系數(固定超參)的aux loss,在MoE訓練的不同階段讓模型自適應地選擇合適的aux loss超參系數,從而讓Drop Token Rate保持在合適的區間內,既能做到expert分發的平衡,又能讓expert學習具備差異化,從而提升模型整體的性能和泛化水平。在MoE訓練的前期,由于參數學習不到位,導致Drop Token Rate太高(token分布差異太大),此時需要較大的aux loss幫助token load balance;在MoE訓練的后期,昆侖萬維希望Expert之間仍保證一定的區分度,避免Gating傾向為隨機分發Token,因此需要較低的aux loss降低糾偏。
如何對MoE模型高效地進行大規模分布式訓練是一個有難度的挑戰,目前社區還沒有一個最佳實踐。Skywork-MoE提出了兩個重要的并行優化設計,從而在千卡集群上實現了MFU 38%的訓練吞吐,其中MFU以22B的激活參數計算理論計算量。
1.Expert Data Parallel
區別于Megatron-LM社區已有的EP(Expert Parallel)和ETP(Expert Tensor Parallel)設計,昆侖萬維提出了一種稱之為Expert Data Parallel的并行設計方案,這種并行方案可以在Expert數量較小時仍能高效地切分模型,對Expert引入的all2all通信也可以最大程度地優化和掩蓋。相較于EP對GPU數量的限制和ETP在千卡集群上的低效,EDP可以較好地解決大規模分布式訓練MoE的并行痛點,同時EDP的設計簡單、魯棒、易擴展,可以較快地實現和驗證。
一個最簡單的EDP的例子,兩卡情況下TP=2,EP=2,其中Attention部分采用Tensor Parallel,Expert部分采用Expert Parallel
2.非均勻切分流水并行
由于first stage的Embedding計算和last stage的Loss計算,以及Pipeline Buffer的存在,流水并行下均勻切分Layer時的各stage計算負載和顯存負載均有較明顯的不均衡情況。昆侖萬維提出了非均勻的流水并行切分和重計算Layer分配方式,使得總體的計算/顯存負載更均衡,約有10%的端到端訓練吞吐提升。
比較均勻切分和非均勻切分下的流水并行氣泡:對于一個24層Layer的LLM,(a)是均勻切分成4個stage,每個stage的layer數量是:[6,6,6,6].(b)是經過優化后的非均勻切分方式,切成5個stage,每個stage的layer數量是:[5,5,5,5,4],在中間流水打滿的階段,非均勻切分的氣泡更低。
此外,Skywork-MoE還通過一系列基于Scaling Laws的實驗,探究哪些約束會影響Upcycling和From Scratch訓練MoE模型的好壞。
一個可以遵循的經驗規則是:如果訓練MoE模型的FLOPs是訓練Dense模型的2倍以上,那么選擇from Scratch訓練MoE會更好,否則的話,選擇Upcycling訓練MoE可以明顯減少訓練成本。
4090推理
Skywork-MoE是目前能在8x4090服務器上推理的最大的開源MoE模型。8x4090服務器一共有192GB的GPU顯存,在FP8量化下(weight占用146GB),使用昆侖萬維首創的非均勻Tensor Parallel并行推理方式,Skywork-MoE可以在合適的batch size內達到2200 tokens/s的吞吐。天工團隊完整開源了相關的推理框架代碼和安裝環境,詳情參見:https://github.com/SkyworkAI/Skywork-MoE
希望本次開源的Skywork-MoE模型、技術報告和相關的實驗結果可以給開源社區貢獻更多的MoE訓練經驗和Know-how,包括模型結構、超參選擇、訓練技巧、訓練推理加速等各方面,探索用更低的訓練推理成本訓更大更強的模型,在通往AGI的道路上貢獻一點力量。
特別提醒:如果我們使用了您的圖片,請作者與本站聯系索取稿酬。如您不希望作品出現在本站,可聯系我們要求撤下您的作品。
歡迎關注每日經濟新聞APP