术语 · AI

混合专家

MoE

Mixture of Experts。把模型拆成很多组「专家」,每个词元只交给其中几组来算。总参数很大,每次真正参与计算的只有一小部分,所以更省算力。

模型很大,每次只叫醒其中几个专家

每个词元都要过这一关
省的是计算,不是内存
MoE 模型里有一个「路由器」,给每个词元挑出最合适的几个专家来计算,其余专家这一轮不参与。总参数决定它能装下多少知识,激活参数决定每次计算要花多少力气。

换个角度想

MoE 像一家大医院的分诊台:医院有几十个科室,但每位病人进门后,分诊台只把他派给两三个对口的科室,其他科室照常待命。医院规模可以很大,每位病人需要动用的医生却不多。

参数更多,就一定算得更慢吗?

  1. 模型结构

    总参数700 亿,是一个整体

    专家没有拆分

    模型结构

    总参数6710 亿

    专家每层 256 组,外加 1 组人人共用

  2. 词元「猫」进入这一层

    不需要挑选,整层参数都要参与

    词元「猫」进入这一层

    路由器从 256 组里挑出最合适的 8 组

  3. 每个词元都要算满 700 亿参数
    每个词元只算约 370 亿参数,其余专家这一轮休息
  4. 规模受限想装更多知识,每次计算就跟着变贵参数翻倍,每个词元的计算量也翻倍
    大而省知识容量按 6710 亿算,计算量按 370 亿算代价:6710 亿参数仍要全部装进内存

模型的一部分被拆成很多组专家

什么时候会遇到它

  1. 看懂参数标注

    模型介绍里写着「671B 总参数、37B 激活」,说的就是 MoE:前者看知识容量,后者看计算开销。

  2. 为什么便宜

    每个词元只算一小部分参数,同等规模下推理更省,这是不少模型 API 价格低的原因之一。

  3. 本地部署要算内存

    想在自己机器上跑 MoE 模型时,显存和内存要按总参数准备,不能只看激活参数。

想一想

一个 MoE 模型标着「总参数 1000 亿,激活参数 100 亿」。有人说它在电脑上跑起来跟 100 亿参数的模型一样轻松,对吗?

看答案

不对。激活参数少,说明每个词元的计算量小、生成速度快;但哪个专家会被选中事先不知道,所有专家都得提前装进显存或内存。所以占用的内存要按 1000 亿参数来算。

最容易踩的坑

「专家」只是个比喻,不是数学专家、法律专家那种按学科分工。哪个专家处理哪类词元,是模型在训练中自己摸索出来的,往往人也说不清楚。另外,激活参数少只省计算,不省内存。

⌘K搜索知识库

最近收录

正在载入知识索引…