“ 卷的太快了,有小伙伴把文章发群里,第一感觉就像是,multi head attention 变成了multi head mlp,又变成了grouped head mlp。看完文章之后,感觉也差不多。这种改结构的时候应该就是拼卡拼速度了,比如为什么每个专家的结构必须一模一样呢?是不是通用的专家可以大一点。。随便改改能出效果就可以挂文章了
https://arxiv.org/pdf/2401.06066.pdf
https://github.com/deepseek-ai/DeepSeek-MoE
这篇文章介绍了一种名为DeepSeekMoE的混合专家(Mixture-of-Experts, MoE)架构,旨在实现专家的终极专业化。这种架构通过两种主要策略来提高专家的专业化程度:
- 细粒度专家分割(Fine-Grained Expert Segmentation):
- 保持专家参数数量不变,将每个专家的中间隐藏维度分割成更小的专家(例如,将一个专家分割成多个小专家,每个小专家的参数量是原专家的1/𝑖倍)。
- 相应地,激活更多的细粒度专家(例如,激活𝑖倍的小专家),以保持相同的计算成本。
- 这种细粒度分割允许更精细地分解和学习不同的知识到不同的专家中,每个专家保持更高的专业化水平。同时,激活专家的组合更加灵活,有助于更准确和针对性的知识获取。
- 共享专家隔离(Shared Expert Isolation):
- 将一部分专家隔离出来作为共享专家,这些共享专家总是被激活,旨在捕获和整合不同上下文中的共同知识。
- 通过将共同知识压缩到这些共享专家中,可以减轻其他路由专家之间的参数冗余,提高参数效率,并确保每个路由专家专注于其独特的方面。
DeepSeekMoE架构的这两个策略共同工作,以训练一个参数效率高的MoE语言模型,其中每个专家都高度专业化。文章从2B参数规模开始验证DeepSeekMoE架构的优势,并在12个zero/few shot基准测试上进行评估,这些测试涵盖了多种任务。实验结果表明,DeepSeekMoE 2B在性能上显著优于GShard 2B,并接近GShard 2.9B,后者的专家参数和计算量是DeepSeekMoE的1.5倍。此外,DeepSeekMoE 2B的性能几乎接近其密集对应模型,后者具有相同数量的总参数,这为MoE模型设定了严格的上限。
文章还展示了如何将DeepSeekMoE扩展到16B参数,并在2T tokens的大型语料库上训练DeepSeekMoE 16B。评估结果显示,DeepSeekMoE 16B在大约40%的计算量下,实现了与DeepSeek 7B和LLaMA2 7B相当的性能。此外,作者还进行了初步尝试将DeepSeekMoE扩展到145B参数,实验结果一致验证了其相对于GShard架构的显著优势,并显示出与DeepSeek 67B相当的性能,仅使用了28.5%(甚至可能是18.2%)的计算量。
最后,文章还介绍了如何在DeepSeekMoE 16B上进行监督微调(SFT),将其转化为聊天模型,并展示了DeepSeekMoE Chat 16B在聊天设置中与DeepSeek Chat 7B和LLaMA2 SFT 7B相当的性能。