看到模型名后面挂着个 B,很多人第一反应是「数字越大越强」,接着又想搞清楚这个数到底怎么来的。真去翻权重文件,发现同一个模型在论文、官网和下载页上标的数字还不一样,就更糊涂了。这篇不讲训练,只讲这个计数口径:B 指的是哪部分,层和维度怎么乘出来,MoE 为什么容易算错。看完你至少能自己拿模型配置估一遍。
看到模型名后面挂着个 B,很多人第一反应是「数字越大越强」,接着又想搞清楚这个数到底怎么来的。真去翻权重文件,发现同一个模型在论文、官网和下载页上标的数字还不一样,就更糊涂了。这篇不讲训练,只讲这个计数口径:B 指的是哪部分,层和维度怎么乘出来,MoE 为什么容易算错。
看完你至少能自己拿模型配置估一遍,不用全靠背别人给的数字。顺手也把「什么情况下这个数字不能拿来横向比」说清楚,免得下次看到两个模型一个标大一个标小,就直接下了结论。
B 就是个数量级单位,先别急着往能力上联想
B 是 billion 的缩写,说白了就是把权重个数凑成「十亿」这个量级来说。它既不是字节,也不是显存占用,更不是训练用了多少数据。一件容易搞混的事是:同一个模型被标成不同的 B,经常只是统计范围不一样——有人只数了主干,有人把词表嵌入和输出层也算了进去,数字自然差一截。
所以判断一个 B 数字能不能横向比,第一步不是看大小,而是看两边口径齐不齐。口径不齐的数字放一块,比出来的东西没有意义。去站内的模型资料库翻配置页时,顺手看一眼它标的是总参数还是别的口径,这习惯能省掉很多误判。
这个数字到底从哪来:把几类权重矩阵加起来
参数量的算法其实不神秘,就是逐层数矩阵。每层里有注意力那几组投影矩阵,还有前面的前馈网络矩阵,每个矩阵按「输入维度 × 输出维度」算出个数,再一层层累加。零碎的还有位置编码、归一化层的缩放参数,占得很少,正规统计一般算进去,手算时可以先忽略、最后回头对一遍。
真正拉开差距的是词表嵌入和最后的输出投影。几十万词表乘上隐藏维度,一乘就是几亿个参数。这也是各家常吵架的地方:算不算词表,直接决定标出来的数字差好几个百分点。看别人给的 B 时,先问一句有没有把词表算进去。
| 权重类别 | 怎么算 | 常见争议 |
|---|---|---|
| 注意力投影矩阵 | 输入维度乘输出维度,每层累加 | 一般无争议 |
| 前馈网络矩阵 | 两层线性层的尺寸相乘再累加 | 一般无争议 |
| 词表嵌入 | 词表大小乘隐藏维度 | 算不算进总数,各家不一 |
| 输出投影 | 词表大小乘隐藏维度 | 和嵌入是否共享,影响计数 |
| 归一化与位置参数 | 按维度个数算 | 量很小,估算是可忽略 |
MoE 模型最容易算错,两个数字都对但含义不同
MoE 这类模型会出现两个数:总参数和激活参数。总参数把所有专家加起来,单次推理真正跑到的只是其中一部分,所以你会看到一个大的总数配一个小的激活数。两个数都对,但它们说的不是一回事。
比较两个模型时,如果一边说总数一边说激活数,等于拿两个不同东西在比。买卡或者算显存,看的是要加载进显存的权重总量;看推理成本和速度,看的是激活量。先把口径问到同一侧,比什么都重要。
自己估一遍,比背别人的数字靠谱
与其记别人标了多少 B,不如自己拿配置估一次。误差一般能控制在一成以内,足够判断一个数字靠不靠谱。下面这个顺序照着走就行。
- 拿配置到站内模型目录页找层数、隐藏维度、词表大小这几个字段,记下来。
- 算单层把注意力几组投影和前馈矩阵按输入输出维度各算一次,加起来得到单层参数量。
- 乘层数再补词表单层乘层数,加上词表嵌入和输出投影(注意是否共享),得到估算值。
- 对一遍标称值估出来和标称值差太多,就查是不是词表算重了、多模态那部分塔算了或漏了。
想做更细的显存和部署测算,可以把参数量、量化位数、上下文长度一起喂给站内的部署测算工具,比单看一个 B 有参考价值。具体数字到 /tools/speed-test 这类测算页面对当时的数字核对,别拿别处的旧数当准。
知道怎么算之后,这个数字该怎么用
B 只说明规模,不说明训得好不好。数据质量、训练轮次、后期对齐同样决定表现,拿 B 直接推能力很容易翻车。一个常见的失败动作是:只看标称参数挑模型,部署时才发现量化后的体积塞不进自己的卡,又回头换方案。
- 显存够不够、能不能本地跑,看的是量化后的体积和你的卡,不是原始参数量本身
- 选型先按任务定一个能力下限,再用 B 和量化档位倒推硬件,顺序别反
- 两个模型标称 B 差很多但激活量接近时,实际推理开销可能没差那么远
- 遇到只给一个总数、不给激活数的 MoE 模型,先当作口径不明处理
这套判断在纯文本模型上基本通用。不太适用的情况是:多模态模型里视觉塔、音频塔那部分算不算参数量,各家写法不一样,这时候单看 B 横向比意义很有限,最好回到配置页逐项对。
下一步想验证一个模型标称的 B 靠不靠谱,拿它的配置页对着估一遍最快;站内模型资料库和各家中转站的标注放在一起看,口径差异一眼就能看出来。→常见问题
模型参数量里的 B 是 billion 还是 byte?
是 billion,十亿个参数。参数指的就是模型里那些可学习的数值,跟文件体积、显存占用不是一回事。一个标称参数量不小的模型,量化压缩之后实际占的空间会小很多,所以别把 B 当成下载体积来估。
为什么同一个模型,论文和下载页上的参数量对不上?
大概率是统计范围不同。有的只算主干网络,有的把词表嵌入和输出层也算进去了;MoE 架构还会出现总参数和激活参数两个数。看到不一致,先确认两边数的是不是同一部分,再决定要不要比。
参数量越大,模型就一定越聪明吗?
不成立。参数量只代表容量上限,实际表现还取决于训练数据、训练是否充分、后训练怎么调。同样规模的模型之间差距可以很大,跨规模比更是容易出现小模型在某些任务上反超的情况。选型还是得看具体任务上的实测。