去年开始MOE的模型特别火。,我们熟悉的DeepSeek也是MOE架构的,那到底什么叫MOE呢?如果简单理解的话,MOE其实类似于让专人做专事。所以核心思想就是我们有很多的模型,然后呢让我们的输入选择一个合适的模型,然后呢得到相应的输出。我来举个例子,比如我们有一个患者,然后他去了医院,然后说了一下自己的病情。然后呢,导诊的医生告诉他跟他病情相应的一些科室,然后根据个人的病情导诊说他可能要去看呼吸科。因为是感冒,然后根据他的症状也有可能跟感染相关,所以他也建议去看感染科。那这里的呼吸科医生,我们可以把它看作是一个expert,叫专家。那类似的感染科医生呢,也可以把它看作是一个专家。那假如看完了医生,那最终可能有一个诊断的结果以及治疗方案。那这个流程里导诊是用于去匹配最适合的专家的。因为在一个医院里面可能有几十个科室,所以在这么多科室里面跟它相关的可能就那么几个科室。然后最终我们可以得到一个诊断的结果。那么下面把这个流程呢我们映射到MOE的流程。那跟patient对应的在这里是token。就是每一个token进来之后,我需要做一个处理,处理完之后呢,我们会输出一个结果叫output。所以在这里一个token它首先进入一个所谓的叫导诊系统,那对应的导诊系统在这里我们把它叫router。然后这个router会决定我这个token适合要去找哪个expert。在MOE模型里面呢,一般我们会有不同的模块,这是我们的第一个模块。第二个、第三个可能很多。然后这个router它会根据当前的token会去从这么多的模块里面会选择可能我们几个2到3个模块进行触发。所以对于这个token来讲,它会进入其中的可能两个模块。那剩下的模块呢对这个token来讲,它是不起到作用的,是没有被激活的。然后最后这两个模块的结果,我们会把它合在一起,最后给一个输出。所以这里的router作用就是来选择最合适的expert。每个模块我们可以把它看作是一个expert,或者我们把它叫model。如果我们形象的描述的话,可能有token,像数字类的那第二个expert它可能会擅长。如果是跟情感类相关的token呢,有可能第三个比较擅长。而且结果也证明出,通过学习这类的多个expert,其实我们往往让大模型的效果会更加好一些。但相反训练这类的模型,其实它的难度也是比较大的那为什么呢?那这里就涉及到我们在设计这套系统中的一些原则。那这里面有几个原则,第一个我们把它叫做sparse,叫稀疏。那什么意思呢?当一个token过来,就是我的输入过来,我的router,它只能触发其中的少量的expert。就是有点像我一个患者进来,根据他的病情,适合他的科室可能就那么几个。我不可能让他去所有的科室见所有的医生,这可能不太现实。所以对于一个token来讲,通过router我可能只想激活其中的2到3个expert。那剩下的expert呢跟这个token是没有关系的那剩下的expert它可以处理其他的token,所以这个叫sparse,叫稀疏。然后第二个diverse就是多样化。我们通过学习呢希望得到的expert各有各的专长,而不是所有的expert可能能力都是差不多的。如果他们的能力差不多,那其实等价于我在训练一个模型。所以如何通过训练的过程来得出能力不一样的expert,这个其实在训练里面也是一个比较大的挑战。比如我们在工作当中去成立一个团队,我们不希望这个团队里的所有的成员能力都是一样的,而是不一样的能力。这样我们采用最大化团队的效率。然后第三个,合理的分配。因为我们也不希望比如说一个token进来,然后通过router呢,每次可能选一个 模型,比如说就是他来负责,就所有的请求呢可能百分之七八十都由他来负责,那剩下的expert就没事可做了。所以理想情况下呢,比如说一个token来讲,这次呢归他们俩管,那下次呢可能归其他俩管,承担的职责可能是差不多的。所以如何通过训练保证这些特性,是在MOE的大模型训练过程里面必须要考虑的点。而且这种思想其实并不是一个很新的思想。比如说在传统的AI里面呢,我们有一个分支叫集成学习。虽然集成学习跟这种学习会有一些区别,但是核心的理念是差不多的,就是让多个expert共同去做决策。关于本视频相关的技术文章,我放在了评论区,所以感兴趣的朋友们可以打开看一下。

视频信息