一句话定义
Dense 模型对每个 token 都使用全部参数;Sparse 模型(常见实现是 MoE)只激活少数专家,用更大的总参数换更低的单 token 计算。Dense 的显存和计算随参数量同步增长;Sparse 把两者解耦。
为什么需要区分
继续堆参数能提升容量,但 Dense 模型每增加一份参数,每个 token 的计算也增加。Sparse 把“总参数”和“激活参数”拆开:总参数可以很大,单次前向只算 top-k 个专家。
怎么工作
- Dense:每个 token 都经过同一个 FFN,激活参数 = 总参数。
- Sparse / MoE:Router 为每个 token 选 top-k 个专家,只计算被选中的专家,再按权重求和。
- 总参数包含所有专家;激活参数只算本次用到的专家和共享层。
关键取舍
- Dense 简单、延迟稳定、工程成熟;Sparse 容量大,但需要路由、负载均衡和专家通信。
- 显存看总参数,计算看激活参数;两者不能混为一谈。
- Sparse 的质量依赖 Router 和专家训练;路由塌缩会浪费容量。
- Sparse 的收益取决于 batch、序列长度和专家并行效率。
- 单机小模型通常不值得引入 Sparse 的复杂度。
常见误区
- Sparse 不是“更小的模型”:总参数可能更大。
- 宣传的参数量通常是总参数,不是单 token 激活参数。
- Dense 没有过时:低延迟、简单部署场景仍然常用。
用在哪里
- Dense:中小模型、低延迟、部署简单的场景。
- Sparse:超大模型、多专家分工、显存和互联带宽充足的集群。
- 选型时同时看总参数、激活参数、吞吐和延迟。