先这样答
结论是,LLaMA-2 7B 的参数量约为 6.7B。面试时可以按 Transformer 的层结构估算,不需要逐项算到最后一位。它有 32 层,hidden size 是 4096。
每层先算注意力部分。Q、K、V、O 一共四个矩阵,所以参数量是 4 × 4096²。再算 FFN。SwiGLU 比普通 FFN 多一门,因此有三组矩阵,参数量是 3 × 4096 × 11008。每层还包括两处 RMSNorm,它们的参数量相对前两项很小。总量可以写成:32 ×(4 × 4096² + 3 × 4096 × 11008 + 两处 RMSNorm)再加上其他结构参数。估算时可以简化成 12 × 层数 × hidden²,因为 FFN 是主要部分。代入 32 层和 4096 hidden 后,量级就是 6.7B。我的计算重点是先拆结构,再按层累加,最后给出量级。
面试官会怎么追问
-
「为什么 FFN 要算三组矩阵?」 SwiGLU 使用两路输入投影和一路输出投影,所以需要三组矩阵。每组矩阵的尺寸按 4096 和 11008 计算。这个部分通常比注意力矩阵占更多参数。
-
「为什么可以用 12 × 层数 × hidden² 估算?」 注意力部分约等于 4 × hidden²。FFN 部分约等于 3 × hidden × 11008。因为 11008 接近 hidden 的更大倍数,FFN 换算后约占 8 × hidden²。两部分相加后约为 12 × hidden²,再乘层数即可。
-
「RMSNorm 和其他参数要不要算进去?」 要算,但可以单独列出。两处 RMSNorm 的参数量相对矩阵项很小,对最终量级影响有限。面试中先给出主体公式和 6.7B 结论,再说明这些小项没有展开逐项计算。
回答的坑
- 不要把 SwiGLU 当成两组矩阵,否则会少算一组 FFN 参数。
- 不要只计算单层参数,最后还要乘以 32 层并说明其余结构参数的影响。
同系列的题
这家公司的面经实录