换个角度想
MoE 像一家大医院的分诊台:医院有几十个科室,但每位病人进门后,分诊台只把他派给两三个对口的科室,其他科室照常待命。医院规模可以很大,每位病人需要动用的医生却不多。
术语 · AI
MoE
Mixture of Experts。把模型拆成很多组「专家」,每个词元只交给其中几组来算。总参数很大,每次真正参与计算的只有一小部分,所以更省算力。
模型很大,每次只叫醒其中几个专家
MoE 像一家大医院的分诊台:医院有几十个科室,但每位病人进门后,分诊台只把他派给两三个对口的科室,其他科室照常待命。医院规模可以很大,每位病人需要动用的医生却不多。
总参数700 亿,是一个整体
专家没有拆分
总参数6710 亿
专家每层 256 组,外加 1 组人人共用
词元「猫」进入这一层
不需要挑选,整层参数都要参与
词元「猫」进入这一层
路由器从 256 组里挑出最合适的 8 组
模型的一部分被拆成很多组专家
模型介绍里写着「671B 总参数、37B 激活」,说的就是 MoE:前者看知识容量,后者看计算开销。
每个词元只算一小部分参数,同等规模下推理更省,这是不少模型 API 价格低的原因之一。
想在自己机器上跑 MoE 模型时,显存和内存要按总参数准备,不能只看激活参数。
一个 MoE 模型标着「总参数 1000 亿,激活参数 100 亿」。有人说它在电脑上跑起来跟 100 亿参数的模型一样轻松,对吗?
不对。激活参数少,说明每个词元的计算量小、生成速度快;但哪个专家会被选中事先不知道,所有专家都得提前装进显存或内存。所以占用的内存要按 1000 亿参数来算。
「专家」只是个比喻,不是数学专家、法律专家那种按学科分工。哪个专家处理哪类词元,是模型在训练中自己摸索出来的,往往人也说不清楚。另外,激活参数少只省计算,不省内存。