在大型语言模型(LLM)中,模型参数量的计算主要基于 Transformer架构的组成模块。以下是详细计算步骤和示例:


1. 核心模块的参数量计算

a. 自注意力层(Self-Attention)

  • 每个注意力头的参数:由查询(Q)、键(K)、值(V)三个矩阵和一个输出矩阵组成。
  • 输入维度:d_model(嵌入维度)
  • 输出维度:d_model
  • 参数量3 × d_model²(Q/K/V) + d_model²(输出矩阵) = 4d_model²

b. 前馈神经网络(Feed-Forward Network, FFN)

  • 包含两个线性层,中间维度通常为 4 × d_model(如GPT、BERT)。
  • 第一层:d_model → 4d_model → 参数量:d_model × 4d_model = 4d_model²
  • 第二层:4d_model → d_model → 参数量:4d_model × d_model = 4d_model²
  • 总计4d_model² + 4d_model² = **8d_model²**

c. 层归一化(LayerNorm)

  • 每个Transformer块包含2个LayerNorm(分别在自注意力和FFN后)。
  • 参数量2 × 2d_model(缩放因子和偏置) = 4d_model

2. 单层Transformer块的参数量

将上述三部分相加:

单层参数量 = 自注意力 + FFN + LayerNorm  
            = 4d_model² + 8d_model² + 4d_model  
            ≈ 12d_model²(忽略偏置等小项)

3. 整体模型参数量的计算

  • Transformer层数(L):模型的深度。
  • 词嵌入(Embedding):词汇表大小 V × d_model
  • 位置嵌入(可选):若使用可学习的位置编码,需加 max_seq_len × d_model

总参数量公式

总参数量 ≈ 12Ld_model² + Vd_model + (max_seq_len × d_model)


4. 示例:GPT-3 175B的参数计算

  • 已知参数d_model=12288L=96V=50257max_seq_len=2048
  • 计算

  • Transformer块参数量
    12 × 96 × 12288² ≈ 173.9B

  • 词嵌入参数量
    50257 × 12288 ≈ 0.62B
  • 位置嵌入参数量
    2048 × 12288 ≈ 0.025B
  • 总计
    173.9B + 0.62B + 0.025B ≈ 175B

5. 简化总结

  • 核心参数来源:Transformer块的矩阵乘法(占比超95%)。
  • 关键影响因子d_model(平方级增长)和层数 L
  • 小技巧:直接估算时,可用 12Ld_model² 快速计算主体参数量。